转发和重定向的原理及区别

原理:
转发是在服务端完成的事情,是对客户端的同一个request请求进行传递,浏览器并不知道(不产生新的请求)。(相当于拨打110,然后110内部给你分配到所属辖区)
重定向是浏览器来做的事情,重定向时,服务器返回一个状态是302的的response,里面包含了跳转的地址,由浏览器获得后,自动发送一个新的请求(产生新的请求)。(相当于拨打114查号台,然后根据返回的号码再次拨打)

区别:
1、语句不同
转发:request.getRequestDispatcher(path).forward(request, response);
重定向:response.sendRedirect(path);
2、是否可以共享request中的数据
转发:可以
重定向:不可以
3、跳转之后的显示地址
转发:跳转之前的地址
重定向:跳转之后的地址
4、原理不同
5、效率的不同
转发:高
重定向:低
6、跳转的范围是不一样的
转发:跳转的最大的范围就是当前服务器内
重定向:互联网中任意资源的位置
7、 路径支持的格式
绝对路径
转发:不支持
重定向:支持
根路径 (统一使用)转发和重定向都支持;
”/“的含义
转发:当前的项目的名称
重定向:当前的服务器
相对路径(相对本身) 都支持;
8、是否重复提交表单
转发:会重复的提交表单数据
重定向:不会

  选择依据:
  
  A、如果响应的时候需要跳转到外网的服务器只可以使用重定向
  
  **B、跳转的时候如果需要携带数据,那么使用转发**
  
  C、是否涉及表单的重复提交,如果强调了不可以重复的提交表单那么跳转的时候只可以使用重定向
请求转发重定向都是HTTP协议中常用的两种跳转方式,它们的区别在于跳转的方式不同。请求转发是在服务器端进行的跳转操作,而重定向则是在客户端进行的跳转操作。下面我将分别介绍两种跳转方式的流程和原理。 ## 请求转发 请求转发是指在服务器端将一个请求转发给另一个资源进行处理。在这个过程中,浏览器只发起了一次请求,服务器端将这个请求转发给了另一个资源,并将处理结果返回给浏览器。 请求转发的流程如下: 1. 浏览器向服务器发送请求。 2. 服务器接收到请求后,根据请求的URL地址找到对应的Servlet或JSP。 3. Servlet或JSP处理请求,生成响应结果。 4. Servlet或JSP将响应结果转发给另一个Servlet或JSP进行处理。 5. 最后,另一个Servlet或JSP将处理结果返回给浏览器。 请求转发原理是通过request对象的forward()方法实现。具体来说,当Servlet或JSP处理请求时,可以通过request对象获取到ServletContext对象,通过ServletContext对象获取到RequestDispatcher对象,然后通过RequestDispatcher对象的forward()方法将请求转发给另一个Servlet或JSP进行处理。 ## 重定向 重定向是指在客户端浏览器中发起一个新的请求,请求的URL地址指向另一个资源。在这个过程中,浏览器会向服务器发送两次请求,第一次请求是原始请求,第二次请求是重定向后的请求。 重定向的流程如下: 1. 浏览器向服务器发送请求。 2. 服务器接收到请求后,根据请求的URL地址找到对应的Servlet或JSP。 3. Servlet或JSP处理请求,生成响应结果。 4. Servlet或JSP将响应结果返回给浏览器,并在响应头中设置Location属性,指向另一个资源。 5. 浏览器收到响应后,根据Location属性的值向服务器发送另一个请求,请求的URL地址指向重定向后的资源。 6. 服务器接收到新的请求后,根据请求的URL地址找到对应的资源。 7. 最后,服务器将处理结果返回给浏览器。 重定向原理是通过response对象的sendRedirect()方法实现。具体来说,当Servlet或JSP处理请求后,可以通过response对象的sendRedirect()方法设置Location属性,然后将响应结果返回给浏览器。浏览器收到响应后,会根据Location属性的值向服务器发送另一个请求,请求的URL地址指向重定向后的资源。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值