1.什么是重定向?
这里说的重定向是由http协议规定的一种机制。其工作流程如下所述。
(1)客户端发起http请求,访问服务器端组件。
(2)服务器端返回一个状态代码为302的响应结果。该代码的意思是让浏览器再访问另一个组件,响应结果中包含着访问新组件的url地址。新的访问组件可能在同一个应用中也可能不在同一个应用中。
(3)当浏览器接受到这种结果,会自动访问新的url.
(4)浏览器端接受新的url返回结果。
二.Servlet实现重定向的方法
1,运用javax.servlet.RequestDispatcher接口的forward方法,
2,或者运用javax.servlet.http.HttpServletResponse接口的sendRedirect方法。
要运用RequestDispatcher接口的forward方法,首先要得到一个RequestDispatcher对象。servlet技术提供了三种方式来得到它:
- 通过运用javax.servlet.ServletContext接口的getRequestDispatcher方法,将一个包含路径的String传递给其它资源。该路径是相对于ServletContext的根路径的。
- 通过运用javax.servlet.ServletRequest接口的getRequestDispatcher方法,将一个包含路径的String传递到其它资源。该路径是相对于当前的HTTP请求的。
- 通过运用javax.servlet.ServletContext接口的getNamedDispatcher方法,传递一个包含其它资源名字的String。
三.重定向的特点
扫描二维码关注公众号,回复:
14683044 查看本文章
1. 地址栏会发生变化,显示的是转向的其他站点的地址
2. 重定向可以访问其他网站的资源
3. 重定向对浏览器做的是两次请求,并且不能使用request对象来存储和共享数据
4. 重定向是客户端行为
四.重定向与请求转发的区别
重定向:客户端重新发送新的请求,无法request携带数据。地址栏会发生改变。
请求转发: 地址栏不会发生改变,在服务器端完成,效率高 使用request携带数据。