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