首页 > 试题广场 >

Servlet中forward()与sendRedirect

[问答题]
Servlet中forward()与sendRedirect()的区别?
推荐
在Servlet(JSP)中Forward与Redirect 的区别:
1.forward重定向是在容器内部实现的同一个Web应用程序的重定向,所以forward方法只能重定向到同一个Web应用程序中的一个资源,重定向后浏览器地址栏URL不变,而sendRedirect方法可以重定向到任何URL, 因为这种方法是修改http头来实现的,URL没什么限制,重定向后浏览器地址栏URL改变。forward重定向将原始的HTTP请求对象(request)从一个servlet实例传递到另一个实例,而采用sendRedirect方式两者不是同一个application。
基于第二点,参数的传递方式不一样。forward的form参数跟着传递,所以在第二个实例中可以取得HTTP请求的参数。sendRedirect只能通过链接传递参数,response.sendRedirect(“login.jsp?param1=a”)。
2.sendRedirect能够处理相对URL,自动把它们转换成绝对URL,如果地址是相对的,没有一个‘/’,那么Web container就认为它是相对于当前的请求URI的。比如,如果为response.sendRedirect("login.jsp"),则会从当前servlet 的URL路径下找login.jsp: http://10.1.18.8:8081/dms/servlet/Servlet 重定向的URL: http://10.1.18.8:8081/dms/servlet/login.jsp,如果为response.sendRedirect("/login.jsp")则会从当前应用径下找 url:http://10.1.18.8:8081/login.jsp。而forward不能这样处理相对路径。
编辑于 2015-02-04 20:36:28 回复(0)
记住最简单暴力的,forward地址栏不会变,另外一个会变
发表于 2017-03-09 11:40:06 回复(0)
两者的区别:

1.redirect 方式可以跨应用访问,forward 只能在同一个应用中跳转。

2.forward 客户端访问服务器,服务器找到要跳转的相应URL并执行返回给客户端。客户端的地址栏显示的是原始URL。

redirect 客户端访问服务器,服务器找到要跳转的URL并将URL发给客户端,再由客户端对新的URL重新发送请求。客

户端的地址栏显示的是第二次请求的URL。

3.数据的传输:在request中的数据,forward可以访问,redirect不行,因为redirect已经是一个新的请求

发表于 2020-07-14 15:34:23 回复(0)
forward是服务端行为,自动帮你转发,sendRedirect是客户端行为需要你重新请求资源
发表于 2017-08-21 19:39:51 回复(0)