请求转发:
request.getRequestDispatcher(URL地址).forward(request, response)
处理流程:
- 客户端发送请求,Servlet做出业务逻辑处理。
- Servlet调用forword()方法,服务器Servlet把目标资源返回给客户端浏览器。
2)重定向:
response.sendRedirect(URL地址)
处理流程:
- 客户端发送请求,Servlet做出业务逻辑处理。
- Servlet调用response.sendReadirect()方法,把要访问的目标资源作为response响应头信息发给客户端浏览器。
- 客户端浏览器重新访问服务器资源xxx.jsp,服务器再次对客户端浏览器做出响应。
- 重定向(redirect)和转发(forward)的区别:
- 请求的次数:
- Redirect:发起两次请求,并响应两次
- Forward:只一次请求一次响应
- Request请求中的内容不同
- Redirect:第一次请求中的内容丢失
- Forward:请求的内容会保存
- 地址栏的变化:
- Redirect:地址栏显示的最终响应的资源
- Forward:地址栏中显示的第一次请求的资源
- 资源的位置
- Redirect:可以是任何位置,WEB-INF,META-INF下无法访问
- Forward:只能是本项目中的位置,本项目中的任何位置都可以
- 发起的位置不同
- Redirect:在客户端发起
- Forward:在服务器端发起
- 对象不同
- Redirect:是通过 HttpServletResponse对象完成的
- Forward:是通过 RequestDispatcher接口的forward方法完成
- 请求的次数:
- 选择的依据:
- 如果要访问WEB-INF中的资源,必须使用转发
- 如果要访问本项目以外的资源,必须使用重定向
3.是否需要把request中的内容传递给下一个资源