1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package com.acme;
20
21 import java.io.IOException;
22 import java.io.PrintWriter;
23 import java.util.Date;
24 import java.util.Enumeration;
25
26 import javax.servlet.RequestDispatcher;
27 import javax.servlet.ServletConfig;
28 import javax.servlet.ServletException;
29 import javax.servlet.http.HttpServlet;
30 import javax.servlet.http.HttpServletRequest;
31 import javax.servlet.http.HttpServletResponse;
32 import javax.servlet.http.HttpSession;
33
34
35
36
37 @SuppressWarnings("serial")
38 public class SessionDump extends HttpServlet
39 {
40
41
42
43 public class ObjectAttributeValue implements java.io.Serializable
44 {
45 long l;
46
47 public ObjectAttributeValue(long l)
48 {
49 this.l = l;
50 }
51
52 public long getValue()
53 {
54 return l;
55 }
56 }
57
58 int redirectCount=0;
59
60 String pageType;
61
62
63 @Override
64 public void init(ServletConfig config)
65 throws ServletException
66 {
67 super.init(config);
68 }
69
70
71 protected void handleForm(HttpServletRequest request,
72 HttpServletResponse response)
73 {
74 HttpSession session = request.getSession(false);
75 String action = request.getParameter("Action");
76 String name = request.getParameter("Name");
77 String value = request.getParameter("Value");
78
79 if (action!=null)
80 {
81 if(action.equals("New Session"))
82 {
83 session = request.getSession(true);
84 session.setAttribute("test","value");
85 session.setAttribute("obj", new ObjectAttributeValue(System.currentTimeMillis()));
86 }
87 else if (session!=null)
88 {
89 if (action.equals("Invalidate"))
90 session.invalidate();
91 else if (action.equals("Set") && name!=null && name.length()>0)
92 session.setAttribute(name,value);
93 else if (action.equals("Remove"))
94 session.removeAttribute(name);
95 }
96 }
97 }
98
99
100 @Override
101 public void doPost(HttpServletRequest request,
102 HttpServletResponse response)
103 throws ServletException, IOException
104 {
105 handleForm(request,response);
106 String nextUrl = getURI(request)+"?R="+redirectCount++;
107 String encodedUrl=response.encodeRedirectURL(nextUrl);
108 response.sendRedirect(encodedUrl);
109 }
110
111
112 @Override
113 public void doGet(HttpServletRequest request,
114 HttpServletResponse response)
115 throws ServletException, IOException
116 {
117 handleForm(request,response);
118
119 response.setContentType("text/html");
120
121 HttpSession session = request.getSession(getURI(request).indexOf("new")>0);
122 try
123 {
124 if (session!=null)
125 session.isNew();
126 }
127 catch(IllegalStateException e)
128 {
129 session=null;
130 }
131
132 PrintWriter out = response.getWriter();
133 out.println("<h1>Session Dump Servlet:</h1>");
134 out.println("<form action=\""+response.encodeURL(getURI(request))+"\" method=\"post\">");
135
136 if (session==null)
137 {
138 out.println("<H3>No Session</H3>");
139 out.println("<input type=\"submit\" name=\"Action\" value=\"New Session\"/>");
140 }
141 else
142 {
143 try
144 {
145 out.println("<b>ID:</b> "+session.getId()+"<br/>");
146 out.println("<b>New:</b> "+session.isNew()+"<br/>");
147 out.println("<b>Created:</b> "+new Date(session.getCreationTime())+"<br/>");
148 out.println("<b>Last:</b> "+new Date(session.getLastAccessedTime())+"<br/>");
149 out.println("<b>Max Inactive:</b> "+session.getMaxInactiveInterval()+"<br/>");
150 out.println("<b>Context:</b> "+session.getServletContext()+"<br/>");
151
152
153 Enumeration<String> keys=session.getAttributeNames();
154 while(keys.hasMoreElements())
155 {
156 String name=(String)keys.nextElement();
157 String value=""+session.getAttribute(name);
158
159 out.println("<b>"+name+":</b> "+value+"<br/>");
160 }
161
162 out.println("<b>Name:</b><input type=\"text\" name=\"Name\" /><br/>");
163 out.println("<b>Value:</b><input type=\"text\" name=\"Value\" /><br/>");
164
165 out.println("<input type=\"submit\" name=\"Action\" value=\"Set\"/>");
166 out.println("<input type=\"submit\" name=\"Action\" value=\"Remove\"/>");
167 out.println("<input type=\"submit\" name=\"Action\" value=\"Refresh\"/>");
168 out.println("<input type=\"submit\" name=\"Action\" value=\"Invalidate\"/><br/>");
169
170 out.println("</form><br/>");
171
172 if (request.isRequestedSessionIdFromCookie())
173 out.println("<P>Turn off cookies in your browser to try url encoding<BR>");
174
175 if (request.isRequestedSessionIdFromURL())
176 out.println("<P>Turn on cookies in your browser to try cookie encoding<BR>");
177 out.println("<a href=\""+response.encodeURL(request.getRequestURI()+"?q=0")+"\">Encoded Link</a><BR>");
178
179 }
180 catch (IllegalStateException e)
181 {
182 e.printStackTrace();
183 }
184 }
185
186 }
187
188
189 @Override
190 public String getServletInfo() {
191 return "Session Dump Servlet";
192 }
193
194
195 private String getURI(HttpServletRequest request)
196 {
197 String uri=(String)request.getAttribute(RequestDispatcher.FORWARD_REQUEST_URI);
198 if (uri==null)
199 uri=request.getRequestURI();
200 return uri;
201 }
202
203 }