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  import java.io.IOException;
21  import java.io.PrintWriter;
22  
23  import javax.servlet.ServletException;
24  import javax.servlet.http.Cookie;
25  import javax.servlet.http.HttpServlet;
26  import javax.servlet.http.HttpServletRequest;
27  import javax.servlet.http.HttpServletResponse;
28  
29  
30  /* ------------------------------------------------------------ */
31  /** Test Servlet Cookies.
32   *
33   * 
34   */
35  public class CookieDump extends HttpServlet
36  {
37      int redirectCount=0;
38  
39      /* ------------------------------------------------------------ */
40      protected void handleForm(HttpServletRequest request,
41                            HttpServletResponse response) 
42      {
43          String name =  request.getParameter("Name");
44          String value =  request.getParameter("Value");
45          String age =  request.getParameter("Age");
46  
47          if (name!=null && name.length()>0)
48          {
49              Cookie cookie = new Cookie(name,value);
50              if (age!=null && age.length()>0)
51                  cookie.setMaxAge(Integer.parseInt(age));
52              response.addCookie(cookie);
53          }
54      }
55      
56      /* ------------------------------------------------------------ */
57      @Override
58      public void doPost(HttpServletRequest request,
59                         HttpServletResponse response) 
60          throws ServletException, IOException
61      {
62          handleForm(request,response);
63          String nextUrl = getURI(request)+"?R="+redirectCount++;
64          String encodedUrl=response.encodeRedirectURL(nextUrl);
65          response.sendRedirect(encodedUrl);
66      }
67          
68      /* ------------------------------------------------------------ */
69      @Override
70      public void doGet(HttpServletRequest request,
71                        HttpServletResponse response) 
72          throws ServletException, IOException
73      {
74          handleForm(request,response);
75          
76          response.setContentType("text/html");
77  
78          
79          PrintWriter out = response.getWriter();
80          out.println("<h1>Cookie Dump Servlet:</h1>");       
81          
82          Cookie[] cookies = request.getCookies();
83          
84          for (int i=0;cookies!=null && i<cookies.length;i++)
85          {
86              out.println("<b>"+deScript(cookies[i].getName())+"</b>="+deScript(cookies[i].getValue())+"<br/>");
87          }
88          
89          out.println("<form action=\""+response.encodeURL(getURI(request))+"\" method=\"post\">"); 
90  
91          out.println("<b>Name:</b><input type=\"text\" name=\"Name\" value=\"name\"/><br/>");
92          out.println("<b>Value:</b><input type=\"text\" name=\"Value\" value=\"value\"/><br/>");
93          out.println("<b>Max-Age:</b><input type=\"text\" name=\"Age\" value=\"60\"/><br/>");
94          out.println("<input type=\"submit\" name=\"Action\" value=\"Set\"/>");
95  
96      }
97  
98      /* ------------------------------------------------------------ */
99      @Override
100     public String getServletInfo() {
101         return "Session Dump Servlet";
102     }
103 
104     /* ------------------------------------------------------------ */
105     private String getURI(HttpServletRequest request)
106     {
107         String uri=(String)request.getAttribute("javax.servlet.forward.request_uri");
108         if (uri==null)
109             uri=request.getRequestURI();
110         return uri;
111     }
112 
113     /* ------------------------------------------------------------ */
114     protected String deScript(String string)
115     {
116         if (string==null)
117             return null;
118         string=string.replace("&", "&amp;");
119         string=string.replace( "<", "&lt;");
120         string=string.replace( ">", "&gt;");
121         return string;
122     }
123     
124 }