5.1.6 网页定时刷新和定时跳转
有时一个网页需要按着一定的时间间隔刷新,或是在一定时间后跳到其他的网页上。这种功能在定时从服务端获得数据;或是在短时间显示一个公告页,在一段时间后,跳到主页的情况下特别有用。
虽然实现定时刷新和定时跳转有很多方法,但使用HTTP响应消息头中的Refresh字段无疑是最简单的方法,通过设置这个字段的值,可以使当前网页每隔一定的时间刷新一次,还可以使当前网页在一定时间后跳转到其他的网页。如果只想定时刷新,可以使用下面的代码来实现:
response.setHeader("Refresh", "3"); // 每隔3秒页面刷新一次
下面的代码实现了3秒后跳转到其他网页的功能:
response.setHeader("Refresh", "3;URL=http://www.csdn.net");
时间和URL之间要用分号(;)隔开。其中URL指定了在一定时间间隔要跳转到的其他网页地址。
例子 : 网页定时刷新和定时跳转
1. 实例说明
在本例中使用了url请求参数来指定要跳转到的网页地址,如果不指定url请求参数,则每隔3秒刷新一次网页,并显示当前的服务器时间。读者会看到网页上显示的服务器时间每隔3秒变化一次。
2. 编写Refresh类
Refresh类演示了如何使用Refresh字段实现网页定时刷新和定时跳转的功能。Refresh类的实现代码如下:
public class Refresh extends HttpServlet
{
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html;charset=UTF-8");
String url = request.getParameter("url");
if(url == null)
{
response.setHeader("Refresh", "3"); // 每隔3秒刷新一次网页
}
else
{
response.setHeader("Refresh", "0;URL=" + url); // 在3秒钟后定时跳转
}
PrintWriter out = response.getWriter();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 输出当前服务器时间
out.println(dateFormat.format(new java.util.Date()));
}
}
3. 配置Refresh类
Refresh类的配置代码如下:
<servlet>
<servlet-name>Refresh</servlet-name>
<servlet-class>chapter5.Refresh</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Refresh</servlet-name>
<url-pattern>/Refresh</url-pattern>
</servlet-mapping>
4. 测试定时刷新
在浏览器地址栏中输入如下的URL:
http://localhost:8080/demo/Refresh
然后读者就会看到,在浏览器中显示的时间每隔3秒就变化一次。
5. 测试定时跳转
在浏览器地址栏中输入如下的URL:
http://localhost:8080/demo/Refresh?url=http://nokiaguy.blogjava.net
然后读者就会看到,3秒后,当前网页就会跳到www.csdn.net上。其中url参数可以是相对路径(如ChineseHeader),也可以是绝对路径(如http://www.csdn.net)。
6. 程序总结
如果将Refresh字段的时间间隔设为0,那么在当前网页装载完后会立即跳转到url所指的网页。除了使用Refresh来跳转网页外,还可以使用HttpServletResponse接口的sendRedirect来重定向网页,代码如下:
response.sendRedirect("http://www.csdn.net");
这两种跳转网页的方式可以达到同样的效果,但它们不同的是使用Refresh来跳转网页时,会先将当前网页装载完,才执行跳转动作,而使用sendRedirect方法来重定向网页,会直接转到目标网页上,而在sendRedirect方法之后的内容根本就不会输出到客户端。