<jsp:forward> 和response.sendRedirect有何区别(转)

b.gif
b.gif
<jsp:forward page="***.jsp||Html"/> response.sendRedirect("***.jsp||Html") 两种跳转方法不同点:
(1).执行以后,forward标准动作的地址不会改变 ----这种跳转称为服务器端跳转,
而response.sendRedirect()的地址会改变成跳转至页面的地址------这种跳转称为客户端跳转;
(2).执行forward标准动作,当执行到该跳转语句时,程序会立即无条件执行跳转,而且其后的代码也不被执行,----例如遇到数据库操作时,我们则必须把数据库关闭的语句放在该跳转语句之前。 一定要在跳转之前释放掉所有的资源;
response.sendRedirect()方法,则会执行期后面所有的代码.
(3).使用forward,可以保存request.setAttribute("属性值")中所设置的值,到下一个页面,因为forward地址没有发生改变,forward 使用的是<jsp: param name="" value="" />;
response.sendRedirect()由于是客户端跳转,地址改变,属性值不能被保存.当然,我们通过UPL重写也可以传递属性,Demo1:response.sendRedirect("Demo2.jsp?fristname=zero&lastname=space");Demo2:第一个名字 <%=request.getParameter("fristname") %><br/> 第二个名字 <%=request.getParameter("lastname")%>
,也可以接受接受上一页面的属性值

   <jsp:forward:从一个页面转到另为一个页面,可以利用request来转递参数,因为他们的request没有变的,在同一个请求内。
response.sendRedirect;就不同了,当用它转到另为一个面页时,它是等于重新发出了一个请求,所以在原来页面request参数,在到了新的页面后,就失效了,因为它们的request不同了。

    response.sendRedirect();发送一个临时重定向响应到客户端,给出重定向位置。此重定向URL必须是绝对位置,不能是相对位置。不能带参数。
  <jsp:forward>能够向目标文件传送参数和值。如果使用了<jsp:param/>标签的话 ,目标文件必须是一个动态的文件,能够处理参数。如果使用了非缓冲输出,那么使用 <jsp:forward>时就要小心;如果使用<jsp:forward>之前,JSP文件已经有了数据,那么 文件运行将会出错。<jsp:forward>标签从一个JSP文件向另一个文件传递一个包含用户 请求的request对象,<jsp:forward>标签以下的代码将不能运行。

    <jsp:forward> 是在服务器端执行的,对用户来说是透明的。而 response.sendRedirect("xxx.jsp") 是让用户重新给服务器发出请求到xxx.jsp这个新的地址,相当于客户端使用 location.replace() 函数,这样不论用户如何刷新都不会重新执行redirect之前的页面。而且使用浏览器后退也看不到之前的页面。
    response.sendRedirect() 想带参数的话,自己在地址中写成 xxx.jsp?param1=aaa&... 这种形式传递参数就好了。

转载于:https://www.cnblogs.com/lengye/archive/2011/10/06/2200225.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值