5.1.6 网页定时刷新和定时跳转

优质
小牛编辑
135浏览
2023-12-01

有时一个网页需要按着一定的时间间隔刷新,或是在一定时间后跳到其他的网页上。这种功能在定时从服务端获得数据;或是在短时间显示一个公告页,在一段时间后,跳到主页的情况下特别有用。

虽然实现定时刷新和定时跳转有很多方法,但使用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方法之后的内容根本就不会输出到客户端。