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