我有一个单独的spring bean,它被调用以响应一些客户端操作.我想捕获一些有关客户端的信息(特别是IP地址).我假设这个信息的最佳来源是请求对象.如何从bean内部获取对请求对象的访问权限?
如果这是一个显而易见的问题,请原谅我,我对Spring很新.
我尝试了一件没有成功的事:
((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes())
.getRequest().getRemoteAddr();
Run Code Online (Sandbox Code Playgroud)
但是由于IllegalStateException失败了currentRequestAttributes.异常文本建议使用RequestContextListener或RequestContextFilter
我找到了如何配置的参考RequestContextListener,但我仍然不知道改变我的bean所以我可以访问请求信息.
RequestContextListener添加到web.xml,这将当前请求与当前线程关联.然后RequestContextHolder以您已经尝试过的方式检索此线程关联.
所以只需要RequestContextListener进入web.xml,你的代码应该开始工作:
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)
RequestContextListener在Spring MVC应用程序中通常不需要,因为DispatcherServlet它会自动执行.我假设这不是一个Spring MVC应用程序?
| 归档时间: |
|
| 查看次数: |
5436 次 |
| 最近记录: |