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