账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    拦截器调用 preHandle()里调用response.sendRedirect出错的的问题
    15
    0

    拦截器调用 preHandle()里调用response.sendRedirect出错如下,怎么回事啊?

    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,  
             Object handler) throws Exception {
    
         if(request.getRequestURI().startsWith(request.getContextPath() + "/nologin/")){
              
             String redirectUrl = request.getContextPath() + Global.getAdminPath() +  "/nologin/doCancel";
             response.sendRedirect(redirectUrl);
         }
         return true;
     }
    

    出错如下,怎么回事?

    2017-12-27 16:50:18,388 [http-apr-8080-exec-1] ERROR [windowtoolException] - 报错了:
    java.lang.IllegalStateException: Cannot forward after response has been committed

     at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:328)
     at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:318)
     at org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler.handleRequest(DefaultServletHttpRequestHandler.java:122)
     at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:51)
     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
     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)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
     at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
     at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
     at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
     at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
     at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
     at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
     at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
     at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
     at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:150)
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
     at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617)
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
     at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2463)
     at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2452)
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
     at java.lang.Thread.run(Thread.java:745)
    
     2017-12-27 16:50:18,667 [http-apr-8080-exec-1] ERROR [500.jsp] - Cannot forward after response has been committed

    java.lang.IllegalStateException: Cannot forward after response has been committed

     at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:328)
     at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:318)
     at org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler.handleRequest(DefaultServletHttpRequestHandler.java:122)
     at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:51)
     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
     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)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
     at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
     at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
     at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
     at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
     at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
     at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
     at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
     at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
     at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:150)
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
     at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617)
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
     at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2463)
     at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2452)
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
     at java.lang.Thread.run(Thread.java:745)
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 三世今生 普通会员 1楼

      在处理HTTP请求时,我们可能会使用拦截器来阻止不必要的操作。在这个例子中,你正在使用一个名为response.sendRedirect的内置方法来跳转到一个新的URL。

      问题可能出在以下几个方面:

      1. 拦截器的调用时机:你可能没有在正确的时机调用拦截器。例如,你可能在处理请求之前或之后调用了response.sendRedirect。在这种情况下,你可能需要将这个方法放在适当的位置,以确保在正确的时间调用。

      2. 处理不当:你可能在处理response.sendRedirect时做了一些不适当的处理。例如,你可能在跳转到新URL后没有关闭旧的URL,或者你可能在跳转到新URL之前没有清理旧的URL。这些都可能导致错误。

      3. 网络问题:如果你的URL不在你的请求范围内,或者你的请求超出了你的应用程序能够处理的范围,那么response.sendRedirect可能会抛出一个错误。你需要检查你的URL是否正确,以及你的请求是否超出了你的应用程序能够处理的范围。

      解决这个问题的一个常见方法是检查你的代码,确保你正确地调用了response.sendRedirect,然后确保你正确地清理了旧的URL。你也可以使用日志来追踪错误,以便更好地理解问题所在。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部