## org.apache.catalina.servlets
Class DefaultServlet

    java.lang.Object
      |
      +--javax.servlet.GenericServlet
            |
            +--javax.servlet.http.HttpServlet
                  |
                  +--org.apache.catalina.servlets.DefaultServlet

All Implemented Interfaces:
  java.io.Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig

Direct Known Subclasses:
  WebdavServlet

public class DefaultServlet
extends javax.servlet.http.HttpServlet

The default resource-serving servlet for most web applications, used to serve static resources such as HTML pages and images.

Version:
  $Revision: 1.39.2.7 $ $Date: 2002/10/08 07:56:04 $
Author:
  Craig R. McClanahan, Remy Maucherat
See Also:
  Serialized Form

Nested Class Summary
`protected class` `DefaultServlet.ResourceInfo`

Field Summary
`protected int` `debug` The debugging detail level for this servlet.
`protected static java.text.SimpleDateFormat[]` `formats` The set of SimpleDateFormat formats to use in getDateHeader().
`protected static java.util.TimeZone` `gmtZone`
`protected static char[]` `hexadecimal`
`protected int` `input` The input buffer size to use when serving resources.
`protected boolean` `listings` Should we generate directory listings when no welcome file is present?
`protected static MD5Encoder` `md5Encoder` The MD5 helper object for this class.
`protected static java.security.MessageDigest` `md5Helper` MD5 message digest provider.
`protected static java.lang.String` `mimeSeparation` MIME multipart separation string
`protected int` `output` The output buffer size to use when serving resources.
`protected boolean` `readOnly` Read only flag.
`protected static java.lang.String` `RESOURCES_JNDI_NAME` JNDI resources name.
`protected static java.util.BitSet` `safeCharacters` Array containing the safe characters set.
`protected static StringManager` `sm` The string manager for this package.
`protected java.lang.String[]` `welcomes` The set of welcome files for this web application

Constructor Summary
`DefaultServlet()`

Method Summary
`protected java.lang.String` `appendParameters(javax.servlet.http.HttpServletRequest request, java.lang.String redirectPath)` Append the request parameters to the redirection string before calling sendRedirect.
`protected boolean` `checkIfHeaders(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, DefaultServlet.ResourceInfo resourceInfo)` Check if the conditions specified in the optional If headers are satisfied.
`void` `destroy()` Finalize this servlet.
`protected void` `displaySize(java.lang.StringBuffer buf, int filesize)` Display the size of a file.
`protected void` `doDelete(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)` Process a POST request for the specified resource.
`protected void` `doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)` Process a GET request for the specified resource.
`protected void` `doHead(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)` Process a HEAD request for the specified resource.
`protected void` `doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)` Process a POST request for the specified resource.
`protected void` `doPut(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)` Process a POST request for the specified resource.
`protected java.lang.String` `getETag(DefaultServlet.ResourceInfo resourceInfo, boolean strong)` Get the ETag associated with a file.
`protected java.lang.String` `getETagValue(DefaultServlet.ResourceInfo resourceInfo, boolean strong)` Get the ETag value associated with a file.
`protected java.lang.String` `getRelativePath(javax.servlet.http.HttpServletRequest request)` Return the relative path associated with this servlet.
`protected javax.naming.directory.DirContext` `getResources()` Get resources.
`void` `init()` Initialize this servlet.
`protected java.lang.String` `normalize(java.lang.String path)` Return a context-relative path, beginning with a "/", that represents the canonical version of the specified path after ".." and "." elements are resolved out.
`protected java.util.Vector` `parseRange(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, DefaultServlet.ResourceInfo resourceInfo)` Parse the range header.
`protected java.io.InputStream` `render(java.lang.String contextPath, DefaultServlet.ResourceInfo resourceInfo)` Return an InputStream to an HTML representation of the contents of this directory.
`protected java.lang.String` `renderLastModified(long lastModified)` Render the last modified date and time for the specified timestamp.
`protected java.lang.String` `renderSize(long size)` Render the specified file size (in bytes).
`protected java.lang.String` `rewriteUrl(java.lang.String path)` URL rewriter.
`protected void` `serveResource(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, boolean content)` Serve the specified resource, optionally including the data content.
`protected void` `showRequestInfo(javax.servlet.http.HttpServletRequest req)` Show HTTP header information.

Methods inherited from class javax.servlet.http.HttpServlet
`doOptions, doTrace, getLastModified, service, service`

Methods inherited from class javax.servlet.GenericServlet
`getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### debug

    protected int debug

  The debugging detail level for this servlet.

### input

    protected int input

  The input buffer size to use when serving resources.

### listings

    protected boolean listings

  Should we generate directory listings when no welcome file is present?

### readOnly

    protected boolean readOnly

  Read only flag. By default, it's set to true.

### output

    protected int output

  The output buffer size to use when serving resources.

### welcomes

    protected java.lang.String[] welcomes

  The set of welcome files for this web application

### md5Helper

    protected static java.security.MessageDigest md5Helper

  MD5 message digest provider.

### md5Encoder

    protected static final MD5Encoder md5Encoder

  The MD5 helper object for this class.

### formats

    protected static final java.text.SimpleDateFormat[] formats

  The set of SimpleDateFormat formats to use in getDateHeader().

### gmtZone

    protected static final java.util.TimeZone gmtZone

### mimeSeparation

    protected static final java.lang.String mimeSeparation

  MIME multipart separation string

  See Also:
    Constant Field Values

### RESOURCES_JNDI_NAME

    protected static final java.lang.String RESOURCES_JNDI_NAME

  JNDI resources name.

  See Also:
    Constant Field Values

### sm

    protected static StringManager sm

  The string manager for this package.

### safeCharacters

    protected static java.util.BitSet safeCharacters

  Array containing the safe characters set.

### hexadecimal

    protected static final char[] hexadecimal

Constructor Detail

### DefaultServlet

    public DefaultServlet()

Method Detail

### destroy

    public void destroy()

  Finalize this servlet.

  Specified by:
    `destroy` in interface `javax.servlet.Servlet`
  Overrides:
    `destroy` in class `javax.servlet.GenericServlet`

### init

    public void init()
              throws javax.servlet.ServletException

  Initialize this servlet.

  Overrides:
    `init` in class `javax.servlet.GenericServlet`
    `javax.servlet.ServletException`

### getResources

    protected javax.naming.directory.DirContext getResources()

  Get resources. This method will try to retrieve the resources through JNDI first, then in the servlet context if JNDI has failed (it could be disabled). It will return null.

  Returns:
    A JNDI DirContext, or null.

### showRequestInfo

    protected void showRequestInfo(javax.servlet.http.HttpServletRequest req)

  Show HTTP header information.

### getRelativePath

    protected java.lang.String getRelativePath(javax.servlet.http.HttpServletRequest request)

  Return the relative path associated with this servlet.

  Parameters:
    `request` - The servlet request we are processing

### doGet

    protected void doGet(javax.servlet.http.HttpServletRequest request,
                         javax.servlet.http.HttpServletResponse response)
                  throws java.io.IOException,
                         javax.servlet.ServletException

  Process a GET request for the specified resource.

  Overrides:
    `doGet` in class `javax.servlet.http.HttpServlet`
  Parameters:
    `request` - The servlet request we are processing
    `response` - The servlet response we are creating
  Throws:
    `java.io.IOException` - if an input/output error occurs
    `javax.servlet.ServletException` - if a servlet-specified error occurs

### doHead

    protected void doHead(javax.servlet.http.HttpServletRequest request,
                          javax.servlet.http.HttpServletResponse response)
                   throws java.io.IOException,
                          javax.servlet.ServletException

  Process a HEAD request for the specified resource.

  Overrides:
    `doHead` in class `javax.servlet.http.HttpServlet`
  Parameters:
    `request` - The servlet request we are processing
    `response` - The servlet response we are creating
  Throws:
    `java.io.IOException` - if an input/output error occurs
    `javax.servlet.ServletException` - if a servlet-specified error occurs

### doPost

    protected void doPost(javax.servlet.http.HttpServletRequest request,
                          javax.servlet.http.HttpServletResponse response)
                   throws java.io.IOException,
                          javax.servlet.ServletException

  Process a POST request for the specified resource.

  Overrides:
    `doPost` in class `javax.servlet.http.HttpServlet`
  Parameters:
    `request` - The servlet request we are processing
    `response` - The servlet response we are creating
  Throws:
    `java.io.IOException` - if an input/output error occurs
    `javax.servlet.ServletException` - if a servlet-specified error occurs

### doPut

    protected void doPut(javax.servlet.http.HttpServletRequest req,
                         javax.servlet.http.HttpServletResponse resp)
                  throws javax.servlet.ServletException,
                         java.io.IOException

  Process a POST request for the specified resource.

  Overrides:
    `doPut` in class `javax.servlet.http.HttpServlet`
  Throws:
    `java.io.IOException` - if an input/output error occurs
    `javax.servlet.ServletException` - if a servlet-specified error occurs

### doDelete

    protected void doDelete(javax.servlet.http.HttpServletRequest req,
                            javax.servlet.http.HttpServletResponse resp)
                     throws javax.servlet.ServletException,
                            java.io.IOException

  Process a POST request for the specified resource.

  Overrides:
    `doDelete` in class `javax.servlet.http.HttpServlet`
  Throws:
    `java.io.IOException` - if an input/output error occurs
    `javax.servlet.ServletException` - if a servlet-specified error occurs

### checkIfHeaders

    protected boolean checkIfHeaders(javax.servlet.http.HttpServletRequest request,
                                     javax.servlet.http.HttpServletResponse response,
                                     DefaultServlet.ResourceInfo resourceInfo)
                              throws java.io.IOException

  Check if the conditions specified in the optional If headers are satisfied.

  Parameters:
    `request` - The servlet request we are processing
    `response` - The servlet response we are creating
    `resourceInfo` - File object
  Returns:
    boolean true if the resource meets all the specified conditions, and false if any of the conditions is not satisfied, in which case request processing is stopped
    `java.io.IOException`

### getETagValue

    protected java.lang.String getETagValue(DefaultServlet.ResourceInfo resourceInfo,
                                            boolean strong)

  Get the ETag value associated with a file.

  Parameters:
    `resourceInfo` - File object
    `strong` - True if we want a strong ETag, in which case a checksum of the file has to be calculated

### getETag

    protected java.lang.String getETag(DefaultServlet.ResourceInfo resourceInfo,
                                       boolean strong)

  Get the ETag associated with a file.

  Parameters:
    `resourceInfo` - File object
    `strong` - True if we want a strong ETag, in which case a checksum of the file has to be calculated

### normalize

    protected java.lang.String normalize(java.lang.String path)

  Return a context-relative path, beginning with a "/", that represents the canonical version of the specified path after ".." and "." elements are resolved out. If the specified path attempts to go outside the boundaries of the current context (i.e. too many ".." path elements are present), return `null` instead.

  Parameters:
    `path` - Path to be normalized

### rewriteUrl

    protected java.lang.String rewriteUrl(java.lang.String path)

  URL rewriter.

  Parameters:
    `path` - Path which has to be rewiten

### displaySize

    protected void displaySize(java.lang.StringBuffer buf,
                               int filesize)

  Display the size of a file.

### serveResource

    protected void serveResource(javax.servlet.http.HttpServletRequest request,
                                 javax.servlet.http.HttpServletResponse response,
                                 boolean content)
                          throws java.io.IOException,
                                 javax.servlet.ServletException

  Serve the specified resource, optionally including the data content.

  Parameters:
    `request` - The servlet request we are processing
    `response` - The servlet response we are creating
    `content` - Should the content be included?
  Throws:
    `java.io.IOException` - if an input/output error occurs
    `javax.servlet.ServletException` - if a servlet-specified error occurs

### parseRange

    protected java.util.Vector parseRange(javax.servlet.http.HttpServletRequest request,
                                          javax.servlet.http.HttpServletResponse response,
                                          DefaultServlet.ResourceInfo resourceInfo)
                                   throws java.io.IOException

  Parse the range header.

  Parameters:
    `request` - The servlet request we are processing
    `response` - The servlet response we are creating
  Returns:
    Vector of ranges
    `java.io.IOException`

### appendParameters

    protected java.lang.String appendParameters(javax.servlet.http.HttpServletRequest request,
                                                java.lang.String redirectPath)

  Append the request parameters to the redirection string before calling sendRedirect.

### render

    protected java.io.InputStream render(java.lang.String contextPath,
                                         DefaultServlet.ResourceInfo resourceInfo)

  Return an InputStream to an HTML representation of the contents of this directory.

  Parameters:
    `contextPath` - Context path to which our internal paths are relative

### renderLastModified

    protected java.lang.String renderLastModified(long lastModified)

  Render the last modified date and time for the specified timestamp.

  Parameters:
    `lastModified` - Last modified date and time, in milliseconds since the epoch

### renderSize

    protected java.lang.String renderSize(long size)

  Render the specified file size (in bytes).

  Parameters:
    `size` - File size (in bytes)

Copyright © 2000-2001 Apache Software Foundation. All Rights Reserved.