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