博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在springmvc中使用requestContextListener获取全部的request对象
阅读量:7134 次
发布时间:2019-06-28

本文共 1600 字,大约阅读时间需要 5 分钟。

RequestContextListener实现了 ServletRequestListener ,在其覆盖的requestInitialized(ServletRequestEvent requestEvent)方法中,将request最终设置到了RequestContextHolder中.

public class RequestContextListener implements ServletRequestListener {    private static final String REQUEST_ATTRIBUTES_ATTRIBUTE =            RequestContextListener.class.getName() + ".REQUEST_ATTRIBUTES";    @Override    public void requestInitialized(ServletRequestEvent requestEvent) {        if (!(requestEvent.getServletRequest() instanceof HttpServletRequest)) {            throw new IllegalArgumentException(                    "Request is not an HttpServletRequest: " + requestEvent.getServletRequest());        }        HttpServletRequest request = (HttpServletRequest) requestEvent.getServletRequest();//从事件对象中获取request对象        ServletRequestAttributes attributes = new ServletRequestAttributes(request);//将request设置到servletRequestAttributes中        request.setAttribute(REQUEST_ATTRIBUTES_ATTRIBUTE, attributes);//反过来将servletRequestAttributes设置到request中        LocaleContextHolder.setLocale(request.getLocale());        RequestContextHolder.setRequestAttributes(attributes);//再将servletRequestAttributes设置到requestContextHolder中    }

代码中获取该request的步骤:

HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.getRequestAttributes()))                .getRequest();// 返回了RequestAttributes接口,将其强转为ServletRequestAttributes实现类

使用上述方法前,需要先配置RequestContextListener监听器:

org.springframework.web.context.request.RequestContextListener

 

转载于:https://www.cnblogs.com/tabchanj/p/5716119.html

你可能感兴趣的文章
SWAP_JOIN_INPUTS Oracle Hint(处理hash join强制大表(segment_size大)作为被驱动表)
查看>>
oc引入头文件
查看>>
ORACLE联机日志文件丢失或损坏的处理方法(转)
查看>>
bootstrap-导航加下拉菜单(二级导航)
查看>>
ZOJ 2702 Unrhymable Rhymes 贪心
查看>>
apt-get update更新源时,出现“Hash Sum mismatch”问题
查看>>
ExtJS 2.x + Google Maps JavaScript API V3
查看>>
[译]何时使用 Parallel.ForEach,何时使用 PLINQ
查看>>
第 43 章 SonicWALL
查看>>
解决VS2015 VBCSCompiler.exe 占用CPU100%的问题
查看>>
[转载]我的程序 能节能休眠
查看>>
将IRepository接口进行抽象,使它成为数据基类的一个对象,这样每个子类都可以有自己的最基础的CURD了...
查看>>
WF中的动态更新
查看>>
T-SQL查询进阶--深入理解子查询
查看>>
带权并查集(个人模版)
查看>>
【JUnit 报错】java.lang.IncompatibleClassChangeError
查看>>
3D打印——只有你想不到的,没有 它做不到的
查看>>
如何从github上面拷贝源码
查看>>
适用于WinForm的一个定时器类
查看>>
C#进行Visio二次开发之动态仿真实现
查看>>