Filter中实现页面转发
在过滤器中实现页面转发时,报错
java.lang.IllegalStateException:Cannot forward after response has been committed
转发代码如下
if(article!=null){ req.getSession().setAttribute("article",article); //resp.sendRedirect("/article"); request.getRequestDispatcher("/article").forward(req, resp); return; }else{ chain.doFilter(request,response); }
这个是错误是由于response多次提交或者是由于有页面显示后仍然含请求转向产生的,就是说程序在return之前就已经执行了跳转或者执行过response,之后遇到return的话,程序想再次执行跳转,也就是重定向,这时功能也许会实现了,但是控制台会报错,所以控制好跳转是很重要的。
更具体的原因就不清楚了,查找之后,修改代码如下:
if(article!=null){ req.getSession().setAttribute("article",article); //resp.sendRedirect("/article"); RequestDispatcher rd = request.getRequestDispatcher("/article"); try { rd.forward(req, resp); return; }catch(Exception e){} }else{ chain.doFilter(request,response); }
转发效果实现