我有一個關於Tomcat會話的問題。Tomcat會話過期處理
當Tomcat的默認會話過期時間是30分鐘我知道。
我想向用戶顯示會話過期的消息頁面。
我該如何處理?
如果會話過期錯誤代碼存在,請指導我。
我搜索了會話過期的錯誤代碼,但是我找不到它。
請教我你的方式。
我有一個關於Tomcat會話的問題。Tomcat會話過期處理
當Tomcat的默認會話過期時間是30分鐘我知道。
我想向用戶顯示會話過期的消息頁面。
我該如何處理?
如果會話過期錯誤代碼存在,請指導我。
我搜索了會話過期的錯誤代碼,但是我找不到它。
請教我你的方式。
當會話過期時,會話對象將從請求對象返回null。
if(request.getSession(false)==null){
//Session expired or never existed
} else{
//session is still good.
}
這是更好的做法是讓這樣的測試最多可檢查每個請求,但你可以做到這一點在JSP中或Servlet中的過濾器。將重定向代碼放入JSP中往往會使其更加複雜,並將您的注意力從UI中移除。我建議使用過濾器,如果不是,那麼在將請求路由到您的JSP(您的控制器)的servlet中。如果你不使用控制器...
JSP版本(不推薦) - 你的JSP中使用以下
<%
if(request.getSession(false)==null){
//session has expired
response.sendRedirect("/ExpiredPage");
} else{
//Do what you normally would
}
%>
Servlet版本(更好) - 調用你的JSP servlet的內部請使用以下
public void doGet(HttpServletRequest request,HttpServletResponse){
if(request.getSession(false)==null){
//session has expired
response.sendRedirect("/ExpiredPage");
} else{
//Do what you normally would
}
}
篩選器版本(最佳選擇) - 裏面的過濾器,調用你的servlet的Ca LLS你的JSP使用下面的
public void doFilter(ServletRequest request,ServletResponse, FilterChain chain){
if((HttpServletRequest)request.getSession(false)==null){
//session has expired
((HttpServletResponse)response).sendRedirect("/ExpiredPage");
} else{
//Do what you normally would
chain.doFilter(request,response);
}
}
不錯,善良的解決方案。 :3 tyvm。 – lv0gun9
如果您使用的是Servlet,那麼您將拋出java.lang.IllegalStateException。當你嘗試使用你的會話。
如果您使用的是JSP,那麼您將拋出NullPointerException。當您嘗試訪問舊會話丟失的會話屬性時。
如果會話過期,用戶將被註銷,如果他們刷新或導航到一個受保護的頁面將被帶到登錄頁面。 – EJP
@EJP,感謝您的評價。 但是如何及時識別會話過期的情況? – lv0gun9
你可以發佈你的web.xml的相關部分嗎?你是否在web xml中配置了你的受保護頁面? – Subin