论坛首页 入门技术论坛

关于用spring AOP实现日志模块,拿session的问题?

浏览 7804 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-10-16   最后修改:2009-02-17
接触spring AOP没多久,现在通过用aop实现日志模块时碰到一个问题,我是通过aop拦截器来拦截action调用的一个业务层方法,然后在这个拦截器中做日志处理,日志很明显需要三个方面的信息,当前用户信息(存在httpSession中),当前模块信息,操作结果,现在最大的问题是,第一个用户信息无法从session中拿到,因为spring aop是一个普通的方法与servletContext没有任何关系(据我所了解),在拦截器中,我想拿到当前的httpSession中的User对象,而不是通过传参的方式,应该怎么做?!!!!
   发表时间:2007-10-21  
我也碰到类似的问题,如果我的Action实现SessionAware接口,则无法实现aop的方法拦截,报错找不到代理方法。但是如果不实现SessionAware接口,调用ActionContext.getContext().getSession()返回为null,不知道该怎么解决,真是头疼啊。
0 请登录后投票
   发表时间:2007-10-21  
用类似OpenSessionInView管理Hibernate Session的方式。定义一个Filter,将HttpSession中的内容存到ThreadLocal中,然后在其他层次中取。
0 请登录后投票
   发表时间:2008-02-15  
用Filter具体怎么个实现方法啊?
存到ThreadLocal是值还是引用?
0 请登录后投票
   发表时间:2008-02-18  
设置一个初始化的Servlet,如(InitializtionServlet),在init方法中servletContext变量,存到一个全局位置.

做一个接口ISessionHandler,其中有方法getAttribute(name),也就可以了.

User user = (User)session.getAttribute("user");

一切ok.
0 请登录后投票
   发表时间:2008-02-18  
也许这个帖子对你有所帮助
http://www.iteye.com/topic/156378
0 请登录后投票
   发表时间:2008-02-24  
我想可以在拦截器中利用反射得到被调用业务方法的对象,然后想法取得session
0 请登录后投票
   发表时间:2008-02-26  
最好的办法还是使用threadlocal,简单实用。
0 请登录后投票
   发表时间:2008-03-29  
acegi 有个工具类···  可以在逻辑层取出你想要的所有东西···
  你可以去看下· 
                
0 请登录后投票
   发表时间:2008-08-28  
这个贴也评为新手贴?真的是想不通
真想看看高手贴是什么样的
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics