转发重定向区别


在这里插入图片描述

一、重定向与转发的区别

重定向:								转发:
	访问服务器两次         	 			 只访问服务器一次
	
	浏览器 url 发生变化		 			 只能看见第一次访问的页面 url,以后的操作有服务器完成
	
	跳转后必须要加上 return,否则页面		 只执行跳转页面,后面代码不会再执行
	虽然跳转了,可是还会执行跳转之后的语句
	
	可访问自己 web 应用以外的资源
	# 在 request 级别使用信息共享,使用重定向必然出错
	

二、调用方式

// 我们知道,在servlet中调用转发、重定向的语句如下: 
request.getRequestDispatcher("new.jsp").forward(request, response); // 转发到new.jsp 
response.sendRedirect("new.jsp"); // 重定向到new.jsp 

<!-- 在jsp页面中你也会看到通过下面的方式实现转发:--> 
<jsp:forward page="apage.jsp" /> 

<!-- 当然也可以在jsp页面中实现重定向:--> 
<%response.sendRedirect("new.jsp");//重定向到new.jsp%> 

三、本质区别

-- 转发时服务器行为,重定向时客户端行为
-- 转发:
	客户端浏览器发送 http 请求,web服务器接收请求,调用内部的一个方法在容器内部完成请求处理和转发动作,将目标资源发送给客户。
	
	转发的路径必须是同一个 web 容器下的 url,不能转向到其他的 web 路径上去,中间传递的是自己容器内部的 request。
	
	在客户端浏览器显示的仍然是第一次访问的路径,即客户端是感觉不到服务器是做了转发的。
	-- 转发行为是浏览器只做了一次访问请求
----------------------------------------------------
-- 重定向
	客户端浏览器发送 http 请求,web服务器接收后发送--302状态响应码、应新的 location
	给客户端浏览器,客户端发现是302响应,则自动再发送一个新的 http 请求,请求 url 实心的location 地址,服务器根据次请求寻找资源并发送给客户端。
	在这里 location 可以重定向到任意 url,所以并没有 request 传递的概念了。
	在客户端浏览器路径栏显示的是其重定向的路径。
	重定向行为浏览器至少做了两次访问请求。
	
	
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值