/* * @(#)SnoopServlet.java 1.20 97/11/17 * * Copyright (c) 1995, 2004, Oracle. All rights reserved. * * This software is the confidential and proprietary information of Sun * Microsystems, Inc. ("Confidential Information"). You shall not * disclose such Confidential Information and shall use it only in * accordance with the terms of the license agreement you entered into * with Sun. * * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING * THIS SOFTWARE OR ITS DERIVATIVES. * * CopyrightVersion 1.0 */ import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; /** * Snoop servlet. This servlet simply echos back the request line and * headers that were sent by the client, plus any HTTPS information * which is accessible. * * @author Various * @version 1.20 */ public class SnoopServlet extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { doGet(req, res); } public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { PrintWriter out; res.setContentType("text/html;charset=UTF-8"); out = res.getWriter(); out.println(""); out.println("Snoop Servlet"); out.println(""); out.println("

Requested URL:

"); out.println("
");
        out.println(HttpUtils.getRequestURL(req).toString());
        out.println("
"); Enumeration enum = getServletConfig().getInitParameterNames(); if (enum != null) { boolean first = true; while (enum.hasMoreElements()) { if (first) { out.println("

Init Parameters

"); out.println("
");
                    first = false;
                }
                String param = (String) enum.nextElement();
                out.println(" " + param + ": " + getInitParameter(param));
            }
            out.println("
"); } out.println("

Request information:

"); out.println("
");

        print(out, "Request method", req.getMethod());
        print(out, "Request URI", DemoUtil.HTMLReplace(req.getRequestURI()));
        print(out, "Request protocol", req.getProtocol());
        print(out, "Servlet path", req.getServletPath());
        print(out, "Path info", DemoUtil.HTMLReplace(req.getPathInfo()));
        print(out, "Path translated", req.getPathTranslated());
        print(out, "Query string", req.getQueryString());
        print(out, "Content length", req.getContentLength());
        print(out, "Content type", req.getContentType());
        print(out, "Character Encoding", req.getCharacterEncoding());
        print(out, "Server name", req.getServerName());
        print(out, "Server port", req.getServerPort());
        print(out, "Remote user", req.getRemoteUser());
        print(out, "Remote address", req.getRemoteAddr());
        print(out, "Remote host", req.getRemoteHost());
        print(out, "Authorization scheme", req.getAuthType());

        out.println("
"); Enumeration e = req.getHeaderNames(); if (e.hasMoreElements()) { out.println("

Request headers:

"); out.println("
");
            while (e.hasMoreElements()) {
                String name = (String) e.nextElement();
                out.println(" " + DemoUtil.HTMLReplace(name) + ": " +
                            DemoUtil.HTMLReplace(req.getHeader(name)));
            }
            out.println("
"); } e = req.getParameterNames(); if (e.hasMoreElements()) { out.println("

Servlet parameters (Single Value style):

"); out.println("
");
            while (e.hasMoreElements()) {
                String name = (String) e.nextElement();
                out.println(" " + DemoUtil.HTMLReplace(name) + " = " +
                            DemoUtil.HTMLReplace(req.getParameter(name)));
            }
            out.println("
"); } e = req.getParameterNames(); if (e.hasMoreElements()) { out.println("

Servlet parameters (Multiple Value style):

"); out.println("
");
            while (e.hasMoreElements()) {
                String name = (String) e.nextElement();
                String vals[] = (String[]) req.getParameterValues(name);
                if (vals != null) {
                    out.print(" " + DemoUtil.HTMLReplace(name) + " = ");
                    out.println(DemoUtil.HTMLReplace(vals[0]));
                    for (int i = 1; i < vals.length; i++) {
                        out.println("           " +
                                    DemoUtil.HTMLReplace(vals[i]));
                    }
                }
                out.println("

"); } out.println("

"); } out.println(""); } private void print(PrintWriter out, String name, String value) { out.print(" " + DemoUtil.HTMLReplace(name) + ": "); out.println(value == null ? "<none>" : DemoUtil.HTMLReplace(value)); } private void print(PrintWriter out, String name, int value) { out.print(" " + DemoUtil.HTMLReplace(name) + ": "); if (value == -1) { out.println("<none>"); } else { out.println(value); } } }