1.拦截器HandlerInterceptor
1.1 执行流程图
2.转发和重定向
- request.getRequestDispatcher().forward()转发,只能将请求转发给同一个WEB应用中的组件。response.sendRedirect()重定向,不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。
- 重定向访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。
- 重定向,访问服务器两次。转发,访问服务器一次。
- 转发,共享相同的request对象和response对象,它们属于同一个访问请求和响应过程。重定向,使用各自的request对象和response对象,它们属于两个独立的访问请求和响应过程。
转发和跳转的小结
1、转发使用的是getRequestDispatcher()方法;重定向使用的是sendRedirect();<br /> 2、转发:浏览器URL的地址栏不变。重定向:浏览器URL的地址栏改变;<br /> 3、**转发是服务器行为**,**重定向是客户端行为**;<br /> 4、转发是浏览器只做了一次访问请求。重定向是浏览器做了至少两次的访问请求;<br /> 5、转发2次跳转之间传输的信息不会丢失,重定向2次跳转之间传输的信息会丢失(request范围)。
使用场景(重定向)
- 避免表单重新提交
- 请求外部网站