在Controller中,我们可以直接在参数中加上HttpServletRequest request,springMVC就会自动将request绑定进参数,而如果我们想在其他地方获取request就要如下这么做了。
首先在web.xml中添加一个监听器,针对request级别的,要和ContextLoaderListener区分开,
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
然后在程序中就可以使用如下的代码来获取request对象了
HttpServletRequest request=((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
其实背后的原理就是将这个request对象存在ThreadLocal线程变量里面。