1.拦截器HandlerInterceptor

1.1 执行流程图

image.png

2.转发和重定向

  1. request.getRequestDispatcher().forward()转发,只能将请求转发给同一个WEB应用中的组件。response.sendRedirect()重定向,不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。
  2. 重定向访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;请求转发过程结束后,浏览器地址栏保持初始的URL地址不变
  3. 重定向,访问服务器两次。转发,访问服务器一次。
  4. 转发,共享相同的request对象和response对象,它们属于同一个访问请求和响应过程。重定向,使用各自的request对象和response对象,它们属于两个独立的访问请求和响应过程。

SpringBoot技术点 - 图2

  • 转发和跳转的小结

    1. 1、转发使用的是getRequestDispatcher()方法;重定向使用的是sendRedirect();<br /> 2、转发:浏览器URL的地址栏不变。重定向:浏览器URL的地址栏改变;<br /> 3、**转发是服务器行为**,**重定向是客户端行为**;<br /> 4、转发是浏览器只做了一次访问请求。重定向是浏览器做了至少两次的访问请求;<br /> 5、转发2次跳转之间传输的信息不会丢失,重定向2次跳转之间传输的信息会丢失(request范围)。
  • 使用场景(重定向)

  1. 避免表单重新提交
  2. 请求外部网站