服务器端使用sendRedirect跳转到客户端异常
當(dāng)發(fā)生在如下錯(cuò)誤的時(shí)候,有一個(gè)方案可行,
?
"java.lang.IllegalStateException: Cannot forward after response has been committed “
?
當(dāng)你有多個(gè)跳轉(zhuǎn)的頁(yè)面的語(yǔ)句時(shí)候,好好檢查一下,當(dāng) 轉(zhuǎn)發(fā) 或者 重定向的時(shí)候,需要在后加一個(gè)retrun 即可。
服務(wù)器中不允許多次跳轉(zhuǎn),否則會(huì)下面這個(gè)錯(cuò)誤。
?
因?yàn)榉?wù)器端使用sendRedirect跳轉(zhuǎn)到客戶端的時(shí)候,不能在使用req.getRequestDispatcher("跳轉(zhuǎn)的頁(yè)面").forward(req, reqs);
跳轉(zhuǎn);
?
所以在跳轉(zhuǎn)之后,return就不會(huì)往下執(zhí)行。
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;}}}?
?
錯(cuò)誤信息:
嚴(yán)重: 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)
總結(jié)
以上是生活随笔為你收集整理的服务器端使用sendRedirect跳转到客户端异常的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Servlet之间的跳转
- 下一篇: jsp输入限制正则表达式