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 :