永发信息网

如何在普通的Java类里面获取Request对象

答案:2  悬赏:60  手机版
解决时间 2021-11-18 06:00
  • 提问者网友:动次大次蹦擦擦
  • 2021-11-17 12:53
如何在普通的Java类里面获取Request对象
最佳答案
  • 五星知识达人网友:鱼芗
  • 2021-11-17 13:52
    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;  
      
    public class RequestFilter implements Filter {  
        // 创建线程  
        public static ThreadLocal threadLocal = new ThreadLocal();  
        //把request传入  
        public void doFilter(ServletRequest arg0, ServletResponse arg1,  
                FilterChain arg2) throws IOException, ServletException {  
              threadLocal.set((HttpServletRequest)arg0);  
              arg2.doFilter(arg0, arg1);  
        }  
      
        public void destroy() {  
        }  
      
        public void init(FilterConfig arg0) throws ServletException {  
        }//        得到request对象 HttpServletRequest request = RequestFilter.threadLocal.get();}filter>  
            RequestFilter  
            类路径.RequestFilter  
          
          
            RequestFilter  
            /*  
        
      
          
            RequestFilter  
            *.do  
        
    如果是这样的话,我们需要使用一个 ThreadLocal 变量,我们把当前  request 的变量绑定到里面,在一个 request 请求的生命周期内我们在方法调用的各个更深的层次中都可以直接使用它而不需要在每个方法中都传递这个 request 参数,保存在某个地方就容易导致因为多个请求共用同一个实例而出问题,所有 context 相关的变量不保存在任何业务类相关并且可能被多线程共用的对象实例中才是保证不会出现线程安全问题的途径。

    例如,这个例子中我们只要把 web.xml 中配置好 ContextFilter 后它就会自动在请求开始时绑定一个 context,结束后自动销毁,在这中间的任何时刻我们都可以通过 MyWebContext.getCurrentContext() 得到我们的 HttpServletRequest 实例和其它相关的 context 变量:
全部回答
  • 1楼网友:舊物识亽
  • 2021-11-17 15:14
类成员 定义一个 HttpServletRequest request;
但是用不了,空指针异常
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯