if ("/ex1".equals(pi))
throw new IOException("test ex1");
if ("/ex2".equals(pi))
throw new UnavailableException("test ex2");
if ("/ex3".equals(pi))
throw new HttpException(501);
}
PrintWriter pout= response.getWriter();
Page page= null;
try
{
page= new Page();
page.title("Dump Servlet");
page.add(new Heading(1, "Dump Servlet"));
Table table= new Table(0).cellPadding(0).cellSpacing(0);
page.add(table);
table.newRow();
table.addHeading("getMethod: ").cell().right();
table.addCell("" + request.getMethod());
table.newRow();
table.addHeading("getContentLength: ").cell().right();
table.addCell(Integer.toString(request.getContentLength()));
table.newRow();
table.addHeading("getContentType: ").cell().right();
table.addCell("" + request.getContentType());
table.newRow();
table.addHeading("getCharacterEncoding: ").cell().right();
table.addCell("" + request.getCharacterEncoding());
table.newRow();
table.addHeading("getRequestURI: ").cell().right();
table.addCell("" + request.getRequestURI());
table.newRow();
table.addHeading("getRequestURL: ").cell().right();
table.addCell("" + request.getRequestURL());
table.newRow();
table.addHeading("getContextPath: ").cell().right();
table.addCell("" + request.getContextPath());
table.newRow();
table.addHeading("getServletPath: ").cell().right();
table.addCell("" + request.getServletPath());
table.newRow();
table.addHeading("getPathInfo: ").cell().right();
table.addCell("" + request.getPathInfo());
table.newRow();
table.addHeading("getPathTranslated: ").cell().right();
table.addCell("" + request.getPathTranslated());
table.newRow();
table.addHeading("getQueryString: ").cell().right();
table.addCell("" + request.getQueryString());
table.newRow();
table.addHeading("getProtocol: ").cell().right();
table.addCell("" + request.getProtocol());
table.newRow();
table.addHeading("getScheme: ").cell().right();
table.addCell("" + request.getScheme());
table.newRow();
table.addHeading("getServerName: ").cell().right();
table.addCell("" + request.getServerName());
table.newRow();
table.addHeading("getServerPort: ").cell().right();
table.addCell("" + Integer.toString(request.getServerPort()));
table.newRow();
table.addHeading("getLocalName: ").cell().right();
table.addCell("" + request.getLocalName());
table.newRow();
table.addHeading("getLocalAddr: ").cell().right();
table.addCell("" + request.getLocalAddr());
table.newRow();
table.addHeading("getLocalPort: ").cell().right();
table.addCell("" + Integer.toString(request.getLocalPort()));
table.newRow();
table.addHeading("getRemoteUser: ").cell().right();
table.addCell("" + request.getRemoteUser());
table.newRow();
table.addHeading("getRemoteAddr: ").cell().right();
table.addCell("" + request.getRemoteAddr());
table.newRow();
table.addHeading("getRemoteHost: ").cell().right();
table.addCell("" + request.getRemoteHost());
table.newRow();
table.addHeading("getRemotePort: ").cell().right();
table.addCell("" + request.getRemotePort());
table.newRow();
table.addHeading("getRequestedSessionId: ").cell().right();
table.addCell("" + request.getRequestedSessionId());
table.newRow();
table.addHeading("isSecure(): ").cell().right();
table.addCell("" + request.isSecure());
table.newRow();
table.addHeading("isUserInRole(admin): ").cell().right();
table.addCell("" + request.isUserInRole("admin"));
table.newRow();
table.addHeading("getLocale: ").cell().right();
table.addCell("" + request.getLocale());
Enumeration locales= request.getLocales();
while (locales.hasMoreElements())
{
table.newRow();
table.addHeading("getLocales: ").cell().right();
table.addCell(locales.nextElement());
}
table.newRow();
table
.newHeading()
.cell()
.nest(new Font(2, true))
.add("<BR>Other HTTP Headers")
.attribute("COLSPAN", "2")
.left();
Enumeration h= request.getHeaderNames();
String name;
while (h.hasMoreElements())
{
name= (String)h.nextElement();
Enumeration h2= request.getHeaders(name);
while (h2.hasMoreElements())
{
String hv= (String)h2.nextElement();
table.newRow();
table.addHeading(name + ": ").cell().right();
table.addCell(hv);
}
}
table.newRow();
table
.newHeading()
.cell()
.nest(new Font(2, true))
.add("<BR>Request Parameters")
.attribute("COLSPAN", "2")
.left();
h= request.getParameterNames();
while (h.hasMoreElements())
{
name= (String)h.nextElement();
table.newRow();
table.addHeading(name + ": ").cell().right();
table.addCell(request.getParameter(name));
String[] values= request.getParameterValues(name);
if (values == null)
{
table.newRow();
table.addHeading(name + " Values: ").cell().right();
table.addCell("NULL!!!!!!!!!");
}
else
if (values.length > 1)
{
for (int i= 0; i < values.length; i++)
{
table.newRow();
table.addHeading(name + "[" + i + "]: ").cell().right();
table.addCell(values[i]);
}
}
}
table.newRow();
table
.newHeading()
.cell()
.nest(new Font(2, true))
.add("<BR>Cookies")
.attribute("COLSPAN", "2")
.left();
Cookie[] cookies = request.getCookies();
for (int i=0; cookies!=null && i<cookies.length;i++)
{
Cookie cookie = cookies[i];
table.newRow();
table.addHeading(cookie.getName() + ": ").cell().attribute("VALIGN", "TOP").right();
table.addCell(cookie.getValue());
}
/* ------------------------------------------------------------ */
table.newRow();
table
.newHeading()
.cell()
.nest(new Font(2, true))
.add("<BR>Request Attributes")
.attribute("COLSPAN", "2")
.left();
Enumeration a= request.getAttributeNames();
while (a.hasMoreElements())
{
name= (String)a.nextElement();
table.newRow();
table.addHeading(name + ": ").cell().attribute("VALIGN", "TOP").right();
table.addCell("<pre>" + toString(request.getAttribute(name)) + "</pre>");
}
/* ------------------------------------------------------------ */
table.newRow();
table
.newHeading()
.cell()
.nest(new Font(2, true))
.add("<BR>Servlet InitParameters")
.attribute("COLSPAN", "2")
.left();
a= getInitParameterNames();
while (a.hasMoreElements())
{
name= (String)a.nextElement();
table.newRow();
table.addHeading(name + ": ").cell().attribute("VALIGN", "TOP").right();
table.addCell("<pre>" + toString(getInitParameter(name)) + "</pre>");
}
table.newRow();
table
.newHeading()
.cell()
.nest(new Font(2, true))
.add("<BR>Context InitParameters")
.attribute("COLSPAN", "2")
.left();
a= getServletContext().getInitParameterNames();
while (a.hasMoreElements())
{
name= (String)a.nextElement();
table.newRow();
table.addHeading(name + ": ").cell().attribute("VALIGN", "TOP").right();
table.addCell("<pre>" + toString(getServletContext().getInitParameter(name)) + "</pre>");
}
table.newRow();
table
.newHeading()
.cell()
.nest(new Font(2, true))
.add("<BR>Context Attributes")
.attribute("COLSPAN", "2")
.left();
a= getServletContext().getAttributeNames();
while (a.hasMoreElements())
{
name= (String)a.nextElement();
table.newRow();
table.addHeading(name + ": ").cell().attribute("VALIGN", "TOP").right();
table.addCell("<pre>" + toString(getServletContext().getAttribute(name)) + "</pre>");
}
if (request.getContentType() != null
&& request.getContentType().startsWith("multipart/form-data")
&& request.getContentLength() < 1000000)
{
MultiPartRequest multi= new MultiPartRequest(request);
String[] parts= multi.getPartNames();
table.newRow();
table
.newHeading()
.cell()
.nest(new Font(2, true))
.add("<BR>Multi-part content")
.attribute("COLSPAN", "2")
.left();
for (int p= 0; p < parts.length; p++)
{
name= parts[p];
table.newRow();
table.addHeading(name + ": ").cell().attribute("VALIGN", "TOP").right();
table.addCell("<pre>" + multi.getString(parts[p]) + "</pre>");
}
}
String res= request.getParameter("resource");
if (res != null && res.length() > 0)
{
table.newRow();
table
.newHeading()
.cell()
.nest(new Font(2, true))
.add("<BR>Get Resource: " + res)
.attribute("COLSPAN", "2")
.left();
table.newRow();
table.addHeading("this.getClass(): ").cell().right();
table.addCell("" + this.getClass().getResource(res));
table.newRow();
table.addHeading("this.getClass().getClassLoader(): ").cell().right();
table.addCell("" + this.getClass().getClassLoader().getResource(res));
table.newRow();
table.addHeading("Thread.currentThread().getContextClassLoader(): ").cell().right();
table.addCell("" + Thread.currentThread().getContextClassLoader().getResource(res));
table.newRow();
table.addHeading("getServletContext(): ").cell().right();
try{table.addCell("" + getServletContext().getResource(res));}
catch(Exception e) {table.addCell("" +e);}
}
/* ------------------------------------------------------------ */
page.add(Break.para);
page.add(new Heading(1, "Request Wrappers"));
ServletRequest rw=request;
int w=0;
while (rw !=null)
{
page.add((w++)+": "+rw.getClass().getName()+"<br/>");
if (rw instanceof HttpServletRequestWrapper)
rw=((HttpServletRequestWrapper)rw).getRequest();
else if (rw instanceof ServletRequestWrapper)
rw=((ServletRequestWrapper)rw).getRequest();
else
rw=null;
}
page.add(Break.para);
page.add(new Heading(1, "International Characters"));
page.add("Directly encoced: Dürst<br/>");
page.add("HTML reference: Dürst<br/>");
page.add("Decimal (252) 8859-1: Dürst<br/>");
page.add("Hex (xFC) 8859-1: Dürst<br/>");
page.add(
"Javascript unicode (00FC) : <script language='javascript'>document.write(\"D\u00FCrst\");</script><br/>");
page.add(Break.para);
page.add(new Heading(1, "Form to generate GET content"));
TableForm tf= new TableForm(response.encodeURL(getURI(request)));
tf.method("GET");
tf.addTextField("TextField", "TextField", 20, "value");
tf.addButton("Action", "Submit");
page.add(tf);
page.add(Break.para);
page.add(new Heading(1, "Form to generate POST content"));
tf= new TableForm(response.encodeURL(getURI(request)));
tf.method("POST");
tf.addTextField("TextField", "TextField", 20, "value");
Select select= tf.addSelect("Select", "Select", true, 3);
select.add("ValueA");
select.add("ValueB1,ValueB2");
select.add("ValueC");
tf.addButton("Action", "Submit");
page.add(tf);
page.add(new Heading(1, "Form to upload content"));
tf= new TableForm(response.encodeURL(getURI(request)));
tf.method("POST");
tf.attribute("enctype", "multipart/form-data");
tf.addFileField("file", "file");
tf.addButton("Upload", "Upload");
page.add(tf);
page.add(new Heading(1, "Form to get Resource"));
tf= new TableForm(response.encodeURL(getURI(request)));
tf.method("POST");
tf.addTextField("resource", "resource", 20, "");
tf.addButton("Action", "getResource");
page.add(tf);
}
catch (Exception e)
{
log.warn(LogSupport.EXCEPTION, e);
}
page.write(pout);
String data= request.getParameter("data");
if (data != null && data.length() > 0)
{
int d= Integer.parseInt(data);
while (d > 0)
{
pout.println("1234567890123456789012345678901234567890123456789\n");
d= d - 50;
}
}
pout.close();
if (pi != null)
{
if ("/ex4".equals(pi))
throw new ServletException("test ex4", new Throwable());
if ("/ex5".equals(pi))
throw new IOException("test ex5");
if ("/ex6".equals(pi))
throw new UnavailableException("test ex6");
if ("/ex7".equals(pi))
throw new HttpException(501);
}
request.getInputStream().close();
}