Servlet跳转页面的方法解说 - 极悦
专注Java教育14年 全国咨询/投诉热线:444-1124-454
极悦LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 Servlet跳转页面的方法解说

Servlet跳转页面的方法解说

更新时间:2021-06-23 16:42:13 来源:极悦 浏览689次

servlet跳转页面的方法:

跳转分为两部分,一部分发生在servlet,另一部分发生在JSP,JSP就是servlet,但是两者还是有部分差异。

1.Servlet:(跳转发生在doGet,doPost等方法里)

(1)redirect方式

response.sendRedirect("/index.jsp");页面的路径是相对路径。sendRedirect可以将页面跳转到任何页面,不一定局限于web应用中,如:response.sendRedirect(“http://www.baidu.com”);

跳转后浏览器地址发生变化,只能在url总带parameter或者放在session中,无法使用request.setAttribute来传递值。

(2)forward方式

request.getRequestDispatcher("/index.jsp").forward(request,response);页面的路径是对路径。forward方式只能跳转到本web应用中的页面上。跳转后地址栏不会发生变化。使用这种方式跳转,传值可以使用三种方法:url中带parameter,session,request.setAttribute

2.JSP

(1)response.sendRedirect();

和servlet的response.sendRedirect()方式一样,

跳转后浏览器地址栏会变化,如果要跳转到不同主机下,跳转后,此语句后面的语句,如同新开了线程,但是对response的操作已经没有意义了;如果要跳到相同主机下,此语句后面的语句执行完成后才会跳转;

(2)response.setHeader(“Location”,"");

跳转后浏览器地址栏发生变化,此语句后面的语句执行完成后才能发生调转

(3)jsp:forward page=""/

跳转后浏览器地址栏不变,但是只能跳转到当前主机下,此语句后面的执行语句执行完成后才会跳转。

3.请求转发RequestDispatcher.forward方法和响应(重定向)转发HttpServletResponse.sendRedirect方法的总结比较:

  • RequestDispatcher.forward方法只能将请求转发给同一个web应用中的组件,而HttpServletResponse.sendRedirect方法不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。如果传递给HttpServletResponse.sendRedirect方法的相对URL以"/“开头,它是相对于整个web站点的根目录;如果创建RequestDispatcher对象时指定的相对URL以”/"开头,它是相对于当前web应用程序的根目录。
  • 调用HttpServletResponse.sendRedirect方法重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址重定向为目标URL;而调用RequestDispatcher.forward方法的请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。
  • HttpServletResponse.sendRedirect方法对浏览器请求直接作出响应,响应的结果就是告诉浏览器重新发出对另一个URL的访问请求;RequestDispatcher.forward方法在服务器端内部发生了转发行为。
  • RequestDispatcher.forward方法的调用者与被调用者之间共享相同的request对象,它们属于同一个访问请求和响应过程;而HttpServletResponse.sendRedirect方法调用者与被调用者使用各自的request对象和response对象,它们属于两个独立的访问请求和响应过程。对于同一个web应用程序的内部资源之间的跳转,特别是跳转之前要对请求进行一些前期预处理,并使用HttpServletRequest.setAttribute方法传递预处理结果,那就应该使用RequestDispatcher.forward方法。不同web应用程序之间的重定向,特别是要重定向到另一个web站点上的资源情况,都应该使用HttpServletResponse.sendRedirect方法。
  • 无论哪种方法,在调用它们之前,都不能有内容已经被实际输出到了客户端。如果缓冲区已经有了一些内容,这些内容将从缓冲区中清除。

重定向和请求转发有一个重要的不同:

当使用请求转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程。与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求。因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL,而当使用转发时,该URL会保持不变。重定向的速度比转发慢,因为浏览器还得发出一个新的请求。同时,由于重定向方式产生了一个新的请求,所以经过一次重定向后,request内的对象将无法使用。

以上就是极悦小编介绍的"Servlet跳转页面的方法解说",希望对大家有帮助,想了解更多可查看Servlet教程技术文档,如有疑问,请在线咨询,有专业老师随时为您服务。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>