
org.joseki.servlets.DumpServlet Maven / Gradle / Ivy
/*
* (c) Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Hewlett-Packard Development Company, LP
* [See end of file]
*
* dumpEnvironment and dumpServletContext from patch by Fred Hartman // webMethods.
*/
/** A servlet that dumps its request
*/
// Could be neater - much, much neater!
package org.joseki.servlets;
import java.util.* ;
import java.io.* ;
import javax.servlet.http.*;
import javax.servlet.* ;
public class DumpServlet extends HttpServlet
{
private static final long serialVersionUID = 99L; // Serilizable.
public DumpServlet()
{
}
@Override
public void init()
{
return ;
}
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
{
try {
PrintWriter out = resp.getWriter() ;
resp.setContentType("text/html");
String now = new Date().toString() ;
// HEAD
out.println("") ;
out.println("") ;
out.println("Dump @ "+now+" ") ;
// Reduce the desire to cache it.
out.println("") ;
out.println("") ;
// BODY
out.println("") ;
out.println("") ;
out.println("Dump : "+now);
out.println() ;
out.println("==== Request");
out.println() ;
out.print(dumpRequest(req)) ;
out.println() ;
out.println("==== Body");
out.println() ;
printBody(out, req) ;
out.println("==== ServletContext");
out.println() ;
out.print(dumpServletContext());
out.println() ;
out.println("==== Environment");
out.println() ;
out.print(dumpEnvironment());
out.println() ;
out.println("
") ;
out.println("") ;
out.println("") ;
out.flush() ;
} catch (IOException e)
{ }
}
// This resets the input stream
static public String dumpRequest(HttpServletRequest req)
{
try {
StringWriter sw = new StringWriter() ;
PrintWriter pw = new PrintWriter(sw) ;
// Standard environment
pw.println("Method: "+req.getMethod());
pw.println("getContentLength: "+Integer.toString(req.getContentLength()));
pw.println("getContentType: "+req.getContentType());
pw.println("getRequestURI: "+req.getRequestURI());
pw.println("getRequestURL: "+req.getRequestURL());
pw.println("getContextPath: "+req.getContextPath());
pw.println("getServletPath: "+req.getServletPath());
pw.println("getPathInfo: "+req.getPathInfo());
pw.println("getPathTranslated: "+req.getPathTranslated());
pw.println("getQueryString: "+req.getQueryString());
pw.println("getProtocol: "+req.getProtocol());
pw.println("getScheme: "+req.getScheme());
pw.println("getServerName: "+req.getServerName());
pw.println("getServerPort: "+req.getServerPort());
pw.println("getRemoteUser: "+req.getRemoteUser());
pw.println("getRemoteAddr: "+req.getRemoteAddr());
pw.println("getRemoteHost: "+req.getRemoteHost());
pw.println("getRequestedSessionId: "+req.getRequestedSessionId());
{
Cookie c[] = req.getCookies() ;
if ( c == null )
pw.println("getCookies: ");
else
{
for ( int i = 0 ; i < c.length ; i++ )
{
pw.println("Cookie: "+c[i].getName());
pw.println(" value: "+c[i].getValue());
pw.println(" version: "+c[i].getVersion());
pw.println(" comment: "+c[i].getComment());
pw.println(" domain: "+c[i].getDomain());
pw.println(" maxAge: "+c[i].getMaxAge());
pw.println(" path: "+c[i].getPath());
pw.println(" secure: "+c[i].getSecure());
pw.println();
}
}
}
{
// To do: create a string for the output so can send to console and return it.
@SuppressWarnings("unchecked")
Enumeration en = req.getHeaderNames() ;
for ( ; en.hasMoreElements() ; )
{
String name = en.nextElement() ;
String value = req.getHeader(name) ;
pw.println("Head: "+name + " = " + value) ;
}
}
@SuppressWarnings("unchecked")
Enumeration en2 = req.getAttributeNames() ;
if ( en2.hasMoreElements() )
pw.println();
for ( ; en2.hasMoreElements() ; )
{
String name = en2.nextElement() ;
String value = req.getAttribute(name).toString() ;
pw.println("Attr: "+name + " = " + value) ;
}
// Note that doing this on a form causes the forms content (body) to be read
// and parsed as form variables.
// en = req.getParameterNames() ;
// if ( en.hasMoreElements() )
// pw.println();
// for ( ; en.hasMoreElements() ; )
// {
// String name = (String)en.nextElement() ;
// String value = req.getParameter(name) ;
// pw.println("Param: "+name + " = " + value) ;
// }
// Don't use ServletRequest.getParameter or getParamterNames
// as that reads form data. This code parses just the query string.
if ( req.getQueryString() != null )
{
pw.println();
String[] params = req.getQueryString().split("&") ;
for ( int i = 0 ; i < params.length ; i++ )
{
String p = params[i] ;
String[] x = p.split("=",2) ;
String name = null ;
String value = null ;
if ( x.length == 0 )
{
name = p ;
value = "" ;
}
else if ( x.length == 1 )
{
name = x[0] ;
value = "" ;
}
else
{
name = x[0] ;
value = x[1] ;
}
pw.println("Param: "+name + " = " + value) ;
}
}
@SuppressWarnings("unchecked")
Enumeration en = req.getLocales() ;
if ( en.hasMoreElements() )
pw.println();
for ( ; en.hasMoreElements() ; )
{
String name = en.nextElement().toString() ;
pw.println("Locale: "+name) ;
}
pw.println() ;
printBody(pw, req) ;
pw.close() ;
sw.close() ;
return sw.toString() ;
} catch (IOException e)
{ }
return null ;
}
static void printBody(PrintWriter pw, HttpServletRequest req) throws IOException
{
BufferedReader in = req.getReader() ;
if ( req.getContentLength() > 0 )
// Need +2 because last line may not have a CR/LF on it.
in.mark(req.getContentLength()+2) ;
else
// This is a dump - try to do something that works, even if inefficient.
in.mark(100*1024) ;
while(in.ready())
{
pw.println(in.readLine());
}
try { in.reset() ;} catch (IOException e) { System.out.println("DumpServlet: Reset of content failed: "+e) ; }
}
/**
* dumpEnvironment
* @return String that is the HTML of the System properties as
name/value pairs.
* The values are with single quotes independent of whether or not
the value has
* single quotes in it.
*/
static public String dumpEnvironment()
{
Properties properties = System.getProperties();
StringWriter sw = new StringWriter() ;
PrintWriter pw = new PrintWriter(sw) ;
Enumeration
© 2015 - 2025 Weber Informatics LLC | Privacy Policy