土豆萝卜会发光的博客

只要足够努力 就一定会发光

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
















阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liuborong43/article/details/70139074
文章标签: jsp
个人分类: JSP
上一篇Cookie和Session
下一篇二维数组中的查找
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭