重复的逻辑处理 Cannot call sendRedirect() after the response has been committed

重复的逻辑处理 Cannot call sendRedirect() after the response has been committed

今天在处理一个问题时,发生如下错误提示


严重: Servlet.service() for servlet [LoveBN] in context with path [/LoveBN] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed] with root cause
java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed
	at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:494)
	at springMVC.NLoveB.interceptor.TokenLoginInterceptor.preHandle(TokenLoginInterceptor.java:24)
	at org.springframework.web.servlet.HandlerExecutionChain.applyPreHandle(HandlerExecutionChain.java:134)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:954)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
这个错误通常时因为您在写拦截器的时候,有至少两个拦截器里面的业务逻辑时重复的


因此提示您

Cannot call sendRedirect() after the response has been committed

所以出现这个错误,一般来说来请检查业务逻辑,如果时拦截器,请检查拦截器的逻辑是否重复

相当于两次或两次以上调用了 sendRedirect()


我这里的错误就是有两个拦截器都加入了如下代码

if(session.getAttribute("errorvodecount")!=null && (int)(session.getAttribute("errorvodecount"))>=10){
	System.out.println(session.getAttribute("errorvodecount"));
	response.sendRedirect("/error/page/ip20.do");
}
所以,错误就很明显了。


爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img