联博以太坊:sendRedirect()和forward()方式的区别

admin 4个月前 (07-04) 科技 51 0

之前似乎曾经整理过,但忘了放在那里了,似乎压根就没整理过,博客里也没有,故今天重新整理一下。

我们知道页面之间的跳转有两种方式:重定向与转发

跳转:顾名思义,就是页面跳转。

虽然二者都可以实现获取响应的url资源,但首先要注重的是,重定向由sendRedirect来实现,请求转发由forward来实现。

在跳转范围上forward方式只能重定向到统一个web应用程序中的一个资源,仅仅局限在统一个服务器内;而sendRedirect方式不仅可以在位于统一主机上的差别web应用程序之间举行重定向,而且可以将客户端重定向到其它服务器上的web应用程序资源。

先给出sendRedirect方式的事情原理图:

形貌一下上图的历程:浏览器先向servlet1发送一次request请求,servlet1让servlet2为客户端服务,servlet1挪用sendRedirect方式,将客户端的request请求重定向到servlet2(告诉浏览器servlet2的位置,让浏览器重新接见servlet2,这样就会发现址栏会发生响应转变,这也是和forward的一个主要区别)。最后servlet2对请求做出响应。上图中产生了两次请求。

下面再给出forward方式的事情原理图:

形貌一下上图的历程:浏览器先向servlet1发送请求,servlet1让servlet2为客户端服务,servlet1挪用forward方式,将客户端的请求转发给servlet2处置(这里浏览器地址栏是不会转变的,由于没告诉浏览器),servlet2对请求做出响应。

对重定向和请求转发的使用划分举个实例,如下:

//重定向到index.jsp页面
response.sendRedirect("/ServletStudy/index.jsp");
//若是你不想写前面的项目名,可以写成下面这样
response.sendRedirect(request.getContextPath() + "/index.jsp");
//获取到requestDispatcher工具,跳转到index.jsp
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/index.jsp");
//挪用requestDispatcher工具的forward实现转发,传入request和response方式
requestDispatcher.forward(request,response);

把上面这些话用一个表格示意,如下:

区别 forward sendRedirect
是否可转向本web应用之外的页面或网站
现实发生位置 服务端 客户端
用法 request.getRequestDispatcher("/资源名").forward(request,response)(注重:转发时"/"代表的是本应用程序的根目录,好比"/web应用名") response.sendRedirect("/web应用/资源名") (重定向时"/"代表的是webapps目录,这个目录在tomcat谁人目录下)
传送数据的类型 转发的request工具可以通报各种类型的数据,包罗工具 重定向只能通报字符串,就是在路径后面加
跳转时间 转发时:执行到跳转语句后就会立刻跳转 重定向:整个页面执行完成后才执行跳转,也就是说厥后的代码有执行机遇
在跳转前request工具setAttribute();的值是否会丢失 不会
转向速率
地址栏 稳定
应用场景 接见Servlet处置营业逻辑,然后forward到jsp显示处置结果 提交表单,处置乐成后redirect到另一个jsp,防止表单重复提交
,

UG环球

欢迎进入环球UG官网(UG环球):www.ugbet.US,环球UG官方网站:www.ugbet.net开放环球UG网址访问、环球UG会员注册、环球UG代理申请、环球UG电脑客户端、环球UG手机版下载等业务。

皇冠APP声明:该文看法仅代表作者自己,与本平台无关。转载请注明:联博以太坊:sendRedirect()和forward()方式的区别

网友评论

  • (*)

最新评论

站点信息

  • 文章总数:695
  • 页面总数:0
  • 分类总数:8
  • 标签总数:1138
  • 评论总数:287
  • 浏览总数:17919