首页 > 代码库 > Spring Mvc 在非controller层 实现获取request对象
Spring Mvc 在非controller层 实现获取request对象
一般我们在Controller层,会编写类似这样的方法
@Controller
@RequestMapping(value="http://www.mamicode.com/detail")
public class GetURIDetailController {
@SystemControllerLog(description = "id") @RequestMapping(value="/{id}",method={RequestMethod.GET}) public ModelAndView getDetailID( @PathVariable("id") Integer id
,HttpServletRequest request){ ModelAndView modelAndView = new ModelAndView();
//someting request对象方法的调用 modelAndView.addObject("id",id); modelAndView.setViewName("detail"); return modelAndView; }}
本质上Controller就是一个spring 组件,所以在我的请求方法 getDetailID中,可以添加一个HttpServletRequest获得当前请求的request对象,
request对象中包含了 用户ID session 以及等等信息
-------------------------------------------------------------
假设我们要编写一个AOP拦截Controller实现我们的切点事务时候,这个时候
RequestContextHolder这个静态类就派上用处了,
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
private static final ThreadLocal<RequestAttributes> requestAttributesHolder =
new NamedThreadLocal<RequestAttributes>("Request attributes");//NamedThreadLocal 线程本地
public static RequestAttributes getRequestAttributes() { RequestAttributes attributes = requestAttributesHolder.get();//获得线程本地request对象 if (attributes == null) { attributes = inheritableRequestAttributesHolder.get();// } return attributes; }
我阅读了一下Spring的源代码,它获得的是当前请求的request对象
先上班,晚上补上,
Spring Mvc 在非controller层 实现获取request对象
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。