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