您的位置:首页 > 理论基础 > 计算机网络

spring-mvc 非 controller 层获取HttpServletRequest

2016-02-23 08:53 399 查看
spring-mvc HttpServletRequest RequestContextListener RequestContextHolder

在项目中记录操作日志,是一种很常见的需求。

有时我们在service或者dao层记录日志,需要同时保存访问ip、登录用户名等。如果从controller层把HttpServletRequest 对象传过去会显得很麻烦。HttpSession可以通过HttpServletRequest 间接获取。

需要注意的是RequestContextListener实现了javax.servlet.ServletRequestListener,这是servlet2.4之后才有的,一些比较老的容器使用这一功能会报空指针异常。

?
在web.xml配置

?
在service或者dao中获取HttpServletRequest 的代码如下

?
为了方便,可以如上代码提取到一个工具方法中,避免重复。

他的原理就是使用ThreadLocal,RequestContextListener监听器将HttpServletRequest绑定到当前线程。以下是部分源码

?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring