Servlet - Aggiornamento automatico della pagina

Considera una pagina web che mostra il punteggio del gioco in tempo reale o lo stato del mercato azionario o la razione di cambio di valuta. Per tutti questi tipi di pagine, è necessario aggiornare regolarmente la pagina Web utilizzando il pulsante di aggiornamento o ricarica con il browser.

Java Servlet semplifica questo lavoro fornendo un meccanismo in cui è possibile creare una pagina Web in modo tale che venga aggiornata automaticamente dopo un determinato intervallo.

Il modo più semplice per aggiornare una pagina web è usare il metodo setIntHeader()dell'oggetto risposta. Di seguito è riportata la firma di questo metodo:

public void setIntHeader(String header, int headerValue)

Questo metodo restituisce l'intestazione "Aggiorna" al browser insieme a un valore intero che indica l'intervallo di tempo in secondi.

Esempio di aggiornamento automatico della pagina

Questo esempio mostra come un servlet esegue l'aggiornamento automatico della pagina utilizzando setIntHeader() metodo da impostare Refresh intestazione.

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

Ora compiliamo il servlet sopra e creiamo le seguenti voci in 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>
....

Ora chiama questo servlet utilizzando l'URL http: // localhost: 8080 / Refresh che visualizzerà l'ora corrente del sistema ogni 5 secondi come segue. Basta eseguire il servlet e attendere di vedere il risultato -

Auto Page Refresh using Servlet

Current Time is: 9:44:50 PM