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