1 
2 import java.io.IOException;
3 
4 import javax.servlet.ServletException;
5 import javax.servlet.annotation.WebServlet;
6 import javax.servlet.http.HttpServlet;
7 import javax.servlet.http.HttpServletRequest;
8 import javax.servlet.http.HttpServletResponse;
9 
10 import javax.servlet.http.HttpSession;
11 import javax.servlet.http.HttpSessionAttributeListener;
12 import javax.servlet.http.HttpSessionBindingEvent;
13 import javax.servlet.http.HttpSessionEvent;
14 import javax.servlet.http.HttpSessionIdListener;
15 import javax.servlet.http.HttpSessionListener;
16 
17 @WebServlet(urlPatterns = "/")
18 public class app extends HttpServlet implements
19     HttpSessionListener,
20     HttpSessionIdListener,
21     HttpSessionAttributeListener
22 {
23     private static String session_created = "";
24     private static String session_destroyed = "";
25     private static String session_id_changed = "";
26     private static String attribute_added = "";
27     private static String attribute_removed = "";
28     private static String attribute_replaced = "";
29 
30     @Override
sessionCreated(HttpSessionEvent se)31     public void sessionCreated(HttpSessionEvent se)
32     {
33         session_created += se.getSession().getId();
34     }
35 
36     @Override
sessionDestroyed(HttpSessionEvent se)37     public void sessionDestroyed(HttpSessionEvent se)
38     {
39         session_destroyed += se.getSession().getId();
40     }
41 
42     @Override
sessionIdChanged(HttpSessionEvent event, String oldId)43     public void sessionIdChanged(HttpSessionEvent event, String oldId)
44     {
45         session_id_changed += " " + oldId + "->" + event.getSession().getId();
46     }
47 
48     @Override
attributeAdded(HttpSessionBindingEvent event)49     public void attributeAdded(HttpSessionBindingEvent event)
50     {
51         attribute_added += event.getName() + "=" + event.getValue();
52     }
53 
54     @Override
attributeRemoved(HttpSessionBindingEvent event)55     public void attributeRemoved(HttpSessionBindingEvent event)
56     {
57         attribute_removed += event.getName() + "=" + event.getValue();
58     }
59 
60     @Override
attributeReplaced(HttpSessionBindingEvent event)61     public void attributeReplaced(HttpSessionBindingEvent event)
62     {
63         attribute_replaced += event.getName() + "=" + event.getValue();
64     }
65 
66     @Override
doGet(HttpServletRequest request, HttpServletResponse response)67     public void doGet(HttpServletRequest request, HttpServletResponse response)
68         throws IOException, ServletException
69     {
70         HttpSession s = request.getSession();
71         s.setAttribute("var1", request.getParameter("var1"));
72 
73         response.addHeader("X-Session-Id", s.getId());
74         response.addHeader("X-Session-Created", session_created);
75         response.addHeader("X-Session-Destroyed", session_destroyed);
76         response.addHeader("X-Attr-Added", attribute_added);
77         response.addHeader("X-Attr-Removed", attribute_removed);
78         response.addHeader("X-Attr-Replaced", attribute_replaced);
79     }
80 }
81