IllegalStateException:Cannot call sendRedirect() after..

之前代码,没有return就跳转,导致IllegalStateException: Cannot call sendRedirect()

        if(jsessionid != null){
            String url = request.getRequestURI();
            if(url.indexOf("?") == -1){
               url = url +"?ticket="+jsessionid;
            }else{
                url = url +"&ticket="+jsessionid;
            }
            System.out.println(url);
            request.getRequestDispatcher(url).forward(request,response);
        }
        chain.doFilter(request, response);

通过修改后

   if(jsessionid != null){
            String url = request.getRequestURI();
            if(url.indexOf("?") == -1){
               url = url +"?ticket="+jsessionid;
            }else{
                url = url +"&ticket="+jsessionid;
            }
            System.out.println(url);
            RequestDispatcher rd = request.getRequestDispatcher(url);
            try {
                rd.forward(request, response);
                return;
            }catch(Exception e){
                e.printStackTrace();
            }
        }
        chain.doFilter(request, response);
    }

错误是由于response多次提交或者是由于有页面显示后仍然含请求转向产生的,就是说程序在return之前就已经执行了跳转或者执行过response,之后遇到return的话,程序想再次执行跳转,也就是重定向,这时功能也许会实现了,但是控制台会报错,所以控制好跳转是很重要的。

全部评论

相关推荐

早就说结束了  诶  春招一个没招
投递数字马力(杭州)信息技术有限公司等公司7个岗位 >
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务