zoukankan      html  css  js  c++  java
  • 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);
    }

    转发效果实现

  • 相关阅读:
    基于麦克风阵列的声源定位算法之GCC-PHAT
    Parametric and Non-parametric Algorithms
    MATLAB中运算符优先级
    [HAOI2018]染色
    [SHOI2016]黑暗前的幻想乡
    [SCOI2012]滑雪
    [PA2014]Kuglarz
    Stroll
    [SDOI2010]大陆争霸
    解决IDEA Gradle构建报错"Cause: zip END header not found"
  • 原文地址:https://www.cnblogs.com/fdzang/p/9561737.html
Copyright © 2011-2022 走看看