Java普通類中使用request和session
阿新 • • 發佈:2019-02-19
很多人都想,在一個普通類裡如何才能獲取系統的request或session,我也找了,但沒有,就自己實現了一下,期待需要的有緣人,希望能幫到一點點。
具體如下:
實現步驟:
1.定義一個執行緒類,普通的:
類裡最主要的就是定義了一個引數:
private static ThreadLocal<HttpServletRequest> httpRequest = new ThreadLocal<HttpServletRequest>();
另外給了set get remove和執行緒相關的三個方法;
具體如下:
Java程式碼- public
- private static ThreadLocal<HttpServletRequest> httpRequest = new ThreadLocal<HttpServletRequest>();
- private static ThreadLocal<HttpSession> session = new ThreadLocal<HttpSession>();
- public static void removeHttpSession()
- {
- session.remove();
- }
- public static HttpSession getSession() {
- return session.get();
- }
- public static void setSession(HttpSession _session) {
- session.set(_session);
- }
2.定義一個filter,攔截所有的請求,把request裝入
SystemRequestContext
Java程式碼- public void doFilter(ServletRequest req, ServletResponse response,
- FilterChain chain) throws IOException, ServletException {
- HttpServletRequest request = (HttpServletRequest)req;
- SystemRequestContext.setHttpRequest(request);
- SystemRequestContext.setSession(request.getSession());
- try{
- chain.doFilter(request, response);
- }finally{
- SystemRequestContext.removeHttpRequest();
- SystemRequestContext.removeHttpSession();
- }
- }
3.如何使用:
Java程式碼- public class UserModuleValidateTag {
- public static boolean validateModule(String module){
- HttpServletRequest request = SystemRequestContext.getHttpRequest();
- if(null!=request)
- System.out.println("^_^"+request);
- }
- }