首页 > 试题广场 >

sendRedirect()和forward()方法有什么区

[问答题]
sendRedirect()和forward()方法有什么区别?

URL重定向的特点:

1):浏览器地址栏路径发送变化

2):只发送了两个请求.

3):因为是不同的请求,所以不能共享请求中的数据.

4):可以跨域访问资源.

5):不可以访问WEB-INF中的资源.

请求转发的特点:

1):浏览器地址栏路径没变

2):只发送了一个请求.

3):共享同一个请求,在请求敏感词享数据.

4):只能访问当前应用中的资源,不能跨域跳转.

5):可以访问WEB-INF中的资源.

请求转发和URL重定向的选择?

1:若需要共享请求中的数据,只能使用请求转发.

2:若需要访问WEB-INF中的资源,只能使用请求转发.

3:若需要跨域访问,只能使用URL重定向.

4:请求转发可能造成表单的重复提交问题.

5:其他时候,任选.

编辑于 2017-08-15 21:29:13 回复(3)
forward是服务器内部的跳转,浏览器的地址栏不会发生变化,同时可以把request和response传递给后一个请求。sendRedirect()是浏览器方面的跳转,要发送两次请求,地址栏也会发生变化,同时request和response也会发生变化,重新生成新的对象。
发表于 2016-09-10 10:19:49 回复(1)
区别:
转发:客户端只发送一次请求,地址栏不变,转发能够传递数据,转发也是一个域对象
重定向:客户端发送两次请求,地址栏发生改变,不能传递数据,可以跳转到其它应用上
发表于 2017-06-30 16:10:18 回复(0)
forward是服务器跳转,跳转后页面的地址栏不会改变,redirect是客户端跳转,跳转后页面地址栏会发生改变
发表于 2016-02-27 06:48:34 回复(0)
当浏览器访问地址A时: ①sendRedirect()让客户端去访问另外一个地址B,执行sendRedirect()后浏览器地址栏中的地址显示的是地址B。这个方式地址A和地址B之间不能共享数据。 ②forward()是地址A预先处理请求,然后地址A去寻找地址B,让地址B接着去处理请求。然后将响应发送给客户端(这里是B自己将响应发送给客户端,还是地址A将响应发送给客户端呢??)。这个方式浏览器地址栏显示的一直是地址A,两个地址之间能共享数据。
发表于 2016-10-11 09:14:02 回复(0)

l forward和redirect的区别

转发过程:客户浏览器发送http请求——》web服务器接受此请求——》调用内部的一个方法在容器内部完成请求处理和转发动作——》将目标
资源发送给客户;在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。
在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。 重定向,其实是两次request

第一次,客户端request?? A,服务器响应,并response回来,告诉浏览器,你应该去B。这个时候IE可以看到地址变了,而且历史的回退按钮也亮了。
重定向可以访问自己web应用以外的资源。在重定向的过程中,传输的信息会被丢失。

举个通俗的例子:

直接转发就相当于:“A找B借钱,B说没有,B去找C借,借到借不到都会把消息传递给A”;

间接转发就相当于:"A找B借钱,B说没有,让A去找C借"。

编辑于 2019-10-26 14:42:28 回复(0)
forward是服务器内部的跳转,浏览器的地址栏不会发生变化,同时可以把request和response传递给后一个请求。sendRedirect()是浏览器方面的跳转,要发送两次请求,地址栏也会发生变化,同时request和response也会发生变化,重新生成新的对象
发表于 2019-05-03 21:34:49 回复(0)
1.转发在服务器端完成的;重定向是在客户端完成的
2.转发的速度快;重定向速度慢
3.转发的是同一次请求;重定向是两次不同请求
4.转发不会执行转发后的代码;重定向会执行重定向之后的代码
5.转发地址栏没有变化;重定向地址栏有变化
6.转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成
发表于 2018-06-06 19:41:22 回复(0)
sendredirect 是重定向是服务器外部请求,会产生新的请求和响应,url 发生变化 forward是转发。是服务器内部请求,是将处理后的请求交给其他的方法来处理 ,URL 不改变
发表于 2020-10-14 23:43:14 回复(0)
请求转发是在一个服务下请求的跳转,它的地址栏不会变化,转发前后是共享数据的,而重定向则是可以从一个服务跳转到另一个服务中去,是两次请求,因此数据不会共享,地址栏会变
发表于 2019-11-28 00:38:48 回复(0)
sendRedirect()方***创建一个新的请求,而forward()方法只是把请求转发到一个新的目标上。重定向(redirect)以后,之前请求作用域范围以内的对象就失效了,因为会产生一个新的请求,而转发(forwarding)以后,之前请求作用域范围以内的对象还是能访问的。一般认为sendRedirect()比forward()要慢。
发表于 2019-05-02 12:42:01 回复(0)
重定向 转发
发表于 2019-04-30 10:06:21 回复(0)
sendRedirect()方***创建一个新的请求,而forward()方法只是把请求转发到一个新的目标上。重定向(redirect)以后,之前请求作用域范围以内的对象就失效了,因为会产生一个新的请求,而转发(forwarding)以后,之前请求作用域范围以内的对象还是能访问的。一般认为sendRedirect()比forward()要慢。
发表于 2019-04-29 18:46:00 回复(0)
sendRedirect会创建一个请求,而forward是将请求转发到一个新的目标上。 重定向后,以前作用域的对象会消失。因为又创建了一个请求,而forward还可以访问以前作用域的对象。一般重定向比forward慢
编辑于 2019-04-26 22:34:51 回复(0)

sendRedirect()方***创建一个新的请求,而forward()方法只是把请求转发到一个新的目标上。重定向(redirect)以后,之前请求作用域范围以内的对象就失效了,因为会产生一个新的请求,而转发(forwarding)以后,之前请求作用域范围以内的对象还是能访问的。一般认为sendRedirect()比forward()要慢。


编辑于 2018-08-09 07:52:36 回复(0)
forward()仅是容器中控制权的转向器,在客户端浏览器地址栏中不会显示转向后的地址。sendRedirect()则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。因此,从浏览器地址栏中可以看到跳转后的链接地址。所以,forward()方法更加高效,在forward()可以满足需求时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。
发表于 2017-10-04 14:43:15 回复(0)
* 请求转发和重定向的区别
> 请求转发是一个请求一次响应,而重定向是两次请求两次响应

 
> 请求转发地址栏不变化,而重定向会显示后一个请求的地址
> 请求转发只能转发到本项目其他Servlet,而重定向不只能重定向到本项目的其他Servlet,还能定向到其他项目
> 请求转发是服务器端行为,只需给出转发的Servlet路径,而重定向需要给出requestURI,即包含项目名!
> 请求转发和重定向效率是转发高!因为是一个请求!
<> 需要地址栏发生变化,那么必须使用重定向!
<> 需要在下一个Servlet中获取request域中的数据,必须要使用转发!
发表于 2017-08-14 16:08:17 回复(0)
sendRedirect()方***创建一个新的请求,而forward()方法只是把请求转发到一个新的目标上。重定向(redirect)以后,之前请求作用域范围以内的对象就失效了,因为会产生一个新的请求,而转发(forwarding)以后,之前请求作用域范围以内的对象还是能访问的。一般认为sendRedirect()比forward()要慢。
发表于 2015-10-29 12:10:42 回复(0)