Servlet的请求转发getRequestDispatcher接口

在getRequestDispatcher接口下有俩个方法,分别是forward和include

forward :使用该方法请求转发后,后续响应输出的代码不在执行,页面的输出只会输出最后一个转的页面的h5代码输出
include :使用该方法请求转发后,后续响应输出的代码不在执行,页面的输出会输出所有页面的h5代码
首先,看一下使用forward方法请求转发的实例;(仅给出doget里面的代码)

    //设置编码格式,防止代码出现乱码的情况
    request.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");
    PrintWriter out= response.getWriter();
    //写入h5代码
    out.print("<html><head><body>hello demo </body></head></html>");
    //请求转发后,跳转到test页面(下一个servlet),使用forward方法
    request.getRequestDispatcher("test").forward(request, response);
    out.print("000000000000000000");
    out.close();
    //控制台输出,俩种方法皆会输出该语句的结果
    System.out.println("hello demo changsha");

下一个test的servlet页面一样,代码如下

    request.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");
    PrintWriter out= response.getWriter();
    out.print("<html><head><body>hello test </body></head></html>");
    out.print("111111111111111111111111");
    out.close();
    System.out.println("hello demo guangzhou");

看到控制台的输出,俩个界面的控制台输出语句均有输出
但是,在网页上的输出仅仅只有test页面的hello test 和后面的111111111输出

在者我们看一下使用include方法跳转页面的输出(include的代码与forward一致,方法不同),这个servlet的名字为Demo1,与前面一样,跳转到test页面,代码如下:

    request.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");
    PrintWriter out= response.getWriter();
    out.print("<html><head><body>hello demo1 </body></head></html>");
    request.getRequestDispatcher("test").include(request, response);
    out.print("22222222222222222222222");
    out.close();
    System.out.println("hello demo zhongshan");

运行这个代码,跳转到test页面后看到控制台的输出一样,均已执行
在网页上的输出则是将Demo1和test的h5代码合并在一起,表示该方法会将所有界面的h5代码执行并输出

小站:https://www.dianjilingqu.com/

posted @ 2022-01-21 17:47  元宇宙-Metaverse  阅读(155)  评论(0)    收藏  举报