JSP的重定向主要可用以下四种方式:
1.response.sendRedirect("http:www.bai9du.com");
2.修改HTTP header的location属性
<%
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
String newLocn = basePath+ "login.jsp";
response.setHeader("Location",newLocn);
%>
3.使用forword <jsp:forword page= "/login.jsp"/>此种方式在重定向网页编辑器(kindeditor),编辑器加载不了
4.JSP中实现在某页面停留若干秒后,自动定向到另一页面
在html文件中,下面的代码
<meta http-equiv = "refresh" content="300;url=target.jsp">
它的含义:在5分钟之后正在浏览的页面将会自动变为target.jsp这一页。代码中300为刷新的延时时间,以秒为单位。
target.jsp为目标页面,若为本页面则为自动刷新本页。
由上可知,可以通过setHeader来实现某页面停留若干秒后,自动重定向到另一页面。
关键代码:
String content = stayTime+";URL="+URL;
response.setHeader("REFRESH",content);
重定向原理:
forword:
服务器重定向,即:服务器在向客户端发送数据之前,先将数据输出在缓冲区,然后缓冲区数据发送给client段(对来自client的request请求处理完成或者缓冲区满或者程序调用out.flush()或调用response.flushbuffer(),服务器会向客户端送数据),此时(缓冲区数据发送到客户端之前),前面数据不发送,执行重定向,此种情况,服务器发送到客户端的数据将被清除,但是如果在jsp:forword page="/lgon.jsp"/>之前有很多输出,进而导致缓冲区已满,此时将自动输出到客户端,重定向不起作用。
sendRedirect:
客户端重定向,通过修改HTTP协议的header部分,对浏览器下达重定向的命令,让浏览器在对location中指定的URL提出请求,是浏览器显示重定向的网页内容,该方法可以接受绝对或者相对的URL地址,web容器将此header发送到客户端之前会转换成绝对的URL
总结: forword重定向只能为同一个web应用程序的资源,浏览器URL地址不变
sendRedirect可重定向到任何URL,重定向后URL地址改变。