当前位置:编程学习 > JAVA >>

Java普通类取request | session

很多人在找,在一个普通类里如何才能取系统的request或session,我也找了下,但没有,就自己实现了一下,期待需要的有缘人,希望能帮到一点点。
 
 
具体如下:
 
 
实现步骤:
 
1.定义一个线程类,普通的:
 
类里最主要的就是定义了一个参数:
 
private static ThreadLocal<HttpServletRequest> httpRequest = new ThreadLocal<HttpServletRequest>();
 
另外给了set  get  remove和线程相关的三个方法;
 
具体如下:
 
[java] 
public class SystemRequestContext {  
      
    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装入
 
[java] 
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);  
 
 
补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,