新手笔记(2) Servlet使用sendRedirect()方法和forward()方法重定向的区别

时间:2023-02-04 21:14:58

sendRedirect()方法
        response.sendRedirect(跳转页面URL)
        就是服务端根据逻辑,发送一个状态码(Location ,状态码320),告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。
        服务方(如:servlet)直接将目标URL发回浏览器,让浏览器自己自动重新向目标URL发出HTTP请求。 
        重定向是作为不同请求来看待的。

在上面我是使用了doGet的方法来实现,在此之前我在页面中传入了两个参数,而在使用sendRedirect方法进行重定向时,参数并没有被一起传输过去。

 

RequestDispatcher.forward()方法
        forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 
        服务方(如:servlet)将请求转发到同一个WEB应用程序中另一个Servlet(或:JSP)--第三方 进行处理(该过程浏览器方-客户方并不知道),让这个第三方直接将结果返回给浏览器方。

而使用forword()方法时,传入的参数也能随之一起跳转。