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);
}

转发效果实现


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM