Servlets - Tự động làm mới trang

Hãy xem xét một trang web đang hiển thị điểm số trò chơi trực tiếp hoặc trạng thái thị trường chứng khoán hoặc tỷ lệ trao đổi tiền tệ. Đối với tất cả các loại trang như vậy, bạn cần phải làm mới trang web của mình thường xuyên bằng cách sử dụng nút làm mới hoặc tải lại bằng trình duyệt của mình.

Java Servlet làm cho công việc này trở nên dễ dàng bằng cách cung cấp cho bạn một cơ chế mà bạn có thể tạo một trang web theo cách mà nó sẽ tự động làm mới sau một khoảng thời gian nhất định.

Cách đơn giản nhất để làm mới một trang web là sử dụng phương pháp setIntHeader()của đối tượng phản hồi. Sau đây là chữ ký của phương pháp này:

public void setIntHeader(String header, int headerValue)

Phương thức này gửi lại tiêu đề "Làm mới" cho trình duyệt cùng với một giá trị số nguyên cho biết khoảng thời gian tính bằng giây.

Ví dụ về làm mới trang tự động

Ví dụ này cho thấy cách một servlet thực hiện tự động làm mới trang bằng cách sử dụng setIntHeader() phương pháp để thiết lập Refresh đầu trang.

// 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);
   }
}

Bây giờ chúng ta hãy biên dịch servlet ở trên và tạo các mục sau trong 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>
....

Bây giờ hãy gọi servlet này bằng cách sử dụng URL http: // localhost: 8080 / Refresh sẽ hiển thị thời gian hệ thống hiện tại sau mỗi 5 giây như sau. Chỉ cần chạy servlet và chờ xem kết quả -

Auto Page Refresh using Servlet

Current Time is: 9:44:50 PM