Servlet - 自动页面刷新

  • 简述

    考虑显示实时游戏分数或股票市场状态或货币兑换比率的网页。对于所有此类页面,您需要使用浏览器的刷新或重新加载按钮定期刷新网页。
    Java Servlet 为您提供了一种机制,您可以在其中制作网页,使其在给定的时间间隔后自动刷新,从而使这项工作变得容易。
    刷新网页最简单的方法是使用方法 setIntHeader()响应对象。以下是此方法的签名 -
    
    public void setIntHeader(String header, int headerValue)
    
    此方法将标头“Refresh”连同一个整数值一起发送回浏览器,该整数值指示以秒为单位的时间间隔。
  • 自动页面刷新示例

    此示例显示 servlet 如何使用 setIntHeader() 设置方法 Refresh 标题。
    
    // Import required java libraries
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.util.*;
     
    // Extend HttpServlet class
    public class Refresh extends HttpServlet {
     
       // Method to handle GET method request.
       public void doGet(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
          
          // Set refresh, autoload time as 5 seconds
          response.setIntHeader("Refresh", 5);
     
          // Set response content type
          response.setContentType("text/html");
     
          // Get current time
          Calendar calendar = new GregorianCalendar();
          String am_pm;
          int hour = calendar.get(Calendar.HOUR);
          int minute = calendar.get(Calendar.MINUTE);
          int second = calendar.get(Calendar.SECOND);
          
          if(calendar.get(Calendar.AM_PM) == 0)
            am_pm = "AM";
          else
            am_pm = "PM";
     
          String CT = hour+":"+ minute +":"+ second +" "+ am_pm;
        
          PrintWriter out = response.getWriter();
          String title = "Auto Page Refresh using Servlet";
          String docType =
             "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";
          
          out.println(docType +
             "<html>\n" +
             "<head><title>" + title + "</title></head>\n"+
             "<body bgcolor = \"#f0f0f0\">\n" +
             "<h1 align = \"center\">" + title + "</h1>\n" +
             "<p>Current Time is: " + CT + "</p>\n"
          );
       }
       
       // Method to handle POST method request.
       public void doPost(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
          
          doGet(request, response);
       }
    }
    
    现在让我们编译上面的 servlet 并在 web.xml 中创建以下条目
    
    ....
     <servlet>
         <servlet-name>Refresh</servlet-name>
         <servlet-class>Refresh</servlet-class>
     </servlet>
     
     <servlet-mapping>
         <servlet-name>Refresh</servlet-name>
         <url-pattern>/Refresh</url-pattern>
     </servlet-mapping>
    ....
    
    现在使用 URL http://localhost:8080/Refresh 调用这个 servlet,它将在每 5 秒后显示当前系统时间,如下所示。只需运行 servlet 并等待查看结果 -
    
    
    
    Current Time is: 9:44:50 PM