关闭

<jsp:forward>与response.sendRedirect()页面跳转的区别

标签: jsp
228人阅读 评论(0) 收藏 举报
分类:

                <jsp:forward>与response.sendRedirect()页面跳转的区别

        <jsp:forward>与respose.sendRedirect()是JSP中实现页面跳转的两种方式,他们都能实现从一个页面跳转到另一个页面的功能,那他们有什么区别呢?下面是我对他们的理解

如上图所示:

     <jsp:forward>:客户端访问第一个页面,第一个页面跳转到第2个页面,第二个页面把内容传递给客户端,客户端浏览器显示第一个页面的名字,跳转页面发生在服务器端,2个页面的request是同一个

    response.sendRedirect:客户端访问第一个页面时,第一个页面告诉客户端重新访问第二个页面,客户端自动敲第二个页面的地址,第二个页面把内容反馈给客户端,跳转页面发生在客户端,2个页面的request不同

可用一个简单的例子来说明:
forforward.jsp:

<html>
  <head>  
    <title>forforward.jsp</title>
  </head>
  
  <body bgcolor=pink>
    here is the forforward page
    <br>
    <%= request.getParameter("name") %>
    <%= request.getParameter("oldName") %>
    <%= request.getParameter("roles") %>
  </body>
</html>


采用<jsp:forward>跳转的forward.jsp:

<html>
  <head>
    <title>forward example</title>
  </head>
  
  <body bgcolor=red>
      Welcome to here!
     <jsp:forward page="forforward.jsp" >
        <jsp:param name = "name" value="m"/>
        <jsp:param name="oldName" value='<%= request.getParameter("name") %>'/>
        <jsp:param name = "roles" value = "manager"/>
     </jsp:forward>
  </body>
</html>


运行forward.jsp时,客户端显示forforward.jsp的内容,但访问的地址名字依然是forward.jsp


采用response.sendRedirect()跳转的 sendRedirect.jsp:

 <% response.sendRedirect("forforward.jsp"); %> 

运行sendRedirect.jsp时,客户端显示forforward.jsp的内容,而且访问的地址名字也变成了forforward.jsp


因此,可总结如下:


1.从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.

2.从数据共享来说
forward:转发页面和转发到的页面可以共享request里面的数据.
redirect:不能共享数据.

3.从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.

4.从效率来说
forward:高.
redirect:低.
















0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

forward与sendRedirect区别(实现页面跳转的方法)

SendRedirect Forward 不同的request 不同的对象,但是可以渠道上一个页面的内容 send后面的语句会继续执行,除非return Forwar...
  • yuxuan19900
  • yuxuan19900
  • 2014-07-31 10:29
  • 6367

request和response的页面跳转传参

1、request.getRequestDispatcher("a.jsp").forward(rquest,response); request转发 它可以保存request中的数据 页面调整 但是...
  • KevinwuwenboA
  • KevinwuwenboA
  • 2016-10-30 22:08
  • 4151

jsp中两种跳转方式及区别

1,response跳转:   // 带session,不带request的跳转(客户端跳转)   responst.sendRedirect("目的页面.jsp");   2,forward跳...
  • hbbonson
  • hbbonson
  • 2013-07-20 11:46
  • 1133

Hello JSP!——<jsp:forward>动作元素篇

动作元素用来转移用户的请求,使得用户请求的页面从一个页面跳转到另一个页面。这种跳转为服务器端跳转,所以用户的地址栏不会发生任何变化。        动作元素的语法格式如下。       &...
  • Liuchang54
  • Liuchang54
  • 2015-09-04 12:31
  • 1533

JSP中Forward和Redirect之间的区别

Forward是服务端跳转,浏览器只发起一起请求,服务端接收到浏览器请求后,进行跳转,然后将结果返回至浏览器。浏览器不知道请求在服务端进行了跳转,故浏览器地址栏的地址不变 Redirect是浏览器端跳...
  • a19881029
  • a19881029
  • 2015-05-11 15:01
  • 5687

jsp response.sendRedirect不跳转的原因分析及解决

jsp response.sendRedirect不跳转的原因分析及解决 作者: 最近做项目时遇到一个问题,明明加了response.sendRedirect() ,系统也执行了,但是...
  • xuchuangqi
  • xuchuangqi
  • 2016-05-15 15:24
  • 388

jsp中页面之间的跳转forward与sendRedirect的区别

页面之间的跳转可以通过两种方式实现:forward和sendRedirect forward:可以在JSP页面中使用,可以在Servlet中实现。 在JSP页面中使用,例如要跳转到userlis...
  • sakya1224
  • sakya1224
  • 2017-02-12 17:54
  • 160

jsp中页面之间的跳转forward与sendRedirect的区别

jsp中页面之间的跳转forward与sendRedirect的区别 作者: 字体:[增加 减小] 类型:转载 页面之间的跳转可以通过两种方式实现:forward和sendRedi...
  • evilcry2012
  • evilcry2012
  • 2015-07-03 10:25
  • 400

jsp forward 动作标签

forward 动作标签: 或 该指令的作用是:从该指令处停止当前页面的继续执行,而转向其他的一个JSP页面。 在下面例子的JSP页面中,首先随机获取一个数,如果该数大于0.5就转向...
  • u014112584
  • u014112584
  • 2014-07-01 15:48
  • 1301

jsp:forward jsp:include传中文参数乱码问题的解决方法

jsp的forward指令用于将页面响应转发到另外的页面,可以转发到静态的HTML页面,也可以转发到动态的JSP页面,还可以转发到容器中的Servlet。在进行转发时,可以通过jsp:param指令增...
  • gnail_oug
  • gnail_oug
  • 2016-06-19 00:09
  • 2142
    个人资料
    • 访问:3540次
    • 积分:361
    • 等级:
    • 排名:千里之外
    • 原创:35篇
    • 转载:2篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论