JavaEE中的重定向和请求转发的区别

请求转发和重定向的作用:在java后台servlet中,实现由一个servlet跳转到另一个servlet/jsp要使用的技术。

请求转发格式

request.getRequestDispatcher(URL地址).forward(request, response)

请求转发的执行流程:

  1. 客户端发送请求,Servlet做出业务逻辑处理。
  2. Servlet调用forword()方法,服务器Servlet把目标资源返回给客户端浏览器。

请求转发可以访问WEB-INF目录中的资源,不可以访问项目之外的资源,当用户发送请求之后,都交给服务器处理,地址栏不会发生变化。

 

重定向格式

response.sendRedirect(URL地址)

重定向的执行流程:

  1. 客户端发送请求,Servlet做出业务逻辑处理。
  2. Servlet调用response.sendReadirect()方法,把要访问的目标资源作为response响应头信息发给客户端浏览器。
  3. 客户端浏览器重新访问服务器资源xxx.jsp,服务器再次对客户端浏览器做出响应。

重定向既可以访问其他项目的资源,不能访问WEB-INF目录中的资源,当用户发送请求之后,服务器会给用户响应一个地址,用户再次请求,地址栏会发生变化。

 

总结:请求转发是一次请求,重定向是两次请求。请求转发可以共享请求参数 ,重定向之后,就获取不了共享参数了。重定向代表之前的请求已结束,给客户端一个新的url,让客户端重新请求去获取资源,这个url可以是站外的,效率相对于请求转发要低,之前的request域已经失效,可以通过session来获得一些参数。而转发则和它大致相反:还是同一个request请求,浏览器地址栏不发生变化,只能访问站内资源,更快!

posted @ 2021-12-19 23:17  (HelloWorld!)  阅读(110)  评论(0)    收藏  举报