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