001package bradleyross.j2ee.servlets; 002import javax.servlet.http.HttpServletRequest; 003// import javax.servlet.http.HttpServletResponse; 004import java.io.IOException; 005import java.util.Enumeration; 006import java.util.Collections; 007import java.util.Vector; 008import bradleyross.library.helpers.GenericPrinter; 009import bradleyross.library.helpers.StringHelpers; 010/** 011 * This is a dummy servlet that echoes back the parameters 012 * passed in the HTTP transaction. 013 * 014 * @author Bradley Ross 015 * 016 */ 017@SuppressWarnings("serial") 018public class EchoBack extends Servlet 019{ 020 @Override 021 protected void processor(ThisPage thisPage) throws IOException 022 { 023 HttpServletRequest request = thisPage.getRequest(); 024 // HttpServletResponse response = thisPage.getResponse(); 025 GenericPrinter printer = thisPage.getPrinter(); 026 printer.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">"); 027 printer.println("<html><head>"); 028 printer.println("<title>Echo back Parameters</title>"); 029 printer.println("</head><body>"); 030 printer.println("<h1>Contents of Form Submittal</h1>"); 031 printer.println("<p>When a form is submitted that has this servlet listed "); 032 printer.print("as the action, this page echoes back the HTTP headers "); 033 printer.println("and the parameters contained in the form.</p>"); 034 printer.println("<p>Method: " + request.getMethod() + "</p>"); 035 printer.println("<p>Content Type: " + request.getContentType() + "</p>"); 036 printer.println("<p>Character Encoding: " + request.getCharacterEncoding() + "</p>"); 037 printer.print("<p><a href=\"#headers\">Headers</a> "); 038 printer.println(" <a href=\"#parameters\">Parameters</a></p>"); 039 printer.println("<h2><a name=\"headers\">Headers</a></h2>"); 040 Enumeration<?> headerList = request.getHeaderNames(); 041 printer.println("<table border=\"1\""); 042 while (headerList.hasMoreElements()) 043 { 044 int counter2 = 0; 045 String name = (String) headerList.nextElement(); 046 Enumeration<?> headerValues = request.getHeaders(name); 047 printer.println("<tr><td>" + name + "</td><td><ul>"); 048 while (headerValues.hasMoreElements()) 049 { 050 counter2++; 051 String value = (String) headerValues.nextElement(); 052 printer.println("<li>" + StringHelpers.escapeHTML(value) + "</li>"); 053 } 054 if (counter2 == 0) 055 { printer.println("<i>No values</i>"); } 056 printer.println("</ul></td></tr>"); 057 } 058 printer.println("</table>"); 059 printer.println("<h2><a name=\"parameters\">Parameters</a></h2>"); 060 Enumeration<?> parameterList = request.getParameterNames(); 061 Vector<String> parameterVector = new Vector<String>(); 062 while (parameterList.hasMoreElements()) 063 { 064 String name = (String) parameterList.nextElement(); 065 parameterVector.add(name); 066 } 067 068 parameterVector.trimToSize(); 069 if (parameterVector.size() > 0) 070 { 071 printer.println("<table border=\"1\">"); 072 printer.println("<tr><th>Parameter name</th><th>Parameter Values</th></tr>"); 073 Collections.sort(parameterVector); 074 for (int i = 0; i < parameterVector.size(); i++) 075 { 076 String parameterName = parameterVector.elementAt(i); 077 printer.print("<tr><td>" + parameterName + "</td>"); 078 String values[] = request.getParameterValues(parameterName); 079 if (values.length == 0) 080 { 081 printer.print("<td><i>No parameter values</i></td></tr>"); 082 } 083 else 084 { 085 printer.print("<td>"); 086 for (int i2 = 0; i2 < values.length; i2++) 087 { 088 if (i2 > 0) 089 { 090 printer.print("<br />"); 091 } 092 String thisValue = values[i2]; 093 if (thisValue != null) 094 { 095 thisValue = thisValue.trim(); 096 } 097 if (thisValue == null) 098 { 099 printer.print("<i>Null value</i>"); 100 } 101 else if (thisValue.length() == 0) 102 { 103 printer.print("<i>Empty String</i>"); 104 } 105 else 106 { 107 printer.print(thisValue); 108 } 109 } 110 printer.println("</td></tr>"); 111 } 112 } 113 printer.print("</table>"); 114 } 115 else 116 { 117 printer.println("<p>No parameters were used in this transaction</p>"); 118 } 119 printer.print("<h2>Request Attributes</h2>"); 120 Enumeration<?> attributeList = request.getAttributeNames(); 121 Vector<String> attributeVector = new Vector<String>(); 122 while (attributeList.hasMoreElements()) 123 { 124 String name = (String) attributeList.nextElement(); 125 attributeVector.add(name); 126 } 127 attributeVector.trimToSize(); 128 if (attributeVector.size() > 0) 129 { 130 printer.println("<ul>"); 131 for (int i = 0; i < attributeVector.size(); i++) 132 { 133 printer.println(StringHelpers.escapeHTML(attributeVector.elementAt(i))); 134 } 135 printer.println("</ul>"); 136 } 137 else 138 { 139 printer.println("<p>No attributes for transaction</p>"); 140 } 141 printer.println("</body></html>"); 142 thisPage.sendContents(); 143 } 144}