JSP页面跳转中的问题 [ 总结 ]

页面调转有如下几种方式
1   RequestDispatcher.forward()
2  response.sendRedirect()
3   
4  修改HTTP header的Location属性来重定向
5  pageContext.forward()
 
我把检验用户是否登录的代码写在一个JSP文件中
码如下
logincheck.jsp
<%
   if (session.getAttribute("flag") == null   
     || !"ok".equals(session.getAttribute("flag"))) {
    
   //1 跳转方式1
    response.sendRedirect("login.jsp");
    return;
 
    //2跳转方式2     
    //pageContext.forward("login.jsp");
    
   }
%>

 

//success.jsp

<%@ page contentType="text/html;charset=Shift_JIS" session="true"
 isErrorPage="false" errorPage="err.jsp" %>

//a  包含方法a
 

//b 包含方法b
<%@ include file="logincheck.jsp"%>

  
    Success.jsp
  
  
    This is my JSP page. Success! 

    Welcome 
     <%
    out.print("SCHOOL : "+request.getAttribute("school")+"
");
    out.print("AGE : "+session.getAttribute("age")+"
");
    out.print("CITY : "+application.getAttribute("city")+"
");
    %>
  
    ログ アウト

 我将文件的包含方式和文件的调转方式作了组合测试。

结果如下

--------------------------------------------------

包含方法  |   跳转方法      |   结果

-------------------------------------------------

    a           |      1                |      注1

------------------------------------------------ 

    b           |     1                |       ok 

------------------------------------------------ 

   a            |      2               |      注2

------------------------------------------------ 

   b            |       2              |      ok

------------------------------------------------ 

注1

不做任何调转

注2 

只有将

 

放在代码的第一行才可以。

否则

java.lang.IllegalStateException: Cannot forward after response has been committed at org.apache.catalina.core.ApplicationDispatcher.doForward

 

你可能感兴趣的:(java基础)