View Javadoc

1   //
2   //  ========================================================================
3   //  Copyright (c) 1995-2012 Mort Bay Consulting Pty. Ltd.
4   //  ------------------------------------------------------------------------
5   //  All rights reserved. This program and the accompanying materials
6   //  are made available under the terms of the Eclipse Public License v1.0
7   //  and Apache License v2.0 which accompanies this distribution.
8   //
9   //      The Eclipse Public License is available at
10  //      http://www.eclipse.org/legal/epl-v10.html
11  //
12  //      The Apache License v2.0 is available at
13  //      http://www.opensource.org/licenses/apache2.0.php
14  //
15  //  You may elect to redistribute this code under either of these licenses.
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   * Test Servlet Sessions.
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 }