View Javadoc

1   //
2   //  ========================================================================
3   //  Copyright (c) 1995-2013 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  
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   * Test Servlet Sessions.
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 }