花迹、忆红颜
过去往往总是过不去 留成现在最痛的印记
 
JSP页面的重定向主要可用以下三种方式:
 
1、
response.sendRedirect("http://www.linfenliang.cn.vc");
 
2、
修改HTTP header 的location 属性
 
<%
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); 
String newLocn = basePath+"KE/index.jsp"; 
response.setHeader("Location",newLocn); 
%>
 
3、
使用forward
<jsp:forward page="/KE/index.jsp"/>
此种方式在重定向网页编辑器(kindeditor)时,编辑器加载不了
 
4、
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);
 
重定向原理:
 
forward:
 
服务器端重定向,即:服务器在向客户端发送数据之前,先将数据输出到缓冲区,然后缓冲区中数据发送给client段(对来自client的request请求处理完成或者缓冲区满或者程序调用out.flush()或调用response.flushbuffer(),服务器会向客户端发送数据),此时(缓冲区数据发送到客户端之前),原来数据不发送,执行重定向,此种情况,服务器发送到客户端的数据将被清除,但是如果在jsp:forward page="/KE/index.jsp"/>之前有好多输出,进而导致缓冲区已满,此时将自动输出到客户端,重定向不起作用。
 
sendRedirect:
 
客户端重定向,通过修改HTTP协议的HEADER部分,对浏览器下达重定向命令,让浏览器在对location中指定的URL提出请求,是浏览器显示重定向的网页内容,该方法可接受绝对或相对URL地址,web容器将此header发送到客户端之前会转换成绝对的URL。
 
 
总结:forward重定向只能为同一个web应用程序的资源,浏览器URL地址不变
    sendRedirect可重定向到任何URL,重定向后URL地址改变
 
forward重定向将原始的HTTP请求对象从一个servlet实例传递到另一个实例,form参数也跟着传递,客户端可获取HTTP请求的参数
sendRedirect两者不是同一个application,只能通过链接传递参数
posted on 2012-12-20 16:51  花迹、忆红颜  阅读(1187)  评论(0编辑  收藏  举报