「java获取req」Java获取随机数

博主:adminadmin 2022-12-08 08:27:07 102

本篇文章给大家谈谈java获取req,以及Java获取随机数对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java如何在一个普通的类中获取request对象

你是指你的 web 项目中使用到一个工具性的类,它的形参中没有 HttpRequest 或 HttpSession 参数?

如果是这样的话,我们需要使用一个 ThreadLocal 变量,我们把当前  request 的变量绑定到里面,在一个 request 请求的生命周期内我们在方法调用的各个更深的层次中都可以直接使用它而不需要在每个方法中都传递这个 request 参数,保存在某个地方就容易导致因为多个请求共用同一个实例而出问题,所有 context 相关的变量不保存在任何业务类相关并且可能被多线程共用的对象实例中才是保证不会出现线程安全问题的途径。

例如,这个例子中我们只要把 web.xml 中配置好 ContextFilter 后它就会自动在请求开始时绑定一个 context,结束后自动销毁,在这中间的任何时刻我们都可以通过 MyWebContext.getCurrentContext() 得到我们的 HttpServletRequest 实例和其它相关的 context 变量:

// MyWebContext 记录当前 Request 的所有 context 变量。因为 servlet 是一个请求绑定一个线程的,我们用 ThreadLocal 不会有线程安全问题。

 

class MyWebContext {

    private static final ThreadLocal contexts = new ThreadLocal();

     

    // 拿出当前线程绑定的 context

    public static MyWebContext getCurrentContext() {

        return (MyWebContext) contexts.get();

    }

    public static MyWebContext createContext() {

        return new MyWebContext();

    }

     

    // 绑定一个 context 到当前线程 

    public static void setContext(MyWebContext context) {

        contexts.set(context);

    }

    public static void clearContext() {

        contexts.set(null);

    }

     

    private HttpRequest request;

    public void setRequest(HttpRequest request) {

        this.request = request;

    }

    public HttpRequest getRequest() {

        return this.request;

    }

}

 

class ContextFilter implements Filter {

    public void doFilter(ServletRequest, SerlvetResponse, FilterChain chain) {

        // 创建并绑定我们的 context

        MyWebContext context = MyWebContext.createContext();

        context.setRequest(request);

        MyWebContext.setContext(context);

        try {

            chain.doFilter(request, response);

        } finally {

            // 销毁 context

            MyWebContext.clearContext();

        }

    }

}

 

class MyToolClassWithoutRequestParameter {

    public static String getFileUploadPath() {

        // 其它方法只要它是工作在 servlet 请求调用键中间的某个时刻,它就肯定能拿到 Filter 绑定进去的 Request,这样我们就不必要在每次方法调用中都额外地传递一个 HttpRequest 参数,当调用层次很深时这能明显减少复杂性。

         

        MyWebContext contex = MyWebContext.getCurrentContext();

         

        HttpRequest request = context.getRequest();

         

        HttpServletContext servletContext = ...;

        HttpSession session = request.getSession(false);

        ...

         

    }

}

Java 怎么在一个普通类中获取到Request对象

首先,向你确认你所谓的普通类就是POJO吗,如果是是无法获取Request对象的。

不过,可以使用参数传递的方式。

Request对象,即ServletRequest,隶属于javax包下的,需要实现其HttpServletRequest接口才能获取到Request对象

故在普通java类中是无法获取到request对象的

望参考

java怎么获取request

ActionContext ac = ActionContext.getContext();

HttpServletRequest request =HttpServletRequest)ac.get(ServletActionContext.HTTP_REQUEST);

java获取req的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Java获取随机数、java获取req的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-08,除非注明,否则均为首码项目网原创文章,转载请注明出处。