重定向属于客户端行为。服务器在收到客户端请求后,会通知客户端浏览器重新向另外一个URL发送请求,这称为请求重定向。它本质上是两次HTTP请求,对应两个request对象和两个response对象。
重定向的工作流程
重定向的工作流程如下:
1、用户在浏览器中输入URL,请求访问服务器端的Web资源。
2、服务器端的Web资源返回一个状态码为302的响应信息,该响应的含义为:通知浏览器再次发送请求,访问另一个Web资源(在响应信息中提供了另一个资源的URL)。
3、当浏览器接收到响应后,立即自动访问另一个指定的Web资源。
4、另一Web资源将请求处理完成后,由容器把响应信息返回给浏览器进行展示。
转发和重定向的区别
转发和重定向都能实现页面的跳转,但是两者也存在以下区别。
区别 | 转发 | 重定向 |
浏览器地址栏 URL 是否发生改变 | 否 | 是 |
是否支持跨域跳转 | 否 | 是 |
请求与响应的次数 | 一次请求和一次响应 | 两次请求和两次响应 |
是否共享 request 对象和 response 对象 | 是 | 否 |
是否能通过 request 域对象传递数据 | 是 | 否 |
速度 | 相对要快 | 相对要慢 |
行为类型 | 服务器行为 | 客户端行为 |
response.sendRedirect()
HttpServletResponse接口中的sendRedirect()方法用于实现重定向。
返回值类型 | 方法 | 描述 |
void | sendRedirect(String location) | 向浏览器返回状态码为 302 的响应结果,让浏览器访问新的 URL。若指定 |