在网上看到有不少人说如下方式获取:
1.在web.xml中添加监听
org.springframework.web.context.request.RequestContextListener
2.在aop类中有以下两种方式获取
@Autowired
HttpServletRequest request; //这里可以获取到request
或者
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
但是我试后,发现都获取不到。
既然这样那就要用其他方式获取了。
1. 新建一个存储request、response对象的类
importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;public classSysContent {private static ThreadLocal requestLocal = new ThreadLocal();private static ThreadLocal responseLocal = new ThreadLocal();public staticHttpServletRequest 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 staticHttpSession getSession() {return(HttpSession) ((HttpServletRequest) requestLocal.get()).getSession();
}
}
2. 新建一个filter,并在web.xml中添加filter配置
importjava.io.IOException;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;public class InitContent implementsFilter {
@Overridepublic voiddoFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)throwsIOException, ServletException {
SysContent.setRequest((HttpServletRequest) arg0);
SysContent.setResponse((HttpServletResponse) arg1);
arg2.doFilter(arg0, arg1);
}
@Overridepublic void init(FilterConfig arg0) throwsServletException {
}
@Overridepublic voiddestroy() {
}
}
web.xml
InitContent
com.*.filter.InitContent
InitContent
/*
这样一来,每次请求的request、response都存在了ThreadLocal中,每次需要的时候从里面获取即可
HttpServletRequest request = SysContent.getRequest();
HttpServletResponse response = SysContent.getResponse();
HttpSession session = SysContent.getSession();