Servlet中的跳转(redirect和forward)

Posted 冰河winner

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Servlet中的跳转(redirect和forward)相关的知识,希望对你有一定的参考价值。

Forward是通过RequestDispatcher对象的forward(HttpServletRequest request,HttpServletResponse response)方法来实现的
RequestDispatcher dispatcher = request.getRequestDispatcher("/servlet/welcom.jsp");
dispatcher.forward(request,response);


getRequestDispatcher()的参数必须以“/”开始,代表Web应用程序的根目录
当执行forward动作时不能有任何输出到客户端,否则会抛出IllegalStateException异常

Redirect是利用服务器返回的状态码来实现的,服务器通过HttpServletResponse的setStatus(int status)方法设置状态码,301代表永久重定向,302代表临时性重定向,HttpServletResponse把setStatus()与setHeader()方法封装成另一个方法sendRedirect(String url)

当使用forward形式跳转时,地址栏会显示跳转前的Servlet访问地址,因为该跳转是在服务器端实现的,对客户端浏览器是透明的
当使用redirect时,跳转是在客户端实现的,实际上请求了两次服务器,第一次获取了重定向的状态码和地址,第二次访问真实的地址

以上是关于Servlet中的跳转(redirect和forward)的主要内容,如果未能解决你的问题,请参考以下文章

SERVLET API中forward()与redirect()的区别?

SERVLET API 中 forward() 与 redirect()的区别?

java servlet中的跳转页面的问题

forward和redirect

forward和redirect理解

Servlet的request和response