论坛首页 Web前端技术论坛

如何在spring的容器中的一个普通bean获取request对象

浏览 8690 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-12-05  
基本情况是这样的: 需求是要在原来的系统对所有的操作增加日志记录功能 我用AOP可以实现对Spring配置的增删改方法进行拦截即可以看到操作的内容 另外我发现我得不到操作对象(比如谁做了这次增加内容的操作),也就是操作的对象保存在session里面 所有我想是不是有一个方法 在spring配置的一个普通bean里面 同时获得request对象 (这样能获得session对象 从而获得操作人)
   发表时间:2011-12-05  
ThreadLocal,不懂的话参看企业设计模式中关于会话模式的章节
0 请登录后投票
   发表时间:2011-12-06  
多谢了
原来spring有这样的实现
http://forum.springsource.org/showthread.php?59372-Accessing-HttpServletRequest-inside-a-request-scoped-bean
原理应该还是用threadlocal
0 请登录后投票
   发表时间:2011-12-06  
由于是使用spring mvc来做项目,因此脱离了HttpServletRequest作为参数,不能够直接使用request,要想使用request可以使用下面的方法:

在web点xml中配置一个监听

view plainprint?
<listener> 
        <listener-class> 
            org.springframework.web.context.request.RequestContextListener 
        </listener-class> 
</listener> 
之后就可以在程序使用了


view plainprint?
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(); 
0 请登录后投票
   发表时间:2011-12-10  
 
0 请登录后投票
   发表时间:2011-12-15  

@RequestMapping(value = "/reg.do", method = RequestMethod.GET)
public ModelAndView input(HttpServletRequest request, HttpServletResponse response,ModelAndView view) {
0 请登录后投票
   发表时间:2011-12-16  
ActionContext context  = ActionContext.getContext();
(HttpServletRequest) context.get(ServletActionContext.HTTP_REQUEST);
0 请登录后投票
   发表时间:2011-12-16  
ttling 写道
ActionContext context  = ActionContext.getContext();
(HttpServletRequest) context.get(ServletActionContext.HTTP_REQUEST);

人家用的是SpringMVC,大哥,你这代码要干嘛?SpringMVC里什么时候有ActionContext了,我去。
0 请登录后投票
论坛首页 Web前端技术版

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