java web jsp(四)forward()与sendRedirect区别

request.sendRedirect()

1)response和request一样都是jsp内置对象,request是获取用户的请求,response处理用户请求。
2) 这种方式是在客户端作的重定向处理。该方法通过修改HTTP协议的HEADER部分,对浏览器下达重定向指令的,让浏览器对在location中指定的URL提出请求,使浏览器显示重定向网页的内容。该方法可以接受绝对的或相对的URLs。如果传递到该方法的参数是一个相对的URL,那么Web container在将它发送到客户端前会把它转换成一个绝对的URL。
3)使用sendRedirect()时网址会发生变化,可以把sendRedirect()看作是一个客户端的跳转,
缺点:速度慢

forward

1)java web jsp(四)forward()与sendRedirect区别
2)执行步骤:
a) 浏览器访问Servlet1;
b) Servlet1想让Servlet2对客户端的请求进行响应,于是调用forward()方法,将请求转发 给Servlet2进行处理。
c) Servlet2对请求请出响应。

从上图的交互过程可以看出,调用forward()方法,对浏览器来说是透明的,浏览器并不知道为其服务的Servlet已经换成Servlet2了,它只知道发出了一个请求,获得了一个响应。而地址栏显示的URL始终会是原始请求的URL,fordward()调用是可以直接传参的,fordward()的 调用是在服务端完成的,故速度快。

区别

1)forward:于服务器端工作,速度快,重定的网址是服务器的内部,可以传递参数
sendRedirect:于客户端工作,速度慢,它可以在服务器内外使用。它可以将响应重定向到另一个资源,这个资源可以是servlet,jsp,或html文件。它接受相对和绝对的url.也因为它是接受url,若sendRedirect要传递参数则需要在url后面加上需要传递的参数

标记参考详细博文方便跳转:https://blog.****.net/lcfigo1/article/details/6493042
https://blog.****.net/xuxurui007/article/details/7755792