识别会话超时并重定向的步骤是什么,我试过在web.xml中给会话超时1分钟,是否会使会话进入时间?
用于在过滤器中重定向:
if (request.getRequestedSessionId() != null && !request.isRequestedSessionIdValid())
response.sendRedirect(request.getContextPath() + "/login.html");
return;
}
else {
response.setHeader("Cache-Control", "no-cache, no-store, must- revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0);
filterChain.doFilter(servletRequest, servletResponse);
}
但它没有重定向到登录页面,我在这里缺少什么?
需要做的另一个澄清是:web.xml中的url-pattern标签是否应该具有重定向页面地址?
<filter-mapping>
<filter-name>SessionTimeoutCookieFilter</filter-name>
<url-pattern>login.html</url-pattern>
</filter-mapping>
对此有任何建议......
答案 0 :(得分:1)
如果您使用web.xml
Apache Tomcat
中尝试此操作
<session-config>
<session-timeout>30</session-timeout>
</session-config>
答案 1 :(得分:1)
非常简单。
将以下代码添加到 SessionTimeoutCookieFilter
HttpSession session = request.getSession(false);
if (null == session) {
response.sendRedirect("index.jsp");
}
并且还改变你的网址,就像我使用过的那样: -
<filter>
<filter-name>SessionFilter</filter-name>
<filter-class>
net.SessionFilter
</filter-class>
<init-param>
<param-name>avoid-urls</param-name>
<param-value>index.jsp</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
答案 2 :(得分:0)
<session-config>
<session-timeout>15</session-timeout>
</session-config>
或者您可以使用Java代码:
session.setMaxInactiveInterval(15 * 60); //15 minutes
HttpSession#setMaxInactiveInterval()顺便说一下,这里的变化并不大。它与<session-timeout>
中的web.xml
完全相同,唯一的区别是您可以在runtime
期间以编程方式更改/设置它。顺便说一下,更改只影响当前会话实例,而不是全局(否则它将是static
方法)。
<session-config>
<session-timeout>-1</session-timeout>
</session-config>
您可以使用会话永不过期的-1
。因为您不知道线程需要多长时间才能完成。