Spring Boot请求转发和重定向

Spring BootJava大约 700 字

区别

转发

  • 由服务端完成;
  • 地址栏不发生变化,显示的转发前的地址(针对浏览器);
  • 只发生一次请求;
  • 请求中携带的参数不会丢失;

重定向

  • 服务端告诉浏览器或客户端重定向的地址,由客户端再次发起请求;
  • 地址栏显示重新向后的地址(针对浏览器);
  • 发生了两次请求;
  • 第一次请求的参数不会带到重定向后的请求中;

请求链路

转发

  1. 浏览器 请求 服务器
  2. 服务器 转发 服务器2
  3. 服务器2 响应 浏览器

重定向

  1. 浏览器 请求 服务器
  2. 服务器 响应 浏览器
  3. 浏览器 请求 服务器2
  4. 服务器2 响应 浏览器

代码

本文仅以POST请求为例。

转发

@PostMapping("/test-forward")
public void testForward(@Valid @RequestBody ForwardQuery query, HttpServletRequest request, HttpServletResponse response) {
    request.getRequestDispatcher("https://www.baidu.com").forward(request, response);
}

重定向

@PostMapping("/test-redirect")
public void testRedirect(@Valid @RequestBody RedirectQuery query, HttpServletResponse response) {
    response.sendRedirect("https://www.baidu.com");
}
阅读 810 · 发布于 2020-03-28

————        END        ————

扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看换一批