java - 获取 HttpSession|来自简单 java 类而不是 servlet 类的请求

标签 java jsp servlets jakarta-ee

我希望 session 对象不在 servlet 类中,而是来 self 们应用程序的普通对象。

WEB.XML

<listener>
        <listener-class>com.abc.web.ApplicationManager</listener-class>
</listener>
<listener>
        <listener-class>com.abc.web.SessionManager</listener-class>
</listener>

ViewPrices.java

public class ViewPrices implements Cloneable, Serializable {

 Session session = request.getSession();
                   servletContext.getSession()
                   anyWay.getSession();
}

最佳答案

调用这个:

RequestFilter.getSession();
RequestFilter.getRequest();

在您的自定义过滤器上:

public class RequestFilter implements Filter {

    private static ThreadLocal<HttpServletRequest> localRequest = new ThreadLocal<HttpServletRequest>();


    public static HttpServletRequest getRequest() {
        return localRequest.get();
    }

    public static HttpSession getSession() {
        HttpServletRequest request = localRequest.get();
        return (request != null) ? request.getSession() : null;
    }


    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        if (servletRequest instanceof HttpServletRequest) {
            localRequest.set((HttpServletRequest) servletRequest);
        }

        try {
            filterChain.doFilter(servletRequest, servletResponse);
        } finally {
            localRequest.remove();
        }
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }

    @Override
    public void destroy() {
    }
}

您将把它注册到您的 web.xml 文件中:

<filter>
    <filter-name>RequestFilter</filter-name>
    <filter-class>your.package.RequestFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>RequestFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

关于java - 获取 HttpSession|来自简单 java 类而不是 servlet 类的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5866728/

相关文章:

java - 仅使用 Primefaces 数据表对 JSF 进行操作审核

java - Android环境下可以使用GPU进行数值计算(复杂矩阵乘法)吗?

java - 如何将具有特殊字符的参数从一个jsp页面传递到另一个jsp页面?

java - 在测试 servlet 时在我的浏览器输出中获取字符串

java - ServletRequest.getRequestDispatcher() 对于不存在的文件/资源

java - 时间转换为时间戳

Java双丢精度计算

java - 在表中的 jsp 文件中显示来自数据库 (blob) 的所有图像

Java - 动态下拉至国家/州

java - 如何从 Java 服务器端发送图像,并在 JQuery 客户端处理它