An Example of HttpSessionAttributeListener in Java
UPDATED: 16 March 2015
Tags:
servlet
HttpSessionAttributeListener, is used to keep track of every HttpSession attribute Added, Replaced or Removed in your current web application.
Source Code
import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionBindingEvent; public class SessionAttributeListener implements HttpSessionAttributeListener { /** * Called when any servlet/jsp in application add the Attribute in HttpSession * @param event */ @Override public void attributeAdded(HttpSessionBindingEvent event) { /** * Get the attribute name. * Attribute name is always in String */ String strAttributeName = event.getName(); /** * Get the attribute value * Attribute value can be String, Object, etc... */ Object objAttributeValue = event.getValue(); /* Print the value of AttributeName and AttributeValue */ System.out.println("Attribute added: [" + strAttributeName + " : " + objAttributeValue + "]"); } /** * Called when any servlet/jsp in application override/replace/add_same_attribute_to the HttpSession * @param event */ @Override public void attributeRemoved(HttpSessionBindingEvent event) { /** * Get the attribute name. * Attribute name is always in String */ String strAttributeName = event.getName(); /** * Get the attribute value * Attribute value can be String, Object, etc... */ Object objAttributeValue = event.getValue(); /* Print the value of AttributeName and AttributeValue */ System.out.println("Attribute removed: [" + strAttributeName + " : " + objAttributeValue + "]"); } /** * Called when any servlet/jsp in application try to remove the attribute from HttpSession * @param event */ @Override public void attributeReplaced(HttpSessionBindingEvent event) { /** * Get the attribute name. * Attribute name is always in String */ String strAttributeName = event.getName(); /** * Get the attribute value * Attribute value can be String, Object, etc... */ Object objAttributeValue = event.getValue(); /* Print the value of AttributeName and AttributeValue */ System.out.println("Attribute replaced: [" + strAttributeName + " : " + objAttributeValue + "]"); } }
Attach SessionAttributeListener in your web application through web.xml . Add following code in you web.xml between web-app tag.
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> ... ... <servlet> <servlet-name>SessionAttributeServlet</servlet-name> <servlet-class>com.javaquery.servlet.SessionAttributeServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>SessionAttributeServlet</servlet-name> <url-pattern>/SessionAttributeServlet</url-pattern> </servlet-mapping> <listener> <listener-class>com.javaquery.Listeners.SessionAttributeListener</listener-class> </listener> </web-app>
Source Code (Sample Servlet)
import java.io.IOException; 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 SessionAttributeServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { HttpSession httpSession = request.getSession(); /* SessionAttributeListener.attributeAdded(HttpSessionBindingEvent event) will be called */ httpSession.setAttribute("username", "vicky.thakor"); /* SessionAttributeListener.attributeRemoved(HttpSessionBindingEvent event) will be called */ httpSession.setAttribute("username", "rajpriya.chudasama"); /* SessionAttributeListener.attributeReplaced(HttpSessionBindingEvent event) will be called */ httpSession.removeAttribute("username"); } catch (Exception e) { e.printStackTrace(); } } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
Tags:
servlet
0 comments :