Tuesday, 6 May 2014

Servlets : Page Redirection

🚀 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 Redirection in Java Servlets?

In web applications, page redirection occurs when a server tells a web browser to go visit a completely different URL instead of returning page content immediately. In Java Servlets, redirection is typically performed using the sendRedirect() method of HttpServletResponse.

When a servlet initiates a redirect, it sends back an HTTP response containing a redirect status code (typically 302 Found) along with a Location response header specifying the new target URL. The browser automatically recognizes this header and sends a brand new GET request to that destination.

How Client-Side Redirection Works (Two Request-Response Cycles)

Understanding the exact workflow is key to using redirection correctly:

  • Request 1: The client browser sends a request to ServletA.
  • Response 1: ServletA executes response.sendRedirect("newPage"). The server issues a 302 HTTP status code and attaches the new destination URL in the header.
  • Request 2: The client's browser reads the header, changes the URL in the address bar, and automatically triggers a fresh GET request to newPage.
  • Response 2: The destination server processes Request 2 and sends back the final web page content.

Basic Syntax & Practical Code Examples

You can redirect users to another internal resource inside the same web application, or to an external third-party domain:

// 1. Relative Redirection within the same application
response.sendRedirect("welcome.html");

// 2. Relative Redirection to another servlet
response.sendRedirect("DashboardServlet");

// 3. Absolute Redirection to an external website
response.sendRedirect("https://www.google.com");

Page Redirection (sendRedirect) vs Request Forward (forward)

  • URL Bar Update: sendRedirect() always updates the URL displayed in the client's browser, whereas RequestDispatcher.forward() keeps the original URL hidden.
  • Request Scope: Because redirection triggers a brand-new HTTP request, original request attributes are lost. Forwarding preserves the original request and response objects.
  • Scope of Target: sendRedirect() can direct the user to resources outside the current web application and external domains. Forwarding only works within the same web container.

When Should You Use Page Redirection?

  • Post/Redirect/Get (PRG) Pattern: Preventing accidental form re-submissions (e.g., duplicate payments or duplicate database inserts) when a user refreshes the page.
  • Authentication Flow: Redirecting unauthenticated visitors to a login page, and then redirecting them back to a dashboard upon successful login.
  • External Navigation: Directing visitors to external partner websites or third-party payment gateways.

📺 Related Redirection & Navigation Tutorials

Continue mastering navigation and request flow in Servlets with these channel tutorials:


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

Click the below Image to Enlarge


PageRedirection Project Dir Structure



PageRedirectServlet.java
import java.io.IOException;

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

public class PageRedirectServlet 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("---------------------------");
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
    {
        // Set response content type
        response.setContentType("text/html");

        // New location to be redirected
        String site = new String("http://www.google.com");

        response.setStatus(response.SC_MOVED_TEMPORARILY);
        response.setHeader("Location", site);
    }

    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>PageRedirection</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>PageRedirect</servlet-name>
    <servlet-class>PageRedirectServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>PageRedirect</servlet-name>
    <url-pattern>/PageRedirect</url-pattern>
  </servlet-mapping>

</web-app>

index.html
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>PageRedirectDemo</title>
</head>
<body>
    <li><a href="PageRedirect">PageRedirect</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