网页制作学习园地论坛网站建设交流『 ASP,PHP,CGI,JSP技术 』 → JSP教程:JSP页面跳转的实战规则


  共有3077人关注过本帖树形打印

主题:JSP教程:JSP页面跳转的实战规则

帅哥哟,离线,有人找我吗?
gaofeng
  1楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:3510 积分:11231 威望:5 精华:7 注册:2000/5/19 10:19:38
JSP教程:JSP页面跳转的实战规则  发帖心情 Post By:2014/4/24 16:16:53

使用JSP大约有下列三种跳转方式:

1. response.sendRedirect();

2. response.setHeader("Location","");

3. <jsp:forward page="" />

经过试验得到下面的一些规则:

一. response.sendRedirect()

此语句前不允许有out.flush(),如果有out.flush(),会有异常:

java.lang.IllegalStateException: Can't sendRedirect() after data has committed to the client.

at com.caucho.server.connection.AbstractHttpResponse.sendRedirect(AbstractHttpResponse.java:558)

...

跳转后浏览器地址栏变化

如果要跳到不同主机下,跳转后,此语句后面的语句会继续执行,如同新开了线程,但是对response的操作已经无意义了;

如果要跳到相同主机下,此语句后面的语句执行完成后才会跳转;

二. response.setHeader("Location","")

此语句前不允许有out.flush(),如果有out.flush(),页面不会跳转。

跳转后浏览器地址栏变化

此语句后面的语句执行完成后才会跳转

三. <jsp:forward page="" />

此语句前不允许有out.flush(),如果有,会有异常:

java.lang.IllegalStateException: forward() not allowed after buffer has committed.

at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:134)

at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:101)

at com.caucho.jsp.PageContextImpl.forward(PageContextImpl.java:836)

...


支持(0中立(0反对(0回到顶部