Servlet的请求转发getRequestDispatcher接口

本文深入解析了在getRequestDispatcher接口下的forward和include方法的区别。通过实际代码示例,展示了forward方法如何仅显示最后转发的页面内容,而include方法则能够合并并显示所有相关页面的HTML代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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代码执行并输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Modify_QmQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值