做业务日志,通过AOP对Service层的一些操作进行拦截,并把相关操作写入数据库的日志表中但在此日志表中,有个"操作用户"的字段
@Aspect
public class MyInterceptor {
@Before("execution(* com.aa.*.service.impl.*.*(..))")
public void doBefore(){
//...
}
但在这里,怎么才能得到当前的用户这个对象呢?
@Aspect
public class MyInterceptor {
@Before("execution(* com.aa.*.service.impl.*.*(..))")
public void doBefore(){
//...
}
但在这里,怎么才能得到当前的用户这个对象呢?
如果是用户的话可以直接把UID放在SESSION里
而且誰說攔截不到SESSION和REQUEST?
public class MyInterceptor { @Resource private LogDao logDao; @Before("execution(* com.aa.*.service.impl.*.*(..))")
public void doBefore(){
Log log = new Log();
log.setDesc("...");
logDao.add(log, userId);
//...
}
现在主要是当前User里面的userId无法得到
1、在web.xml中增加一个Filter;
2、在该Filter中将HttpSession置入一个ThreadLocal的对象中;
3、在拦截器中get这个ThreadLocal对象;
我也遇到这个问题,正在寻求解决办法...