Web请求的转发&重定向区别【图文分析】

本文深入剖析Servlet技术中请求转发与重定向的区别与应用场景,包括转发与重定向的实现方式、请求处理流程、浏览器行为变化及数据共享特性。

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

总所周知:请求的转发与重定向是Servlet控制页面跳转的主要方法,在Web应用中使用的非常广泛,也是面试中问到servlet技术高频点。

请求转发

一个Web资源收到客户端的请求后,通知服务器去调用另一个Web资源进行处理,称之为请求转发。

在这里插入图片描述

分析:

   (1)Servlet接收到浏览器端的请求后,进行了一定的处理。一开始不会进行响应,而是在服务器端内部“转发”给其它的Servlet程序进行继续处理。在这种情况下浏览器只会发出1次请求,浏览器的URL地址栏也不会发生改变,用户是感受不到请求转发的操作。

   (2)转发请求的Servlet和目标的Servlet共享同一个request对象。

   (3)实现转发的API

protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		//1.使用RequestDispatcher对象封装目标资源的绝对路径
		RequestDispatcher dispatcher = request
				.getRequestDispatcher("/pages/login.html");
		//2.调用RequestDispatcher对象的forward()方法“前往”目标资源
		//注意:传入的参数必须是传递给当前Servlet的service方法的那两个ServletRequest和ServletResponse对象
		dispatcher.forward(request, response);
	}
请求重定向

一个web资源收到客户端请求后,通知客户端去访问另外一个web资源,称之为请求重定向。

在这里插入图片描述

分析:

   (1)Servlet接收到浏览器端请求并处理完成后,给浏览器端一个特殊的响应,这个特殊的响应要求浏览器去请求一个新的资源,整个过程中浏览器端会发出两次请求,且浏览器地址栏会改变为新资源的地址。

   (2)在重定向请求情况下,原Servlet和目标资源之间就不能共享请求域数据。

   (3)实现重定向的API

protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		//1.调用HttpServletResponse对象的sendRedirect()方法
		//2.传入的参数是目标资源的绝对路径
		response.sendRedirect(request.getContextPath()+"/pages/login.html);
	}
两者区别
请求转发(由服务器解析)请求重定向(由浏览器解析)
浏览器地址不改变改变
客户端发送请求次数12
是否共享request对象数据
能否共享目标资源WEB-INF下资源

 ☝上述分享来源个人总结,如果分享对您有帮忙,希望您积极转载;如果您有不同的见解,希望您积极留言,让我们一起探讨,您的鼓励将是我前进道路上一份助力,非常感谢!我会不定时更新相关技术动态,同时我也会不断完善自己,提升技术,希望与君同成长同进步!

☞本人博客:https://coding0110lin.blog.youkuaiyun.com/  欢迎转载,一起技术交流吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值