zoukankan      html  css  js  c++  java
  • request实现请求转发

    ServletContext可以实现请求转发,request也可以。
    在forward之前输入到response缓冲区中的数据,如果已经被发送到了客户端,forward将失败,抛出异常
    在forward之前输入到response缓冲区中的数据,但是还没有发送到客户端,forward可以执行,但是缓冲区将被清空
    ,之前的数据丢失。注意丢失的只是请求体中的内容,头内容仍然有效。
    在一个Servlet中进行多次forward也是不行的,因为第一次forward结束,response已经被提交了,没有机会再
    forward了
    总之,一条原则,一次请求只能有一次响应,响应提交走后,就再没有机会输出数据给浏览器了。

    6.RequestDispatcher进行include操作
    forward没有办法将多个servlet的输出组成一个输出,因此RequestDispatcher提供了include方法,可以将多个
    Servlet的输出组成一个输出返回个浏览器
    request.getRequestDispatcher("/servlet/Demo17Servlet").include(request, response);
    response.getWriter().write("from Demo16");
    request.getRequestDispatcher("/servlet/Demo18Servlet").include(request, response);
    常用在页面的固定部分单独写入一个文件,在多个页面中include进来简化代码量。


    请求重定向和请求转发的区别:
    请求重定向地址栏会发生变化.请求转发地址栏不发生变化.
    请求重定向两次请求两次响应.请求转发一次请求一次响应.

    如果需要在资源跳转时利用request域传递域属性则必须使用请求转发
    如果希望资源跳转后修改用户的地址栏则使用请求重定向
    如果使用请求转发也可以重定向也可以,则优先使用请求转发,减少浏览器对服务器的访问次数减轻服务器的压力.
    s

  • 相关阅读:
    JVM对象
    JVM如何加载Java类
    JVM内存模型
    JVM的直接内存
    docker run命令
    JVM调优-CPU占用过高
    JVM调优工具
    Java爬虫爬取京东商品信息
    Linux下设置Tomcat虚拟路径
    Java设计模式之-------->"代理模式"
  • 原文地址:https://www.cnblogs.com/superPerfect/p/4300682.html
Copyright © 2011-2022 走看看