Thursday, 29 May 2014

Servlets : Cookies

🚀 Master Java & Servlets with Ram N Java!

Subscribe to get clear, beginner-friendly tutorials right when they drop.

🔔 Subscribe to Ram N Java

What Are Cookies in Java Servlets?

Because HTTP is an inherently stateless protocol, web servers treat every client request as a completely isolated event. To maintain user continuity, web applications rely on Cookies.

A cookie is a small piece of textual data sent by a web server inside the HTTP response headers and stored on the user’s local browser. Whenever the client sends a subsequent request back to that server or domain, the browser automatically attaches the stored cookies to the HTTP request headers.

Types of Cookies

Cookies primarily fall into two categories based on their persistence:

  • Session (Non-Persistent) Cookies: These cookies do not have an explicit expiration time set (or have a negative maxAge). They remain stored in temporary browser memory and are deleted as soon as the user closes the browser.
  • Persistent Cookies: These cookies have a defined maximum age (positive value via setMaxAge()). They are written to the client's hard disk and remain valid across multiple browser sessions until their expiration timer elapses.

Advantages and Limitations of Cookies

Advantages:

  • Simple Implementation: Requires no complex server-side storage infrastructure for basic key-value data.
  • Reduced Server Overhead: Stored directly on client machines, reducing memory consumption on the application server.
  • Personalization: Excellent for saving lightweight client preferences like theme modes, language choices, or remember-me tokens.

Limitations:

  • Security Concerns: Stored on the client side in plain text, making them vulnerable to tampering or inspection if not protected via Secure and HttpOnly flags.
  • Size Constraints: Browsers limit cookie size (typically up to 4 KB per cookie) and restrict the total number of cookies per domain.
  • User Control: Clients can disable or clear cookies at any time through browser settings.

Recommended Next Watch

Continue your journey into servlet session tracking with these practical tutorials:


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

Click the below Image to Enlarge
Servlets : Cookies


Servlets : Cookies
Servlets : Cookies
See also:

  • Servlets Tutorial
  • All Design Patterns Links
  • Servlets : Attribute

    🚀 Master Java & Servlets with Ram N Java!

    Subscribe to get clear, beginner-friendly tutorials right when they drop.

    🔔 Subscribe to Ram N Java

    What Are Servlet Attributes?

    In Java Web Applications, you often need to share data between different components—such as from one Servlet to another Servlet, from a Servlet to a JSP, or between JSP pages.

    This data sharing is achieved using Attributes. An attribute is simply an object bound under a unique name across specific scopes in your web container.

    The Three Key Attribute Scopes

    You can set, read, and remove attributes across three distinct scopes depending on how long you need the data to live:

    • Request Scope (ServletRequest): Valid only for the duration of a single HTTP request lifecycle. Ideal when forwarding requests to another Servlet or JSP.
    • Session Scope (HttpSession): Active across multiple requests made by the same user/client session.
    • Application Scope (ServletContext): Accessible by all users and all components across the entire web application.

    Core Methods for Handling Attributes

    Each scope interface provides standard methods to manage attributes:

    • setAttribute(String name, Object value): Stores an object with an associated identifier name.
    • getAttribute(String name): Retrieves the stored object corresponding to the specified name.
    • getAttributeNames(): Returns an Enumeration of all attribute names available in that scope.
    • removeAttribute(String name): Deletes the attribute from the scope.

    Recommended Next Watch

    Continue expanding your Java Servlet knowledge with these related tutorials:

    Servlets : HttpSession Attribute

    Master Java & Servlet Development!

    Subscribe to Ram N Java for beginner-friendly coding walkthroughs, session handling deep dives, and core web architecture guides!

    🔔 Subscribe to Ram N Java

    What is Session Scope in Java Servlets?

    In Java web applications, HTTP is a stateless protocol, meaning each client request is independent and the server does not retain identity information across requests by default. To preserve user data—such as login states or shopping cart contents—across multiple HTTP requests from the same user, the servlet container provides the HttpSession interface.

    The Session Scope allows you to store objects as key-value pairs (attributes) associated with a specific user's session. As long as the session remains active and has not timed out or been invalidated, any servlet or JSP in the same web application can access those attributes for that specific user.

    Setting and Getting Attributes in HttpSession

    Working with session attributes involves three primary steps using standard methods available in HttpSession:

    • Obtain the Session: Use HttpSession session = request.getSession(); to fetch the active session or create a new one if it doesn't already exist.
    • Store an Attribute: Use session.setAttribute(String name, Object value); to bind an object to the user's session.
    • Retrieve an Attribute: Use session.getAttribute(String name); to look up the stored object, casting it back to its specific type.
    • Remove an Attribute: Use session.removeAttribute(String name); when the stored data is no longer needed.
    // Step 1: Access the current session
    HttpSession session = request.getSession();

    // Step 2: Store user data in session scope
    session.setAttribute("currentUser", "JohnDoe");

    // Step 3: Retrieve user data across different servlets
    String user = (String) session.getAttribute("currentUser");

    Key Rules to Remember

    • User-Specific Data: Unlike application-wide ServletContext attributes, session attributes belong exclusively to a single user.
    • Persistence Across Requests: Attributes remain accessible across multiple browser requests until the session times out, the browser closes (session cookie expires), or session.invalidate() is called.
    • Object Type Flexibility: You can bind any Java object (Strings, Collections, custom JavaBean models) to the session scope.

    Recommended Related Tutorials

    Continue mastering session management and attributes with these tutorials from Ram N Java:


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

    Click the below Image to Enlarge

    HttpSessionAttributeDemo Project Dir Structure   

    FirstServlet.java
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    public class FirstServlet 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
        {
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
    
            String username = request.getParameter("username");
            out.print("Welcome " + username);
    
            HttpSession session = request.getSession();
            System.out.println("FirstServlet sessionid :" + session.getId());
            session.setAttribute("Username", username);
            session.setAttribute("Role", "Admin");
    
            out.print("<a href='servlet2'> : visit</a>");
    
            out.close();
    
        }
    
        public void destroy()
        {
            System.out.println("----------------------------------------------");
            System.out.println(" destroy method is called in "
                    + this.getClass().getName());
            System.out.println("----------------------------------------------");
        }
    
    }
    

    SecondServlet.java
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Enumeration;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    public class SecondServlet 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
        {
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
    
            HttpSession session = request.getSession();
    
            System.out.println("Second Servlet sessionid :" + session.getId());
    
            String userName = (String) session.getAttribute("Username");
            out.print("Hello " + userName + "<br>");
    
            out.print("*************************************************************"
                    + "<br>");
    
            Enumeration<String> namesEnum = session.getAttributeNames();
            while (namesEnum.hasMoreElements())
            {
                String name = (String) namesEnum.nextElement();
                String value = (String) session.getAttribute(name);
                out.print(name + ":" + value);
                out.print("<br>");
    
            }
    
            out.close();
        }
    
        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>HttpSessionAttributeDemo</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>s1</servlet-name>
            <servlet-class>FirstServlet</servlet-class>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>s1</servlet-name>
            <url-pattern>/servlet1</url-pattern>
        </servlet-mapping>
    
        <servlet>
            <servlet-name>s2</servlet-name>
            <servlet-class>SecondServlet</servlet-class>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>s2</servlet-name>
            <url-pattern>/servlet2</url-pattern>
        </servlet-mapping>
    
    </web-app>
    

    index.html
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Multiple Filters Demo</title>
    </head>
    <body>
        <form action="servlet1" method="GET">
            
            UserName :  <input type="text" name="username" /><br /> 
            
            Password :&nbsp; &nbsp; <input type="password" name="password" /><br /> 
                
            <input type="submit" value="login" />
            
        </form>
    </body>
    </html>
    
    

    Environment Used 

    JDK version :1.7.0_51
    Tomcat version : 7.0.50 

    To Download HttpSessionAttributeDemoApp Project Click the below link

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

    See also:

  • Servlets Tutorial
  • All Design Patterns Links
  • Thursday, 22 May 2014

    Servlets : HttpSession Interface

    🚀 Master Java & Servlets with Ram N Java!

    Subscribe to get clear, beginner-friendly tutorials right when they drop.

    🔔 Subscribe to Ram N Java

    What is the HttpSession Interface?

    HTTP is fundamentally a stateless protocol, meaning the web server forgets who you are as soon as a request-response cycle completes. To build real-world web applications like shopping carts, user dashboards, and authentication systems, servers need a way to remember individual clients across multiple visits.

    In Java Servlets, state management across requests is handled via the HttpSession interface. It provides a standardized mechanism to identify a user across more than one page request and store relevant user information on the server.

    How to Obtain an HttpSession Object

    You get a reference to HttpSession directly from the HttpServletRequest object using the getSession() method:

    • request.getSession() or request.getSession(true): Returns the current active session associated with the request. If no session exists for the client, a brand new session is created.
    • request.getSession(false): Returns the existing session if one is currently active. If no session exists, it returns null rather than creating a new one.

    Essential Methods of HttpSession

    • setAttribute(String name, Object value): Binds an object to this session using the specified name.
    • getAttribute(String name): Returns the object bound with the specified name in this session.
    • getId(): Returns a unique identifier string assigned to the specific session (e.g., JSESSIONID).
    • invalidate(): Invalidates and destroys the session, unbinding all objects stored within it (commonly used during user logout).
    • setMaxInactiveInterval(int interval): Specifies the time, in seconds, between client requests before the container will automatically invalidate the session.

    Recommended Next Watch

    Deepen your understanding of Java session tracking with these related tutorials:


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

    Click the below Image to Enlarge
    Servlets : HttpSession Interface
    Servlets : HttpSession Interface
    Servlets : HttpSession Interface
    See also:

  • Servlets Tutorial
  • All Design Patterns Links
  • 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
  • Monday, 5 May 2014

    Servlets : Send Redirect Demo[Transfer control to different domain]

    🚀 Master Java Servlets & Web Architecture!

    Looking to strengthen your backend development foundation? Subscribe to Ram N Java for more step-by-step programming guides!

    🔔 Subscribe to Ram N Java

    What is response.sendRedirect() in Java Servlets?

    In Java Servlet programming, HttpServletResponse.sendRedirect(String location) is used to redirect an incoming client request to an entirely different resource.

    Unlike RequestDispatcher.forward()—which operates purely server-side within the same web application—sendRedirect() instructs the client's browser to make a fresh request to a new URL. This means you can transfer control not only within the same container, but also across external domains (such as Google, Yahoo, or external payment gateways).

    How sendRedirect Works Under the Hood

    1. The client sends an HTTP request to your servlet endpoint (e.g., /search).
    2. The servlet processes incoming parameters and invokes response.sendRedirect("https://www.google.com/search?q=" + query).
    3. The servlet container returns an HTTP status code 302 (Found / Temporary Redirect) with the Location header containing the target URL.
    4. The client's browser reads this header and automatically issues a brand-new GET request to the target domain.
    5. The user's browser address bar updates to reflect the new target URL.

    Step-by-Step Implementation: Search Query Redirect

    Let us look at a practical demonstration where search text entered in an HTML form is redirected to an external search engine:

    1. The HTML Input Form (index.html)

    <form action="searchRedirect" method="GET">
      <label for="search">Search Query:</label>
      <input type="text" id="search" name="query" />
      <input type="submit" value="Search on Google" />
    </form>

    2. The Redirect Servlet (SearchRedirectServlet.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 SearchRedirectServlet extends HttpServlet {
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse res)
                throws ServletException, IOException {
    
            // Retrieve search query submitted from form
            String query = req.getParameter("query");
    
            // Redirect control to an external domain
            if (query != null && !query.trim().isEmpty()) {
                res.sendRedirect("https://www.google.com/search?q=" + query);
            } else {
                res.sendRedirect("https://www.google.com");
            }
        }
    }

    Key Differences: sendRedirect() vs RequestDispatcher.forward()

    • Scope: sendRedirect() can redirect to any external domain, whereas forward() works only within the same web application.
    • Browser Address Bar: In sendRedirect(), the browser URL updates to the new location. In forward(), the browser URL remains unchanged.
    • HTTP Requests: sendRedirect() involves two separate request/response round-trips; forward() executes entirely within a single round-trip.

    Recommended Related Tutorials

    Deepen your understanding of request dispatching and redirection with these tutorials from Ram N Java:


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

    Click the below Image to Enlarge



    SendRedirectDemo Project Dir Structure


    MySearchServlet.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 MySearchServlet 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
        {
            String searchKey = request.getParameter("searchKey");
            response.sendRedirect("https://www.google.co.in/#q=" + searchKey);
        }
    
        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>SendRedirectDemo</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>search</servlet-name>
            <servlet-class>MySearchServlet</servlet-class>
        </servlet>
        
        <servlet-mapping>
            <servlet-name>search</servlet-name>
            <url-pattern>/search</url-pattern>
        </servlet-mapping>
    
    </web-app>
    

    index.html
    <!DOCTYPE HTML>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>SendRedirectDemo</title>
    </head>
    <body>
        <li><a href="mysearch.html">mysearch</a></li>
    </body>
    </html>
    
    
    mysearch.html
    <!DOCTYPE HTML>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>SendRedirectDemo</title>
    </head>
    <body>
        <form action="search">
            <input type="text" name="searchKey"> 
            <input type="submit" value="Google Search">
        </form>
    </body>
    </html>
    
    
    Environment Used 

    JDK version :1.6.0_30
    Tomcat version : 7.0.50 

    To Download SendRedirectDemo_Different_ContainerApp Project Click the below link

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

    See also:

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

    Sunday, 4 May 2014

    Servlets : Send Redirect Demo[Transfer control to the Servlet which is in the Same Webcontainer]

    Enjoying Java & Servlet Tutorials?

    Subscribe to Ram N Java for hands-on, practical Java guides and clear web development tutorials!

    🔔 Subscribe to Ram N Java

    What is Send Redirect in Java Servlets?

    In Java web applications, sendRedirect is a mechanism provided by the HttpServletResponse interface that redirects a client browser to a different resource. Unlike request forwarding, which occurs entirely on the server side, a redirection involves communication between the client (browser) and the server.

    When you call response.sendRedirect("url"), the servlet container sends an HTTP response back to the browser with an HTTP status code 302 (Found) along with a Location header containing the destination URL. Upon reading this response, the browser automatically sends a brand new GET request to the specified URL.

    How Control Transfers Within the Same Web Container

    In this demonstration, control is transferred between two servlets hosted inside the same Tomcat web container:

    • LoginServlet (mapped to /login): Handles incoming user credentials submitted via a POST request from index.html.
    • WelcomeServlet (mapped to /welcome): Welcomes authenticated users and displays output directly to the browser.

    When valid credentials are provided, LoginServlet invokes:

    response.sendRedirect("welcome");

    The browser receives status code 302, detects the target location http://localhost:8080/sendredirectdemo/welcome, and initiates a clean GET request to display the welcome screen.

    Key Takeaways

    • Two Requests & Two Responses: Redirection requires two distinct round-trips between the client and server.
    • URL Updates in the Browser: The browser address bar updates to show the target resource URL.
    • HTTP Status Code 302: Indicates a temporary redirect to the browser.
    • Different Scope: Request attributes set in the initial servlet are not carried over to the redirected servlet because a new request is created.

    Recommended Related Tutorials

    Continue mastering Java Servlets with these related video guides from Ram N Java:


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

    Click the below Image to Enlarge



    SendRedirectDemo Project Dir Structure

    LoginServlet.java
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class LoginServlet 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 doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException
        {
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
    
            String userName = request.getParameter("username");
            String passWord = request.getParameter("password");
    
            if (userName.equalsIgnoreCase("ram") && passWord.equals("ram"))
            {
                response.sendRedirect("http://localhost:8080/SendRedirectDemo/welcome");
            }
            else
            {
                out.print("Sorry UserName or Password is Wrong!");
                RequestDispatcher requestDispatcher = request
                        .getRequestDispatcher("/index.html");
                requestDispatcher.include(request, response);
            }
        }
    
        public void destroy()
        {
            System.out.println("----------------------------------------");
            System.out.println(" destroy method is called in "
                    + this.getClass().getName());
            System.out.println("-----------------------------------------");
        }
    }
    
    
    
    
    
    WelcomeServlet.java
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class WelcomeServlet 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
        {
    
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
    
            out.print("Welcome");
        }
    
        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>SendRedirectDemo</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>LoginServlet</servlet-name>
        <servlet-class>LoginServlet</servlet-class>
      </servlet>
      
      <servlet>
        <servlet-name>WelcomeServlet</servlet-name>
        <servlet-class>WelcomeServlet</servlet-class>
      </servlet>
     
      <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/login</url-pattern>
      </servlet-mapping>
      
      <servlet-mapping>
        <servlet-name>WelcomeServlet</servlet-name>
        <url-pattern>/welcome</url-pattern>
      </servlet-mapping>
      
    </web-app>
    
    
    
    index.html
    <!DOCTYPE HTML>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>RequestDispatcherDemo</title>
    </head>
    <body>
        <form action="login" method="post">
            
            UserName :  <input type="text" name="username" /><br /> 
            
            Password :&nbsp; &nbsp; <input type="password" name="password" /><br /> 
                
            <input type="submit" value="login" />
            
        </form>
    </body>
    </html>
    
    
    Environment Used 

    JDK version :1.6.0_30
    Tomcat version : 7.0.50 

    To Download SendRedirectDemoApp Project Click the below link

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

    See also:

  • Servlets Tutorial
  • All Design Patterns Links
  • No comments:
    Newer Posts Older Posts Home

    Tutorials