forward和redirect的区别,说法错误的是
forward和redirect是在Web开发中常用的两个技术,它们的主要区别在于:1. forward是服务器内部的重定向,客户端请求的页面不变,而是由服务器直接转发到新的页面,因此客户端浏览器地址栏中的URL不变,仍然是原来的URL;而redirect则是服务器告诉客户端浏览器需要请求新的页面,客户端浏览器会发送新的请求从而改变URL。2. forward不会改变HTTP请求的方法,即请求的方法仍然是原来的,而redirect会将HTTP请求方法改为GET,即使原来的请求方法是POST。3. forward是在服务器内部完成,不需要客户端浏览器的参与,而redirect则需要客户端浏览器重新发送请求,因此redirect的开销比forward要大。因此,说法错误的是:forward和redirect是同样的技术,它们的主要区别在于使用的场景不同。
forward和redirect的区别
1、请求方不同redirect:客户端发起的请求forward:服务端发起的请求2、浏览器地址表现不同redirect:浏览器地址显示被请求的urlforward:浏览器地址不显示被请求的url3、参数传递不同redirect:重新开始一个request,原页面的request生命周期结束。forward:forward另一个连接的时候。request变量是在其生命周期内的。另一个页面也可以使用,其实质是把目标地址include。 4、底层运作不同redirect:发送的请求信息又回送给客户机,让客户机再转发到另一个资源上,需要在服务器和客户机之间增加一次通信。forward:服务器端直接找到目标,并include过来。5、定义不同直接转发方式(Forward):客户端和浏览器只发出一次请求,Servlet、HTML、JSP或其它信息资源,由第二个信息资源响应该请求,在请求对象request中,保存的对象对于每个信息资源是共享的。间接转发方式(Redirect)实际是两次HTTP请求,服务器端在响应第一次请求的时候,让浏览器再向另外一个URL发出请求,从而达到转发的目的。参考资料来源:百度百科-forward参考资料来源:百度百科-redirect
java:forward 和redirect的区别是什么?
forward是服务器内部重定向,redirect则是服务器收到请求后发送一个状态头给客户。forward是服务器内部重定向,程序收到请求后重新定向到另一个程序,客户机并不知道。redirect则是服务器收到请求后发送一个状态头给客户,客户将再请求一次,这里多了两次网络通信的来往。forward也有缺点,就是forward的页面的路径如果是相对路径就会有些问题了。forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器。redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用 sendRedirect。
JAVA常见面试题之Forward和Redirect的区别
1.从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.所redirect等于客户端向服务器端发出两次request,同时也接受两次response。
2.从数据共享来说
forward:转发页面和转发到的页面可以共享request里面的数据.
redirect:不能共享数据.
redirect不仅可以重定向到当前应用程序的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源.
forward,方法只能在同一个Web应用程序内的资源之间转发请求.
forward 是服务器内部的一种操作.
redirect 是服务器通知客户端,让客户端重新发起请求.
所以,你可以说 redirect 是一种间接的请求, 但是你不能说"一个请求是属于forward还是redirect "
3.从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.
4.从效率来说
forward:高.
redirect:低.
总结:
A.Redirect等于客户端向服务器发出两次request,同时也接受到两次response
Forward却只是一次request一次response
相比之下,Forward性能更高。
B.Forward能够存储request Scope的Attribute而Redirect却不行。
C.Forward的同时URL并不会变。
D.Forward需要在Servlet中需要通过一个Dispatcher来实现。
E.Redirect能够防止某些情况下客户端Refresh造成的一些未知后果(例如连续删除)