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> |