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);
如果总结得不够全面,请各位发表自己的意见或经验。