Program to demonstrate how to apply listener to Session attributes in Java EE
package com.hubberspot.javaee.listener; import javax.servlet.annotation.WebListener; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionBindingEvent; // @WebListener annotation informs container that // this class is a web listener which will listen to // various events happening during lifecycle of application // Here this class listens to changes made to HttpSession // attributes. // We make class implements HttpSessionAttributeListener // which has three methods : attributeRemoved(), attributeAdded() // and attributeReplaced() , which are called by the container // whenever attributes are added, removed, or replaced // within the HTTP session. @WebListener public class MySessionAttributeListener implements HttpSessionAttributeListener { public void attributeRemoved(HttpSessionBindingEvent event) { System.out.println("Method called when HttpSession attribute removed :"); HttpSession session = event.getSession(); System.out.println("Session ID : " + session.getId()); System.out.println("Session Name : " + event.getName()); System.out.println("Session Value : " + event.getValue()); } public void attributeAdded(HttpSessionBindingEvent event) { System.out.println("Method called when HttpSession attribute added :"); HttpSession session = event.getSession(); System.out.println("Session ID : " + session.getId()); System.out.println("Session Name : " + event.getName()); System.out.println("Session Value : " + event.getValue()); } public void attributeReplaced(HttpSessionBindingEvent event) { System.out.println("Method called when HttpSession attribute replaced :"); HttpSession session = event.getSession(); System.out.println("Session ID : " + session.getId()); System.out.println("Session Name : " + event.getName()); System.out.println("Session Value : " + event.getValue()); } }Run HelloWorldServlet.java and methods mentioned in above listener will be called by the container.
package com.hubberspot.javaee; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebInitParam; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; // @WebServlet annotation has a initParams field which takes // in initialization parameters for a servlet. // @WebInitParam annotation takes in a name and value for the // initialization parameters for the current Servlet. @WebServlet(name = "HelloWorldServlet" , urlPatterns = { "/HelloWorldServlet" } , initParams = { @WebInitParam(name = "user" , value = "Jonty") }) public class HelloWorldServlet extends HttpServlet { protected void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); HttpSession session = request.getSession(); // attributeAdded method gets executed session.setAttribute("user", "Jonty"); // attributeReplaced method gets executed session.setAttribute("user", "Dinesh"); // attributeRemoved method gets executed session.removeAttribute("user"); } }Output of the program :