View Javadoc

1   // ========================================================================
2   // Copyright (c) 1996-2009 Mort Bay Consulting Pty. Ltd.
3   // ------------------------------------------------------------------------
4   // All rights reserved. This program and the accompanying materials
5   // are made available under the terms of the Eclipse Public License v1.0
6   // and Apache License v2.0 which accompanies this distribution.
7   // The Eclipse Public License is available at 
8   // http://www.eclipse.org/legal/epl-v10.html
9   // The Apache License v2.0 is available at
10  // http://www.opensource.org/licenses/apache2.0.php
11  // You may elect to redistribute this code under either of these licenses. 
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  /** Test Servlet Sessions.
30   *
31   * 
32   */
33  public class SessionDump extends HttpServlet
34  {
35  
36      int redirectCount=0;
37      /* ------------------------------------------------------------ */
38      String pageType;
39  
40      /* ------------------------------------------------------------ */
41      public void init(ServletConfig config)
42           throws ServletException
43      {
44          super.init(config);        
45      }
46  
47      /* ------------------------------------------------------------ */
48      protected void handleForm(HttpServletRequest request,
49                            HttpServletResponse response) 
50      {
51          HttpSession session = request.getSession(false);
52          String action = request.getParameter("Action");
53          String name =  request.getParameter("Name");
54          String value =  request.getParameter("Value");
55  
56          if (action!=null)
57          {
58              if(action.equals("New Session"))
59              {   
60                  session = request.getSession(true);
61                  session.setAttribute("test","value");
62              }
63              else if (session!=null)
64              {
65                  if (action.equals("Invalidate"))
66                      session.invalidate();
67                  else if (action.equals("Set") && name!=null && name.length()>0)
68                      session.setAttribute(name,value);
69                  else if (action.equals("Remove"))
70                      session.removeAttribute(name);
71              }       
72          }
73      }
74      
75      /* ------------------------------------------------------------ */
76      public void doPost(HttpServletRequest request,
77                         HttpServletResponse response) 
78          throws ServletException, IOException
79      {
80          handleForm(request,response);
81          String nextUrl = getURI(request)+"?R="+redirectCount++;
82          String encodedUrl=response.encodeRedirectURL(nextUrl);
83          response.sendRedirect(encodedUrl);
84      }
85          
86      /* ------------------------------------------------------------ */
87      public void doGet(HttpServletRequest request,
88                        HttpServletResponse response) 
89          throws ServletException, IOException
90      {
91          handleForm(request,response);
92          
93          response.setContentType("text/html");
94  
95          HttpSession session = request.getSession(getURI(request).indexOf("new")>0);
96          try
97          {
98              if (session!=null) 
99                  session.isNew();
100         }
101         catch(IllegalStateException e)
102         {
103             session=null;
104         }
105         
106         PrintWriter out = response.getWriter();
107         out.println("<h1>Session Dump Servlet:</h1>"); 
108         out.println("<form action=\""+response.encodeURL(getURI(request))+"\" method=\"post\">");       
109         
110         if (session==null)
111         {
112             out.println("<H3>No Session</H3>");
113             out.println("<input type=\"submit\" name=\"Action\" value=\"New Session\"/>");
114         }
115         else
116         {
117             try
118             {  
119                 out.println("<b>ID:</b> "+session.getId()+"<br/>");
120                 out.println("<b>New:</b> "+session.isNew()+"<br/>");
121                 out.println("<b>Created:</b> "+new Date(session.getCreationTime())+"<br/>");
122                 out.println("<b>Last:</b> "+new Date(session.getLastAccessedTime())+"<br/>");
123                 out.println("<b>Max Inactive:</b> "+session.getMaxInactiveInterval()+"<br/>");
124                 out.println("<b>Context:</b> "+session.getServletContext()+"<br/>");
125                 
126               
127                 Enumeration keys=session.getAttributeNames();
128                 while(keys.hasMoreElements())
129                 {
130                     String name=(String)keys.nextElement();
131                     String value=""+session.getAttribute(name);
132 
133                     out.println("<b>"+name+":</b> "+value+"<br/>");
134                 }
135 
136                 out.println("<b>Name:</b><input type=\"text\" name=\"Name\" /><br/>");
137                 out.println("<b>Value:</b><input type=\"text\" name=\"Value\" /><br/>");
138 
139                 out.println("<input type=\"submit\" name=\"Action\" value=\"Set\"/>");
140                 out.println("<input type=\"submit\" name=\"Action\" value=\"Remove\"/>");
141                 out.println("<input type=\"submit\" name=\"Action\" value=\"Refresh\"/>");
142                 out.println("<input type=\"submit\" name=\"Action\" value=\"Invalidate\"/><br/>");
143                 
144                 out.println("</form><br/>");
145                 
146                 if (request.isRequestedSessionIdFromCookie())
147                     out.println("<P>Turn off cookies in your browser to try url encoding<BR>");
148                 
149                 if (request.isRequestedSessionIdFromURL())
150                     out.println("<P>Turn on cookies in your browser to try cookie encoding<BR>");
151                 out.println("<a href=\""+response.encodeURL(request.getRequestURI()+"?q=0")+"\">Encoded Link</a><BR>");
152                 
153             }
154             catch (IllegalStateException e)
155             {
156                 e.printStackTrace();
157             }
158         }
159 
160     }
161 
162     /* ------------------------------------------------------------ */
163     public String getServletInfo() {
164         return "Session Dump Servlet";
165     }
166 
167     /* ------------------------------------------------------------ */
168     private String getURI(HttpServletRequest request)
169     {
170         String uri=(String)request.getAttribute("javax.servlet.forward.request_uri");
171         if (uri==null)
172             uri=request.getRequestURI();
173         return uri;
174     }
175     
176 }