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

                <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:低.
















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值