程式先锋Java技术维客

JSP中的三种页面跳转方式

八月 18, 2008 by czl

使用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)

                                       ...


跳转后浏览器地址栏不变,但是只能跳到当前主机下


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



发表一条评论:
  • HTML语法: 启用

Search

 

« 九月 2010
星期日星期一星期二星期三星期四星期五星期六
   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  
       
今天

Feeds

Navigation