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的话,程序想再次执行跳转,也就是重定向,这时功能也许会实现了,但是控制台会报错,所以控制好跳转是很重要的。