1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements.  See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License.  You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 
18 import java.io.IOException;
19 import java.io.PrintWriter;
20 import java.util.Date;
21 import java.util.Enumeration;
22 import java.util.ResourceBundle;
23 
24 import javax.servlet.ServletException;
25 import javax.servlet.http.HttpServlet;
26 import javax.servlet.http.HttpServletRequest;
27 import javax.servlet.http.HttpServletResponse;
28 import javax.servlet.http.HttpSession;
29 
30 import util.HTMLFilter;
31 
32 /**
33  * Example servlet showing request headers
34  *
35  * @author James Duncan Davidson <duncan@eng.sun.com>
36  */
37 
38 public class SessionExample extends HttpServlet {
39 
40     private static final long serialVersionUID = 1L;
41 
42     @Override
doGet(HttpServletRequest request, HttpServletResponse response)43     public void doGet(HttpServletRequest request,
44                       HttpServletResponse response)
45         throws IOException, ServletException
46     {
47         ResourceBundle rb = ResourceBundle.getBundle("LocalStrings",request.getLocale());
48 
49         response.setContentType("text/html");
50         response.setCharacterEncoding("UTF-8");
51 
52         PrintWriter out = response.getWriter();
53         out.println("<!DOCTYPE html><html>");
54         out.println("<head>");
55         out.println("<meta charset=\"UTF-8\" />");
56 
57 
58         String title = rb.getString("sessions.title");
59         out.println("<title>" + title + "</title>");
60         out.println("</head>");
61         out.println("<body bgcolor=\"white\">");
62 
63         // img stuff not req'd for source code HTML showing
64         // relative links everywhere!
65 
66         // XXX
67         // making these absolute till we work out the
68         // addition of a PathInfo issue
69 
70         out.println("<a href=\"../sessions.html\">");
71         out.println("<img src=\"../images/code.gif\" height=24 " +
72                     "width=24 align=right border=0 alt=\"view code\"></a>");
73         out.println("<a href=\"../index.html\">");
74         out.println("<img src=\"../images/return.gif\" height=24 " +
75                     "width=24 align=right border=0 alt=\"return\"></a>");
76 
77         out.println("<h3>" + title + "</h3>");
78 
79         HttpSession session = request.getSession(true);
80         out.println(rb.getString("sessions.id") + " " + session.getId());
81         out.println("<br>");
82         out.println(rb.getString("sessions.created") + " ");
83         out.println(new Date(session.getCreationTime()) + "<br>");
84         out.println(rb.getString("sessions.lastaccessed") + " ");
85         out.println(new Date(session.getLastAccessedTime()));
86 
87         String dataName = request.getParameter("dataname");
88         String dataValue = request.getParameter("datavalue");
89         if (dataName != null && dataValue != null) {
90             session.setAttribute(dataName, dataValue);
91         }
92 
93         out.println("<P>");
94         out.println(rb.getString("sessions.data") + "<br>");
95         Enumeration<String> names = session.getAttributeNames();
96         while (names.hasMoreElements()) {
97             String name = names.nextElement();
98             String value = session.getAttribute(name).toString();
99             out.println(HTMLFilter.filter(name) + " = "
100                         + HTMLFilter.filter(value) + "<br>");
101         }
102 
103         out.println("<P>");
104         out.print("<form action=\"");
105         out.print(response.encodeURL("SessionExample"));
106         out.print("\" ");
107         out.println("method=POST>");
108         out.println(rb.getString("sessions.dataname"));
109         out.println("<input type=text size=20 name=dataname>");
110         out.println("<br>");
111         out.println(rb.getString("sessions.datavalue"));
112         out.println("<input type=text size=20 name=datavalue>");
113         out.println("<br>");
114         out.println("<input type=submit>");
115         out.println("</form>");
116 
117         out.println("<P>GET based form:<br>");
118         out.print("<form action=\"");
119         out.print(response.encodeURL("SessionExample"));
120         out.print("\" ");
121         out.println("method=GET>");
122         out.println(rb.getString("sessions.dataname"));
123         out.println("<input type=text size=20 name=dataname>");
124         out.println("<br>");
125         out.println(rb.getString("sessions.datavalue"));
126         out.println("<input type=text size=20 name=datavalue>");
127         out.println("<br>");
128         out.println("<input type=submit>");
129         out.println("</form>");
130 
131         out.print("<p><a href=\"");
132         out.print(HTMLFilter.filter(response.encodeURL("SessionExample?dataname=foo&datavalue=bar")));
133         out.println("\" >URL encoded </a>");
134 
135         out.println("</body>");
136         out.println("</html>");
137     }
138 
139     @Override
doPost(HttpServletRequest request, HttpServletResponse response)140     public void doPost(HttpServletRequest request,
141                       HttpServletResponse response)
142         throws IOException, ServletException
143     {
144         doGet(request, response);
145     }
146 
147 }
148