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