在過濾器中實現頁面轉發時,報錯
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); }
轉發效果實現
