gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 07:12:30 26 4
gpt4 key购买 nike

当我第一次启动应用程序时,会调用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com