设为首页收藏本站language 语言切换
查看: 1502|回复: 0
收起左侧

JSP中的三种页面跳转方式的介绍及比较

[复制链接]
发表于 2010-2-20 15:06:17 | 显示全部楼层 |阅读模式
<p >使用JSP大约有下列三种跳转方式:<p >1. response.sendRedirect();<p >2. response.setHeader("Location","");<p >3. <jsp:forward page="" /><p >经过试验得到下面的一些规则:<p ><b>一. response.sendRedirect()</b><p >此语句前不允许有out.flush(),如果有out.flush(),会有异常:<p >java.lang.IllegalStateException: Can't sendRedirect() after data has committed to the client.<p > at com.caucho.server.connection.AbstractHttpResponse.sendRedirect(AbstractHttpResponse.java:558)<p >...<p >跳转后浏览器地址栏变化<p >如果要跳到不同主机下,跳转后,此语句后面的语句会继续执行,如同新开了线程,但是对response的操作已经无意义了;<p >如果要跳到相同主机下,此语句后面的语句执行完成后才会跳转;<p ><b>二. response.setHeader("Location","")</b><p >此语句前不允许有out.flush(),如果有out.flush(),页面不会跳转。<p >跳转后浏览器地址栏变化<p >此语句后面的语句执行完成后才会跳转<p ><b>三. <jsp:forward page="" /></b><p >此语句前不允许有out.flush(),如果有,会有异常:<p >java.lang.IllegalStateException: forward() not allowed after buffer has committed.<p > at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:134)<p > at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:101)<p > at com.caucho.jsp.PageContextImpl.forward(PageContextImpl.java:836)<p > ...<p >跳转后浏览器地址栏不变,但是只能跳到当前主机下<p >此语句后面的语句执行完成后才会跳转<p >(责任编辑:董建伟)                                 <p align="center"></p></p>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-6 07:17 , Processed in 0.420419 second(s), 23 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表