zoukankan      html  css  js  c++  java
  • Servlet-RequestDispatcher.forward方法

       forward方法与Include方法非常相似,但有5点不同

    1,在调用forward方法之前,输出缓冲区的数据会被清空,也就是说,在使用forward方法进行请求转发时,只可能输出别转发的web资源中的消息。

    2,如果在调用forward方法之前已经将缓冲区的数据发送到客户端,在调用forward方法时会抛出IllegalStateException异常

    3,在调用者和被调用者中设置响应消息头都不会被忽略,而在调用Include方法中,只有调用者中设置响应消息头才会生效。

    4,Servlet引擎会根据RequestDispatcher对象所包含的资源对HttpServletRequest对象中的请求路径和参数信息进行调整,而使用Include方法时,Servlet引擎不会调整这些消息。

    5,forward方法只能使用一次,否则抛出异常。

    ForwardServlet类演示了如何使用Forward方法请求转发web资源。

    代码如下:

    1 protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    2         // TODO Auto-generated method stub
    3         RequestDispatcher pd=this.getServletContext().getRequestDispatcher("/IncludingServlet");
    4         pd.forward(request, response);
    5     }

    结果如图:

    由输出结果可知,在转入的 web资源中改变了httpServRequest中的请求路径,因此输出的死/IncludingServlet,而不是ForwardServlet的请求路径。

  • 相关阅读:
    HTTP下载文件校验失败原因分析与解决
    读《软件测试的艺术》
    CXF wsdl2java 错误
    oracle 存储过程 多参数 多返回值
    ORACLE 函数 调用
    typescript学习入门(学习笔记)
    js常用方法总结
    jenkins安装及项目构建发布回滚
    Centos8中创建LVM精简逻辑卷
    k8s kubectl命令自动补全
  • 原文地址:https://www.cnblogs.com/zhanglina/p/6033904.html
Copyright © 2011-2022 走看看