我打電話java servlet
用於註銷從我的頁面設置都爲空和重置HTTP會話中值如下:java.lang.IllegalStateException:無法調用sendRedirect()後的反應一直致力於
public class logout extends HttpServlet
{
public void service(HttpServletRequest rq,HttpServletResponse rs)throws IOException,ServletException
{
try{
HttpSession ss=rq.getSession(false);
if(ss.getAttribute("uid")==null || ss.getAttribute("usr")==null || ss.getAttribute("acc")==null)
{
rs.sendRedirect("/");
}
rs.setHeader("Cache-Control","no-cache, no-store, must-revalidate");
rs.addHeader("Cache-Control", "post-check=0, pre-check=0");
rs.setHeader("Pragma","no-cache");
rs.setDateHeader ("Expires", 0);
HttpSession session = rq.getSession(false);
session.setAttribute("uid",null);
session.setAttribute("usr",null);
session.setAttribute("acc",null);
session.invalidate();
rs.sendRedirect("/");
}
catch(Exception exp)
{
//Catch
}
}
}
如果我點擊註銷按鈕,那麼它會很好地註銷。假設如果我不註銷一段時間假設30分鐘,然後按註銷按鈕我得到一個空白頁面,而不是重定向到主頁。 在堆棧跟蹤我得到了erroe如下:
java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed
org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:494)
logout.service(logout.java:32)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
我知道這是要趕,因爲會話將自動失效。我該如何處理?即使會話自動到期,我也需要重定向到主頁。我該怎麼辦?
請在這裏打印錯誤的堆棧跟蹤。 –