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