我要啦免费统计

微蓝领域

我的学习档案馆
posts - 19, comments - 57, trackbacks - 0, articles - 57
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

JSP页面跳转问题

Posted on 2007-08-15 17:00 hilor 阅读(2289) 评论(0)  编辑  收藏 所属分类: J2EE
页面调转有如下几种方式
1   RequestDispatcher.forward()
2  response.sendRedirect()
3  <jsp:forward page="" />
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
<!-- jsp:include page="logincheck.jsp" flush="true"/----> 

//b 包含方法b
<%@ include file="logincheck.jsp"%>
<html>
  <head>
    <title>Success.jsp</title>
  </head>
  <body>
    This is my JSP page. Success! <br>
    Welcome 
     <%
    out.print("SCHOOL : "+request.getAttribute("school")+"<br>");
    out.print("AGE : "+session.getAttribute("age")+"<br>");
    out.print("CITY : "+application.getAttribute("city")+"<br>");
    %>
  </body>
    <A  href="logout.jsp">ログ アウト</A>
</html>

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

结果如下

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

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

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

    a           |      1                |      注1

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

    b           |     1                |       ok

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

   a            |      2               |      注2

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

   b            |       2              |      ok

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

注1

不做任何调转

注2

只有将

<jsp:include page="logincheck.jsp" flush="true"/> 

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

否则

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

 

日文环境

java.lang.IllegalStateException: レスポンスをコミットした后でフォワードできません at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:324) at

这个错误往往是在forward执行之前,response已经返回了!

不明的原因!有空上网上再找找!

4: 修改HTTP header的Location属性来重定向
  通过设置直接修改地址栏来实现页面的重定向。
  jsp文件代码如下:
  <%
  response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
  String newLocn = "/newpath/jsa.jsp";
  response.setHeader("Location",newLocn);
  %>
  5.JSP中实现在某页面停留若干秒后,自动重定向到另一页面
  在html文件中,下面的代码:
  <meta http-equiv="refresh" content="300; url=target.jsp">
  它的含义:在5分钟之后正在浏览的页面将会自动变为target.html这一页。代码中300为刷新的延迟时间,以秒为单位。targer.html为你想转向的目标页,若为本页则为自动刷新本页。
  由上可知,可以通过setHeader来实现某页面停留若干秒后,自动重定向到另一页面。
  关键代码:
  String content=stayTime+";URL="+URL;
  response.setHeader("REFRESH",content);
  如果总结得不够全面,请各位发表自己的意见或经验。


只有注册用户登录后才能发表评论。


网站导航: