forward()与redirect()的区别

Servlet API中forward()与redirect()的区别?

a、从地址栏显示来说

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览 器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.所以redirect等于客 户端向服务器端发出两次request,同时也接受两次response。
b、从数据共享来说
forward:转发页面和转发到的页面可以共享request里面的数据.redirect:不能共享数据.redirect不仅可以重定向到当前应用程序 的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源.forward方法 只能在同一个Web应用程序内的资源之间转发请求.forward 是服务器内部的一种操作.redirect 是服务器通知客户端,让客户端重新发起请求.所以,你可以说 redirect 是一种间接的请求, 但是你不能说"一个请求是属于forward还是redirect "。
c、从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块. redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.
d、从效率来说
forward:高. redirect:低.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答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
发出的红包

打赏作者

、ZJL

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

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

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

打赏作者

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

抵扣说明:

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

余额充值