Servlet HttpSession

HttpSession is an interface used by servlet container to create a session between Http client and Http server. So using this interface we can maintain the state of a user.

The object of HttpSession stores various information about the user. This interface is present in javax.servlet.http package.

Methods of HttpSession

These are some important methods provided by HttpSession interface.

                 Methods

               Description

String getId()

This method returns a unique id of client used to identify it.

long getLastAccessedTime()

This method provides the time when last request is made. It returns the time in milliseconds.

Long getCreationTime()

This method provides the time when first request is made. It returns the time in milliseconds.

void setMaxInactiveInterval()

This method sets time in seconds after which the session becomes invalid.

Object getAttribute(String name)

This method provides the value of attribute bind with the name passed within it.

Example of HttpSession

In this example, we will maintain the state of a particular client. When a client makes first request then its unique id is generated. With each request, number of visit of a user is incremented by one unless request will be made within a specific period of time given in setMaxInactiveInterval() method unless the session becomes expire.

HttpSessionExample.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import javax.servlet.annotation.WebServlet;
@WebServlet("/HttpSessionExample")
public class HttpSessionExample extends HttpServlet {
 public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException {
 res.setContentType("text/html");
 HttpSession session = req.getSession();
 res.setContentType("text/html");
 PrintWriter pw=res.getWriter();
 Integer attribute=(Integer)session.getAttribute("attribute");
 if (attribute == null)
 {
             attribute = new Integer(1);
             pw.println("<h1><center>NewUser</center></h1>");
 } else {
             pw.println("<h1><center>Welcome back</center></h1>");
             attribute = new Integer(attribute.intValue() + 1);
 }
 session.setAttribute("attribute",attribute);
 session.setMaxInactiveInterval(60);
 pw.println("<h2>Session id:"+session.getId()+"</h2>");
 pw.println("<h2>Servlet last accessed time:"+new Date(session.getLastAccessedTime())+"</h2>");
 pw.println("<h2>Number of time visit:"+attribute+"</h2>");
 }}
Output: