forward与redirect

本文详细阐述了HTTP中forward(转发)与redirect(重定向)的主要区别:从地址栏显示、数据共享、运用场景及效率等方面进行对比。forward主要用于用户登录后的模块跳转,而redirect则适用于用户注销或跨站跳转。
1.从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.
2.从数据共享来说
forward:转发页面和转发到的页面可以共享request里面的数据.
redirect:不能共享数据.
3.从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.
4.从效率来说
forward:高.
redirect:低.

forward不会走 过滤器

forward 是服务器内部的一种操作.
redirect 是服务器通知客户端,让客户端重新发起请求.

### 回答1: forwardredirect都是用于页面跳转的技术,但它们的实现方式和效果有所不同。 forward是服务器端的跳转,它是在服务器内部完成的,客户端并不知道页面发生了跳转。在forward过程中,浏览器的地址栏不会发生变化,而且浏览器只会发送一次请求。forward通常用于在同一个应用程序内部进行页面跳转,比如在Servlet中使用RequestDispatcher.forward()方法。 redirect是客户端的跳转,它是通过向浏览器发送一个重定向响应来实现的。在redirect过程中,浏览器会发送两次请求,第一次请求是用户请求原始页面,第二次请求是用户请求重定向后的页面。在redirect过程中,浏览器的地址栏会发生变化。redirect通常用于在不同的应用程序之间进行页面跳转,比如在Servlet中使用response.sendRedirect()方法。 总的来说,forward是服务器端的跳转,redirect是客户端的跳转。forward的效率比redirect高,因为它只需要在服务器内部进行页面跳转,而redirect需要向浏览器发送两次请求。但是,redirect可以实现在不同应用程序之间的页面跳转,而forward只能在同一个应用程序内部进行页面跳转。 ### 回答2: Forwardredirect是web开发中经常使用的两个关键词,它们都可以用来想客户端发送请求,但实际上它们有着很大的不同。 Forward指的是在服务器端将一个请求转发给另外一个资源或者Servlet/ JSP程序进行处理,这个过程是在服务器内部进行的,客户端并不会收到任何响应。Forward有很多好处,最主要的是它能够提高应用的性能,因为它避免了客户端向不同的服务器发送请求,从而减少了网络带宽的占用。 Redirect则是通过向客户端发送一个HTTP重定向响应,让客户端请求另一个URL,客户端会向另一个URL发送新的请求,这时服务器会重新响应这个请求。Redirect的最大优点是它能够向客户端提供一个新的URL地址,这个地址可以被保存、书签或者复制,这样客户端下一次访问时就可以直接使用这个地址,不用去查询服务器。 Forwardredirect还有其他的区别: 1.Forward是在服务器端完成的,Redirect则是在客户端完成的。 2.Forward可以在两个不同的Web组件之间传递数据,而Redirect则不能。 3.Forward不会改变URL地址,而Redirect则会。例如在jsp页面中用forward跳转到另外一个jsp页面: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.getRequestDispatcher("/welcome.jsp").forward(request, response); %> 在jsp页面中用redirect跳转到另外一个jsp页面: <% response.sendRedirect("welcome.jsp"); %> 前者的页面地址会保持不变,后者的页面地址会变成目标地址。 总之,ForwardRedirect都是很重要的web技术,根据实际应用场景需要灵活运用。不同的场景,需要采用不同的技术以达到更好的效果。 ### 回答3: Forwardredirect都是HTTP协议中的常用指令,它们都可以用来跳转页面,但是它们的具体实现方式和作用是有所不同的。 首先,Forward是服务器端的跳转指令,即在服务器端调用一个本地资源并将其返回给用户,用户的浏览器并不知道这个过程。Forward跳转一般是用于解决业务逻辑问题或者进行页面间的跳转,主要体现在Servlet技术上,应用比较广泛,可以在同一Web应用程序的不同Servlet之间实现跳转,而且Forward跳转不会增加地址栏中的URL。 而redirect则是浏览器端的跳转指令,也就是浏览器会首先请求服务器并得到相应的响应,然后浏览器根据响应重新发起请求到服务器。这种跳转方式又被称为重定向,其作用是将客户端重定向到另一个URL地址上,一般用于跨Web应用程序或者是页面的重定向,用户的浏览器地址栏中会显示重定向URL地址。 总之,Forward用于在同一Web应用程序的Servlet之间跳转,可以在Web应用程序内部进行页面跳转,不会改变URL地址,用户体验较好;而redirect则可以跨Web应用程序进行页面跳转,在浏览器地址栏上会显示重定向的URL地址,会给用户带来一定的不便。因此,在使用跳转指令时,需要根据具体情况来选择适合的方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值