如何在AOP中获取Request和Response对象
来源:互联网 发布:女士电脑双肩包 知乎 编辑:程序博客网 时间:2024/05/28 18:45
spring aop 获取request、response对象
在网上看到有不少人说如下方式获取:
1.在web.xml中添加监听
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
2.在aop类中有以下两种方式获取
@Autowired
HttpServletRequest request; //这里可以获取到request
或者
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
但是我试后,发现都获取不到。
既然这样那就要用其他方式获取了。
1. 新建一个存储request、response对象的类
import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class SysContent { private static ThreadLocal<HttpServletRequest> requestLocal = new ThreadLocal<HttpServletRequest>(); private static ThreadLocal<HttpServletResponse> responseLocal = new ThreadLocal<HttpServletResponse>(); public static HttpServletRequest getRequest() { return (HttpServletRequest) requestLocal.get(); }
public static void setRequest(HttpServletRequest request) {
requestLocal.set(request);
}
public static HttpServletResponse getResponse() {
return (HttpServletResponse) responseLocal.get();
}
public static void setResponse(HttpServletResponse response) {
responseLocal.set(response);
} public static HttpSession getSession() { return (HttpSession) ((HttpServletRequest) requestLocal.get()).getSession(); }}
2. 新建一个filter,并在web.xml中添加filter配置
import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class InitContent implements Filter { @Override public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { SysContent.setRequest((HttpServletRequest) arg0); SysContent.setResponse((HttpServletResponse) arg1); arg2.doFilter(arg0, arg1); } @Override public void init(FilterConfig arg0) throws ServletException { } @Override public void destroy() { }}
web.xml
<filter> <filter-name>InitContent</filter-name> <filter-class>com.*.filter.InitContent</filter-class> </filter> <filter-mapping> <filter-name>InitContent</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
这样一来,每次请求的request、response都存在了ThreadLocal中,每次需要的时候从里面获取即可
HttpServletRequest request = SysContent.getRequest();
HttpServletResponse response = SysContent.getResponse();
HttpSession session = SysContent.getSession();
阅读全文
0 0
- 如何在AOP中获取Request和Response对象
- springMVC4中获取request和response对象
- 在SpringMVC中获取request和response
- Spring AOP中获取request,response
- struts2中如何获取request,response,session对象
- Struts中怎么获取request和response对象
- Struts的Action中获取Request和response对象
- 如何在非Controller中获取Request和Response:SpringMVC之RequestContextHolder分析
- SpringMVC获取request对象和response对象
- SpringMVC获取request对象和response对象
- 如何在SpringMVC中获取request对象
- 如何在spring中获取request对象
- 如何在spring中获取request对象
- 如何在SpringMVC中获取request对象
- 如何在SpringMVC中获取request对象
- 如何在spring中获取request对象
- 如何在SpringMVC中获取request对象
- 如何在SpringMVC中获取request对象
- [ 欧拉定理 矩阵快速幂 ] BZOJ5118
- yarn架构 及 client提交任务过程讲解
- 人脸认证源码faceIdentify
- C++之string类型
- JavaScript性能优化的小知识点总结
- 如何在AOP中获取Request和Response对象
- 联合体
- 人脸登陆facelogin
- BZOJ蒟蒻百年挖坑计划
- Java NIO:浅析I/O模型
- Java线程池ThreadPoolExecutor使用和分析(二)
- 高数 06.02 定积分及其相关内容
- SQL语句基础知识(总结)
- 【笔记】AOV网与拓扑排序