Friday, 24 April 2015

Servlets : Cookies Demo

🚀 Master Java Servlets & Web Development!

Subscribe to Ram N Java for clean Java tutorials, servlet session tracking guides, and step-by-step code demonstrations!

🔔 Subscribe to Ram N Java

Understanding Cookies in Java Servlets

HTTP is fundamentally a stateless protocol, meaning each client request is treated independently without built-in memory of previous interactions. To maintain client state across multiple HTTP requests, Java Servlets provide several session tracking mechanisms—one of the simplest and most widespread being Cookies. A cookie is a small piece of text data sent by a server to a web browser, stored locally on the client machine, and returned with subsequent requests.

Key Concepts & Lifecycle

  • javax.servlet.http.Cookie: The core Java class used to create, inspect, and configure cookies.
  • Name-Value Pair: Cookies are stored as key-value string pairs (e.g., Cookie cookie = new Cookie("user", "Ram")).
  • Adding Cookies to Response: The servlet adds the cookie to the HTTP response header using response.addCookie(cookie).
  • Reading Cookies from Request: On subsequent visits, the servlet reads incoming cookies from the HTTP request header using request.getCookies(), which returns an array of Cookie[] objects.
  • Max Age & Expiration: Control persistence using cookie.setMaxAge(seconds). Setting a positive value makes it a persistent cookie, while negative or zero values control session-only or deletion behavior.

Step-by-Step Implementation Flow

  1. Instantiate the Cookie: Create a new Cookie instance specifying the key and value strings.
  2. Configure Cookie Properties: Set optional attributes such as setMaxAge(), setPath(), or setDomain().
  3. Send Cookie to Client: Call response.addCookie(cookie) before writing response content.
  4. Retrieve Cookies in Another Servlet: Call request.getCookies() to get the array of cookies and iterate through them to locate your target cookie by cookie.getName() and retrieve its data via cookie.getValue().

Benefits of Cookie-Based Session Tracking

  • Client-Side Storage: Minimizes server-side memory overhead since state information is preserved on the user's browser.
  • Simple Implementation: Straightforward API built directly into the standard Java Servlet specification without external dependencies.
  • Customizable Lifespan: Easy to configure whether data lasts only for the browser session or persists across browser restarts.

Recommended Next Videos

Continue your deep dive into Java Servlets and session management with these related tutorials from our channel:


Click here to watch in Youtube : https://www.youtube.com/watch?v=lbwFTNyRv8I&list=UUhwKlOVR041tngjerWxVccw&index=3

Click the below Image to Enlarge
Servlets : Cookies Demo
Servlets : Cookies Demo
Servlets : Cookies Demo
Servlets : Cookies Demo
Servlets : Cookies Demo
Servlets : Cookies Demo
Servlets : Cookies Demo
Servlets : Cookies Demo

FirstServlet.java
import java.io.IOException;
import java.io.PrintWriter;

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

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

        Cookie cookie = new Cookie("userName", userName);// creating cookie object
        response.addCookie(cookie);// adding cookie in the response

        // creating submit button
        out.print("<form action='servlet2'>");
        out.print("<input type='submit' value='go'>");
        out.print("</form>");

        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 javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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();

        Cookie cookiesArray[] = request.getCookies();

        for( Cookie cookie : cookiesArray )
        {
            out.print("Hello " + cookie.getValue());
        }

        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>CookieDemo</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>ServletContextAttributeDemo</title>
</head>
<body>
    <form action="servlet1" method="GET">
    
        Name:<input type="text" name="userName"/><br/>                      
        <input type="submit" value="Submit" />      
    </form>
</body>
</html>

Environment Used

JDK version :1.7.0_51
Tomcat version : 7.0.50

To Download CookieDemoApp Project Click the below link

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

See also:

  • All JavaEE Viedos Playlist
  • All JavaEE Viedos
  • Servlets Tutorial
  • All Design Patterns Links
  • JDBC Tutorial
  • Java Collection Framework Tutorial
  • No comments:

    Post a Comment

    Tutorials