ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Servlet跳转页面

2021-04-26 18:58:51  阅读:202  来源: 互联网

标签:浏览器 重定向 URL sendRedirect 跳转 Servlet 页面


Servlet跳转页面

查看详情点击这里

servlet跳转页面的方法:
跳转分为两部分,一部分发生在servlet,另一部分发生在JSP,JSP就是servlet,但是两者还是有部分差异。

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

(1)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

二、JSP:

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

(2)response.setHeader(“Location”,"");
跳转后浏览器地址栏发生变化,此语句后面的语句执行完成后才能发生调转

(3)<jsp:forward page=""/>
跳转后浏览器地址栏不变,但是只能跳转到当前主机下,此语句后面的执行语句执行完成后才会跳转。

三、请求转发 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内的对象将无法使用。

标签:浏览器,重定向,URL,sendRedirect,跳转,Servlet,页面
来源: https://blog.csdn.net/weixin_40912987/article/details/116167119

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有