Servlet重定向

重定向属于客户端行为。服务器在收到客户端请求后,会通知客户端浏览器重新向另外一个 URL 发送请求,这称为请求重定向。它本质上是两次 HTTP 请求,对应两个 request 对象和两个 response 对象。

重定向的工作流程

重定向的工作流程如下:

Servlet重定向

  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。若指定的 URL 是相对路径,Servlet 容器会将相对路径转换为绝对路径。参数 location 表示重定向的URL。

 

上一篇:linux(文件相关操作命令)


下一篇:JavaWeb学习笔记(狂神版)--- 第六节 ServletContext对象及其应用