• servlet请求转发、包含以及重定向


    请求转发:

    方式一:

      ServletContext对象.getRequestDispatcher(目标资源的URI).forward(request,response);

      目标资源的URI "/servlet/GetParam" 必须以"/"开头,否则报错,此"/"就表示的是当前应用(绝对路径表示法)

    方式二:

      request.getRequestDispatcher(目标资源的URI).forward(request,response);

      目标资源的URI "/servlet/GetParam" 如果以"/"开头,就表示的是当前应用(绝对路径表示法)。

      GetParam" 如果不以"/"开头,就表示相对路径。相对路径:两个绝对路径去掉前面相同的部分

    由源组件转发到目标组件时,容器会清空源组件输出的数据。响应头信息是不清空的,客户端地址栏URL不变

    编码原则:不要在转发前后向页面输出数据,也不要关闭输出流。

    1     public void forward(HttpServletRequest request,
    2             HttpServletResponse response) throws ServletException, IOException {
    3 //        方式一
    4 //        RequestDispatcher rd=getServletContext().getRequestDispatcher("/servlet/NewPage");
    5 //        方式二
    6         RequestDispatcher rd=request.getRequestDispatcher("NewPage");
    7         
    8         rd.forward(request, response);
    9     }

    包含(动态包含):

    request.getRequestDispatcher(目标资源的URI).include(request,response);

    由源组件包含到目标组件时,容器会清空目标组件的头,所以源组件设置的头才有效。响应体信息是不清空的。

    编码原则:不要在目标组件中设置响应头。

    1     public void include(HttpServletRequest request,
    2             HttpServletResponse response) throws ServletException, IOException{
    3         RequestDispatcher rd=request.getRequestDispatcher("/servlet/NewPage");
    4         rd.include(request, response);
    5     }


    重定向:

    response.sendRedirect("/../...")

    目标资源的URI /应用名/路径.. 绝对路径,"/"后跟应用名

    客户端跳转,request中数据不传递!客户端地址栏URL改变。

    1     public void redirect(HttpServletRequest request,
    2             HttpServletResponse response) throws IOException{
    3         response.sendRedirect("/WebProjectName/newURL");
    4     }
  • 相关阅读:
    Adobe Acrobat XI pro v11.0.10中文版
    微软Office 2019 批量授权版21年04月更新版【福利】
    如何在PS里把证件照调正
    PS2020如何把图片中模糊不清的文字变清晰
    Office有效序列号大全
    计量经济学软件EViews11正式版【附激活文件】
    处理v-html的潜在XSS风险
    for 和 forEach 使用return,是跳出当前的循环,还是整个循环
    VUE防止多次点击,重复请求
    vue 分页插件使用
  • 原文地址:https://www.cnblogs.com/z941030/p/4741705.html
Copyright © 2020-2023  润新知