服务器端使用sendRedirect跳转到客户端异常
當發生在如下錯誤的時候,有一個方案可行,
?
"java.lang.IllegalStateException: Cannot forward after response has been committed “
?
當你有多個跳轉的頁面的語句時候,好好檢查一下,當 轉發 或者 重定向的時候,需要在后加一個retrun 即可。
服務器中不允許多次跳轉,否則會下面這個錯誤。
?
因為服務器端使用sendRedirect跳轉到客戶端的時候,不能在使用req.getRequestDispatcher("跳轉的頁面").forward(req, reqs);
跳轉;
?
所以在跳轉之后,return就不會往下執行。
protected void login(HttpServletRequest req, HttpServletResponse reqs) throws ServletException, IOException {// TODO Auto-generated method stubif(req.getUserPrincipal()!=null){String userID = req.getRemoteUser();boolean bol = req.isUserInRole(USER_ROLE_ADMIN);UserModel userModel =connectionDao.getUserModelByUserID(userID);if(bol){req.getSession().setAttribute("user",userModel);reqs.sendRedirect(req.getContextPath()+"/admin/main.jsp");return;}else{reqs.sendRedirect(req.getContextPath()+"/index.jsp");return;}}}?
?
錯誤信息:
嚴重: Servlet.service() for servlet [jsp] in context with path [/TomcatSecurityValidte] threw exception
java.lang.IllegalStateException: Cannot forward after response has been committed
?at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:339)
?at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
?at com.pack.security.filter.AuthorizationFilter.doFilter(AuthorizationFilter.java:39)
?at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
?at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
?at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
?at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
?at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:582)
?at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
?at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
?at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
?at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
?at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
?at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:279)
?at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
?at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
?at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
?at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
?at java.lang.Thread.run(Thread.java:619)
總結
以上是生活随笔為你收集整理的服务器端使用sendRedirect跳转到客户端异常的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Servlet之间的跳转
- 下一篇: jsp输入限制正则表达式