Friday, 2 May 2014

Servlets : PageAutoRefresh

🚀 Master Java Servlets & Web Development!

Subscribe to Ram N Java for clean, beginner-friendly coding tutorials and practical web architecture guides!

👉 Click Here to Subscribe Now

What is Page Auto Refresh in Java Servlets?

In web applications displaying live statistics, stock prices, sports scores, or dynamic server clocks, you often want the browser to automatically reload the page at a fixed time interval without any user intervention.

In Java Servlets, you can accomplish automatic page reloading on the client side using the standard HTTP response header named Refresh via response.setIntHeader().

How the Refresh Header Works

When the servlet sends an HTTP response containing the Refresh header, it informs the browser to wait for a specified number of seconds before re-requesting the current URL:

// Refresh the page every 5 seconds
response.setIntHeader("Refresh", 5);

Every 5 seconds, the browser will automatically issue a fresh GET request to the same servlet, fetching and rendering the most up-to-date data.

Complete Servlet Example: Live Digital Clock

Here is a complete, beginner-friendly example of an auto-refreshing digital clock servlet:

@WebServlet("/AutoRefreshServlet")
public class AutoRefreshServlet extends HttpServlet {

  protected void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    // Set the refresh interval in seconds
    response.setIntHeader("Refresh", 1);

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();

    // Get current system time
    Calendar calendar = new GregorianCalendar();
    String am_pm = calendar.get(Calendar.AM_PM) == 0 ? "AM" : "PM";
    String currentTime = calendar.get(Calendar.HOUR) + ":" +
                         calendar.get(Calendar.MINUTE) + ":" +
                         calendar.get(Calendar.SECOND) + " " + am_pm;

    out.println("<h2>Auto Refreshing Page Demo</h2>");
    out.println("<p>Current Time: <strong>" + currentTime + "</strong></p>");
  }
}

Bonus: Refresh and Redirect to Another URL

You can also use the Refresh header to pause for a few seconds before redirecting the client to a different URL using setHeader():

// Wait 5 seconds, then redirect the user to a new destination
response.setHeader("Refresh", "5; URL=https://www.youtube.com/@ramnjava");

Key Best Practices

  • Choose Appropriate Intervals: Refreshing too quickly (e.g., sub-second intervals) creates unnecessary server load and bandwidth usage.
  • Set Before Writing: Always set response headers before committing the response or flushing the output stream.
  • Alternative Modern Options: While HTTP Refresh headers are fast and require zero JavaScript, modern interactive apps often use AJAX, WebSockets, or Server-Sent Events (SSE) for partial page updates.

📺 Related HTTP & Response Handling Tutorials

Explore more response handling and HTTP concept tutorials from our channel:


Click here to watch in Youtube : https://www.youtube.com/watch?v=S0Z04k6r61A

Click the below Image to Enlarge

PageAutoRefresh Project Dir Structure

PageRefreshServlet.java
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;
import java.util.GregorianCalendar;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class PageRefreshServlet extends HttpServlet
{

    private static final long serialVersionUID = 1L;

    public void init() throws ServletException
    {
        System.out
                .println("------------------------------------------------------");
        System.out.println(" Init method is called in "
                + this.getClass().getName());
        System.out
                .println("------------------------------------------------------");
    }

    // Method to handle GET method request.
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
    {
        
        System.out.println(" doGet method is called in "
                + this.getClass().getName());
        
        // 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);
    }

    public void destroy()
    {
        System.out
                .println("------------------------------------------------------");
        System.out.println(" destroy method is called in "
                + this.getClass().getName());
        System.out
                .println("------------------------------------------------------");
    }
}

web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    metadata-complete="true" version="3.0">

      <display-name>PageAutoRefresh</display-name>

      <description>
        This is a simple web application with a source code organization
        based on the recommendations of the Application Developer's Guide.
      </description>

       <servlet>
        <servlet-name>refresh</servlet-name>
        <servlet-class>PageRefreshServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>refresh</servlet-name>
        <url-pattern>/PageRefresh</url-pattern>
    </servlet-mapping>
</web-app>

index.html
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>PageRefresh</title>
</head>
<body>
    <li><a href="PageRefresh">PageRefresh</a></li>
</body>
</html>


Environment Used 

JDK version :1.6.0_30
Tomcat version : 7.0.50 

To Download PageAutoRefreshApp Project Click the below link

https://sites.google.com/site/javaee4321/servlets/PageAutoRefreshApp.zip?attredirects=0&d=1

 See also:

  • Servlets Tutorial
  • All Design Patterns Links
  • No comments:

    Post a Comment

    Tutorials