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