一、
1.请求转发:
java
request.getRequestDispatcher(URL地址).forward(request, response)
【请求转发是一种服务器行为,只能转发本项目内的资源,唯独外部的可以请求到WEB-INF内的文件】
- 服务器内部行为,客户端不知道页面的实际路径。
- 请求和响应对象在服务器内部传递,地址栏不变。
- 可以共享请求数据,如请求参数和属性。
【请求转发的流程图】
2.重定向:
java
response.sendRedirect(URL地址)
【重定向是一种服务器指导的客户端行为,客户端发起第一个请求,请求被服务器接收,服务器会返回给客户一个新的地址,客户端接收到新的地址后会根据新地址去发起新的请求
重定向可以跳转到任意网站内的资源,但是访问不到web-INF内的文件】
- 客户端行为,服务器告诉客户端去访问另一个URL。
- 地址栏会变成新的URL。
- 新的请求会丢失原有请求的数据,需要通过URL参数或会话传递。
【重定向的流程图】
二. 重定向和请求转发的区别
1、重定向是两次request请求,转发是一次request请求
2、重定向之后地址栏上的地址会发生变化,变化成第二次请求的地址,转发之后地址栏上的地址不会变化,还是第一次请求的地址(参见流程图)
3、转发是服务器行为,重定向是客户端行为。重定向时浏览器上的网址改变 ,转发是浏览器上的网址不变
4、重定向时的网址可以是任何网址,转发的网址必须是本站点的网址(注意WEB-INF的特殊情况)