Java session 超时 - 当我第一次启动应用程序时,会显示 session 过期消息

标签 java xml session servlets

当我第一次启动应用程序时,会调用 sessionExpired 页面。谁能告诉我如何防止这种情况发生?一旦进入应用程序,它就会像预期的那样在 session 超时后过期。我正在使用tiles.xml。

tiles.xml

<!--Session Expired Page -->
    <definition name="sessionExpired" extends="login.definition">
        <put-attribute name="information" value="" />
        <put-attribute name="body" value="/WEB-INF/jsp/sessionExpired.jsp" />
    </definition>
<!--End of Session Expired Page -->

web.xml

<session-config>
    <session-timeout>1</session-timeout>
</session-config>
<filter>
    <filter-name>SessionFilter</filter-name>
    <filter-class>com.Filter.SessionFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>SessionFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

session 过滤器

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
            throws IOException, ServletException {

        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;

        HttpSession session = request.getSession(false);

        if (session != null) {
            long currentTime = System.currentTimeMillis() / 1000;
            long lastSessionAccessedTime = session.getLastAccessedTime() / 1000;
            int inactiveInterval = (int) currentTime -lastSessionAccessedTime);

            if (inactiveInterval > session.getMaxInactiveInterval()) {
                RequestDispatcher rd = request.getRequestDispatcher("/sessionExpired");
                rd.forward(request, response);
            } else {
                chain.doFilter(request, response);
            }
        } else {
            RequestDispatcher rd = request.getRequestDispatcher("/sessionExpired");
            rd.forward(request, response);
        }
    }

最佳答案

场景是相同的 - 在启动或新 session 时 - session == null

启动时,所有先前的 session 都会失效,因此您将被发送到 sessionExpired,与新 session 相同

这取决于要求 - 但您可能想查看 tomcat 上的持久 session

关于Java session 超时 - 当我第一次启动应用程序时,会显示 session 过期消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38992889/

相关文章:

java - 在类里面取消设置 session android

java - 从给定 URL 下载所有图像并将其保存到桌面无法完全正常工作

Java 操作执行不工作

java - 如何在 HTML 中嵌入 jar

objective-c - 是否可以使用 Restkit 安装 AFNetworking 2.0

php - 使用 xpath PHP 获取具有多个值的元素中的某些属性值

cricinfo记分卡的html解析

java - spring 如何将 beans 范围与请求、 session 等 HTTP 范围绑定(bind)

node.js - node.jsexpress.cookieSession 是否足够安全以保存敏感数据?

node.js - 在 Express 中使用 csurf 和 session