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}