273 lines
15 KiB
HTML
273 lines
15 KiB
HTML
|
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 - Default Servlet Reference</title><meta name="author" value="Tim Funk"><meta name="email" value="funkman@apache.org"></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./../images/tomcat.gif" align="right" alt="
|
||
|
The Apache Tomcat Servlet/JSP Container
|
||
|
" border="0"></a></td><td><font face="arial,helvetica,sanserif"><h1>Apache Tomcat 6.0</h1></font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left"><table border="0" width="100%" cellspacing="4"><tr><td align="left" valign="top"><h1>Apache Tomcat 6.0</h1><h2>Default Servlet Reference</h2></td><td align="right" valign="top" nowrap="true"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>
|
||
|
|
||
|
This discusses different ways to manipulate the default servlet. Topics are
|
||
|
<ul>
|
||
|
<li><a href="#what">What is the DefaultServlet?</a></li>
|
||
|
<li><a href="#where">Where is it declared?</a></li>
|
||
|
<li><a href="#change">What can I change?</a></li>
|
||
|
<li><a href="#dir">How do I customize directory listings?</a></li>
|
||
|
<li><a href="#secure">How do I secure directory listings?</a></li>
|
||
|
|
||
|
</ul>
|
||
|
|
||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="What is the DefaultServlet"><strong>What is the DefaultServlet</strong></a></font></td></tr><tr><td><blockquote>
|
||
|
<a name="what"></a>
|
||
|
The default servlet is the servlet which serves static resources as well
|
||
|
as serves the directory listings (if directory listings are enabled).
|
||
|
|
||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Where is it declared?"><strong>Where is it declared?</strong></a></font></td></tr><tr><td><blockquote>
|
||
|
<a name="where"></a>
|
||
|
It is declared globally in <i>$CATALINA_HOME/conf/web.xml</i>.
|
||
|
By default here is it's declaration:
|
||
|
<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
|
||
|
<servlet>
|
||
|
<servlet-name>default</servlet-name>
|
||
|
<servlet-class>
|
||
|
org.apache.catalina.servlets.DefaultServlet
|
||
|
</servlet-class>
|
||
|
<init-param>
|
||
|
<param-name>debug</param-name>
|
||
|
<param-value>0</param-value>
|
||
|
</init-param>
|
||
|
<init-param>
|
||
|
<param-name>listings</param-name>
|
||
|
<param-value>true</param-value>
|
||
|
</init-param>
|
||
|
<load-on-startup>1</load-on-startup>
|
||
|
</servlet>
|
||
|
|
||
|
...
|
||
|
|
||
|
<servlet-mapping>
|
||
|
<servlet-name>default</servlet-name>
|
||
|
<url-pattern>/</url-pattern>
|
||
|
</servlet-mapping>
|
||
|
|
||
|
</pre></td><td bgcolor="#023264" width="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
|
||
|
|
||
|
So by default, the default servlet is loaded at webapp startup and
|
||
|
directory listings are enabled and debugging is turned off.
|
||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="What can I change?"><strong>What can I change?</strong></a></font></td></tr><tr><td><blockquote>
|
||
|
<a name="change"></a>
|
||
|
The DefaultServlet allows the following initParamters:
|
||
|
|
||
|
<table border="1">
|
||
|
<tr>
|
||
|
<th valign="top">debug</th>
|
||
|
<td valign="top">
|
||
|
Debugging level. It is not very useful unless you are a tomcat
|
||
|
developer. As
|
||
|
of this writing, useful values are 0, 1, 11, 1000.
|
||
|
</td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<th valign="top">listings</th>
|
||
|
<td valign="top">
|
||
|
If no welcome file is present, can a directory listing be
|
||
|
shown?
|
||
|
value may be <b>true</b> or <b>false</b>
|
||
|
<br>
|
||
|
Welcome files are part of the servlet api.
|
||
|
<br>
|
||
|
<b>WARNING:</b> Listings of directories containing many entries are
|
||
|
expensive. Multiple requests for large directory listings can consume
|
||
|
significant proportions of server resources.
|
||
|
</td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<th valign="top">readmeFile</th>
|
||
|
<td valign="top">
|
||
|
If a directory listing is presented, a readme file may also
|
||
|
be presented with the listing. This file is inserted as is
|
||
|
so it may contain HTML. default value is null
|
||
|
</td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<th valign="top">globalXsltFile</th>
|
||
|
<td valign="top">
|
||
|
If you wish to customize your directory listing, you
|
||
|
can use an XSL transformation. This value is an absolute
|
||
|
file name which be used for all direcotory listings.
|
||
|
This can be disabled by per webapp by also declaring the
|
||
|
default servlet in your local webapp's web.xml. The format
|
||
|
of the xml is shown below.
|
||
|
</td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<th valign="top">localXsltFile</th>
|
||
|
<td valign="top">
|
||
|
You may also customize your directory listing by directory by
|
||
|
configuring <code>localXsltFile</code>. This should be a relative
|
||
|
file name in the directory where the listing will take place.
|
||
|
This overrides <code>globalXsltFile</code>. If this value
|
||
|
is present but a file does not exist, then
|
||
|
<code>globalXsltFile</code> will be used. If
|
||
|
<code>globalXsltFile</code> does not exist, then the default
|
||
|
directory listing will be shown.
|
||
|
</td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<th valign="top">input</th>
|
||
|
<td valign="top">
|
||
|
Input buffer size (in bytes) when reading
|
||
|
resources to be served. [2048]
|
||
|
</td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<th valign="top">output</th>
|
||
|
<td valign="top">
|
||
|
Output buffer size (in bytes) when writing
|
||
|
resources to be served. [2048]
|
||
|
</td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<th valign="top">readonly</th>
|
||
|
<td valign="top">
|
||
|
Is this context "read only", so HTTP commands like PUT and
|
||
|
DELETE are rejected? [true]
|
||
|
</td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<th valign="top">fileEncoding</th>
|
||
|
<td valign="top">
|
||
|
File encoding to be used when reading static resources.
|
||
|
[platform default]
|
||
|
</td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<th valign="top">sendfileSize</th>
|
||
|
<td valign="top">
|
||
|
If the connector used supports sendfile, this represents the minimal
|
||
|
file size in KB for which sendfile will be used. Use a negative value
|
||
|
to always disable sendfile. [48]
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
</table>
|
||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="How do I customize directory listings?"><strong>How do I customize directory listings?</strong></a></font></td></tr><tr><td><blockquote>
|
||
|
<a name="dir"></a>
|
||
|
<p>You can override DefaultServlet with you own implementation and use that
|
||
|
in your web.xml declaration. If you
|
||
|
can undertand what was just said, we will assume yo can read the code
|
||
|
to DefaultServlet servlet and make the appropriate adjustments. (If not,
|
||
|
then that method isn't for you)
|
||
|
</p>
|
||
|
<p>
|
||
|
You can use either <code>localXsltFile</code> or
|
||
|
<code>globalXsltFile</code> and DefaultServlet will create
|
||
|
an xml document and run it through an xsl transformation based
|
||
|
on the values provided in <code>localXsltFile</code> and
|
||
|
<code>globalXsltFile</code>. <code>localXsltFile</code> is first
|
||
|
checked, followed by <code>globalXsltFile</code>, then default
|
||
|
behaviors takes place.
|
||
|
</p>
|
||
|
|
||
|
<p>
|
||
|
Format:
|
||
|
<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
|
||
|
<listing>
|
||
|
<entries>
|
||
|
<entry type='file|dir' urlPath='aPath' size='###' date='gmt date'>
|
||
|
fileName1
|
||
|
</entry>
|
||
|
<entry type='file|dir' urlPath='aPath' size='###' date='gmt date'>
|
||
|
fileName2
|
||
|
</entry>
|
||
|
...
|
||
|
</entries>
|
||
|
<readme></readme>
|
||
|
</listing>
|
||
|
</pre></td><td bgcolor="#023264" width="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
|
||
|
<ul>
|
||
|
<li>size will be missing if <code>type='dir'</code></li>
|
||
|
<li>Readme is a CDATA entry</li>
|
||
|
</ul>
|
||
|
</p>
|
||
|
The following is a sample xsl file which mimics the default tomcat behavior:
|
||
|
<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
|
||
|
<?xml version="1.0"?>
|
||
|
|
||
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||
|
version="1.0">
|
||
|
|
||
|
<xsl:output method="xhtml" encoding="iso-8859-1" indent="no"/>
|
||
|
|
||
|
<xsl:template match="listing">
|
||
|
<html>
|
||
|
<head>
|
||
|
<title>
|
||
|
Sample Directory Listing For
|
||
|
<xsl:value-of select="@directory"/>
|
||
|
</title>
|
||
|
<style>
|
||
|
h1{color : white;background-color : #0086b2;}
|
||
|
h3{color : white;background-color : #0086b2;}
|
||
|
body{font-family : sans-serif,Arial,Tahoma;
|
||
|
color : black;background-color : white;}
|
||
|
b{color : white;background-color : #0086b2;}
|
||
|
a{color : black;} HR{color : #0086b2;}
|
||
|
</style>
|
||
|
</head>
|
||
|
<body>
|
||
|
<h1>Sample Directory Listing For
|
||
|
<xsl:value-of select="@directory"/>
|
||
|
</h1>
|
||
|
<hr size="1" />
|
||
|
<table cellspacing="0"
|
||
|
width="100%"
|
||
|
cellpadding="5"
|
||
|
align="center">
|
||
|
<tr>
|
||
|
<th align="left">Filename</th>
|
||
|
<th align="center">Size</th>
|
||
|
<th align="right">Last Modified</th>
|
||
|
</tr>
|
||
|
<xsl:apply-templates select="entries"/>
|
||
|
</table>
|
||
|
<xsl:apply-templates select="readme"/>
|
||
|
<hr size="1" />
|
||
|
<h3>Apache Tomcat/6.0</h3>
|
||
|
</body>
|
||
|
</html>
|
||
|
</xsl:template>
|
||
|
|
||
|
|
||
|
<xsl:template match="entries">
|
||
|
<xsl:apply-templates select="entry"/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="readme">
|
||
|
<hr size="1" />
|
||
|
<pre><xsl:apply-templates/></pre>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="entry">
|
||
|
<tr>
|
||
|
<td align="left">
|
||
|
<xsl:variable name="urlPath" select="@urlPath"/>
|
||
|
<a href="{$urlPath}">
|
||
|
<tt><xsl:apply-templates/></tt>
|
||
|
</a>
|
||
|
</td>
|
||
|
<td align="right">
|
||
|
<tt><xsl:value-of select="@size"/></tt>
|
||
|
</td>
|
||
|
<td align="right">
|
||
|
<tt><xsl:value-of select="@date"/></tt>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</xsl:template>
|
||
|
|
||
|
</xsl:stylesheet>
|
||
|
</pre></td><td bgcolor="#023264" width="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
|
||
|
|
||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="How do I secure directory listings?"><strong>How do I secure directory listings?</strong></a></font></td></tr><tr><td><blockquote>
|
||
|
<a name="secure"></a>
|
||
|
Use web.xml in each individual webapp. See the security section of the
|
||
|
Servlet specification.
|
||
|
|
||
|
</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
|
||
|
Copyright © 1999-2006, Apache Software Foundation
|
||
|
</em></font></div></td></tr></table></body></html>
|