Я зову java servlet
для выхода из системы с моей страницы настройки всех значений NULL и сброса сеанса 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 минут, то нажмите кнопку выхода из системы. Я получаю пустую страницу вместо перенаправления на домашнюю страницу. В StackTrace я получил 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)
Я знаю, что он собирается поймать, потому что сессия истекает автоматически. Как я могу справиться с этим? Мне нужно перенаправить на домашнюю страницу, даже если она закончится автоматически. Что мне делать?
Пожалуйста, распечатайте трассировку ошибки здесь. –