Package 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`, `Servlet`, `ServletConfig`
  Direct Known Subclasses:
    `WebdavServlet`

      public class DefaultServlet
      extends HttpServlet

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

  This servlet is intended to be mapped to / e.g.:

         <servlet-mapping>
             <servlet-name>default</servlet-name>
             <url-pattern>/</url-pattern>
         </servlet-mapping>

  It can be mapped to sub-paths, however in all cases resources are served from the web application resource root using the full path from the root of the web application context.
  e.g. given a web application structure:

       /context
         /images
           tomcat2.jpg
         /static
           /images
             tomcat.jpg

  ... and a servlet mapping that maps only `/static/*` to the default servlet:

         <servlet-mapping>
             <servlet-name>default</servlet-name>
             <url-pattern>/static/*</url-pattern>
         </servlet-mapping>

  Then a request to `/context/static/images/tomcat.jpg` will succeed while a request to `/context/images/tomcat2.jpg` will fail.

  Author:
    Craig R. McClanahan, Remy Maucherat
  See Also:
    Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `protected static class` | `DefaultServlet.CompressionFormat` |
    `protected static class` | `DefaultServlet.Range` |

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected static int` | `BUFFER_SIZE` | Size of file transfer buffer in bytes.
    `protected DefaultServlet.CompressionFormat[]` | `compressionFormats` | List of compression formats to serve and their preference order.
    `protected java.lang.String` | `contextXsltFile` | Allow customized directory listing per context.
    `protected int` | `debug` | The debugging detail level for this servlet.
    `protected java.lang.String` | `fileEncoding` | File encoding to be used when reading static files.
    `protected static java.util.ArrayList<DefaultServlet.Range>` | `FULL` | Full range marker.
    `protected java.lang.String` | `globalXsltFile` | Allow customized directory listing per instance.
    `protected int` | `input` | The input buffer size to use when serving resources.
    `protected boolean` | `listings` | Should we generate directory listings?
    `protected java.lang.String` | `localXsltFile` | Allow customized directory listing per directory.
    `protected static java.lang.String` | `mimeSeparation` | MIME multipart separation string
    `protected int` | `output` | The output buffer size to use when serving resources.
    `protected java.lang.String` | `readmeFile` | Allow a readme file to be included.
    `protected boolean` | `readOnly` | Read only flag.
    `protected WebResourceRoot` | `resources` | The complete set of web application resources
    `protected static java.lang.String` | `RESOURCES_JNDI_NAME` | Deprecated. Unused.
    `protected int` | `sendfileSize` | Minimum size for sendfile usage in bytes.
    `protected boolean` | `showServerInfo` | Flag to determine if server information is presented.
    `protected static StringManager` | `sm` | The string manager for this package.
    `protected boolean` | `sortListings` | Flag to determine if resources should be sorted.
    `protected org.apache.catalina.servlets.DefaultServlet.SortManager` | `sortManager` | The sorting manager for sorting files and directories.
    `protected boolean` | `useAcceptRanges` | Should the Accept-Ranges: bytes header be send with static resources?

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `DefaultServlet()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected boolean` | `checkIfHeaders​(HttpServletRequest request, HttpServletResponse response, WebResource resource)` | Check if the conditions specified in the optional If headers are satisfied.
    `protected boolean` | `checkIfMatch​(HttpServletRequest request, HttpServletResponse response, WebResource resource)` | Check if the if-match condition is satisfied.
    `protected boolean` | `checkIfModifiedSince​(HttpServletRequest request, HttpServletResponse response, WebResource resource)` | Check if the if-modified-since condition is satisfied.
    `protected boolean` | `checkIfNoneMatch​(HttpServletRequest request, HttpServletResponse response, WebResource resource)` | Check if the if-none-match condition is satisfied.
    `protected boolean` | `checkIfUnmodifiedSince​(HttpServletRequest request, HttpServletResponse response, WebResource resource)` | Check if the if-unmodified-since condition is satisfied.
    `protected boolean` | `checkSendfile​(HttpServletRequest request, HttpServletResponse response, WebResource resource, long length, DefaultServlet.Range range)` | Check if sendfile can be used.
    `protected void` | `copy​(java.io.InputStream is, java.io.PrintWriter writer, java.lang.String encoding)` | Copy the contents of the specified input stream to the specified output stream, and ensure that both streams are closed before returning (even in the face of an exception).
    `protected void` | `copy​(java.io.InputStream is, ServletOutputStream ostream)` | Copy the contents of the specified input stream to the specified output stream, and ensure that both streams are closed before returning (even in the face of an exception).
    `protected void` | `copy​(WebResource resource, java.io.InputStream is, java.io.PrintWriter writer, java.lang.String encoding)` | Deprecated. Unused.
    `protected void` | `copy​(WebResource resource, java.io.InputStream is, ServletOutputStream ostream)` | Deprecated. Unused.
    `protected void` | `copy​(WebResource resource, ServletOutputStream ostream, java.util.Iterator<DefaultServlet.Range> ranges, java.lang.String contentType)` | Copy the contents of the specified input stream to the specified output stream, and ensure that both streams are closed before returning (even in the face of an exception).
    `protected void` | `copy​(WebResource resource, ServletOutputStream ostream, DefaultServlet.Range range)` | Copy the contents of the specified input stream to the specified output stream, and ensure that both streams are closed before returning (even in the face of an exception).
    `protected java.io.IOException` | `copyRange​(java.io.InputStream istream, ServletOutputStream ostream)` | Copy the contents of the specified input stream to the specified output stream, and ensure that both streams are closed before returning (even in the face of an exception).
    `protected java.io.IOException` | `copyRange​(java.io.InputStream istream, ServletOutputStream ostream, long start, long end)` | Copy the contents of the specified input stream to the specified output stream, and ensure that both streams are closed before returning (even in the face of an exception).
    `protected java.io.IOException` | `copyRange​(java.io.Reader reader, java.io.PrintWriter writer)` | Copy the contents of the specified input stream to the specified output stream, and ensure that both streams are closed before returning (even in the face of an exception).
    `void` | `destroy()` | Finalize this servlet.
    `protected java.lang.String` | `determineMethodsAllowed​(HttpServletRequest req)` |
    `protected void` | `doDelete​(HttpServletRequest req, HttpServletResponse resp)` | Process a DELETE request for the specified resource.
    `protected void` | `doGet​(HttpServletRequest request, HttpServletResponse response)` | Process a GET request for the specified resource.
    `protected void` | `doHead​(HttpServletRequest request, HttpServletResponse response)` | Process a HEAD request for the specified resource.
    `protected void` | `doOptions​(HttpServletRequest req, HttpServletResponse resp)` | Override default implementation to ensure that TRACE is correctly handled.
    `protected void` | `doPost​(HttpServletRequest request, HttpServletResponse response)` | Process a POST request for the specified resource.
    `protected void` | `doPut​(HttpServletRequest req, HttpServletResponse resp)` | Process a PUT request for the specified resource.
    `protected java.io.File` | `executePartialPut​(HttpServletRequest req, DefaultServlet.Range range, java.lang.String path)` | Handle a partial PUT.
    `protected javax.xml.transform.Source` | `findXsltSource​(WebResource directory)` | Return a Source for the xsl template (if possible).
    `protected java.lang.String` | `generateETag​(WebResource resource)` | Provides the entity tag (the ETag header) for the given resource.
    `protected java.lang.String` | `getPathPrefix​(HttpServletRequest request)` | Determines the appropriate path to prepend resources with when generating directory listings.
    `protected java.lang.String` | `getReadme​(WebResource directory)` | Deprecated. Unused.
    `protected java.lang.String` | `getReadme​(WebResource directory, java.lang.String encoding)` | Get the readme file as a string.
    `protected java.lang.String` | `getRelativePath​(HttpServletRequest request)` | Return the relative path associated with this servlet.
    `protected java.lang.String` | `getRelativePath​(HttpServletRequest request, boolean allowEmptyPath)` |
    `void` | `init()` | Initialize this servlet.
    `protected DefaultServlet.Range` | `parseContentRange​(HttpServletRequest request, HttpServletResponse response)` | Parse the content-range header.
    `protected java.util.ArrayList<DefaultServlet.Range>` | `parseRange​(HttpServletRequest request, HttpServletResponse response, WebResource resource)` | Parse the range header.
    `protected java.io.InputStream` | `render​(java.lang.String contextPath, WebResource resource)` | Deprecated. Unused.
    `protected java.io.InputStream` | `render​(java.lang.String contextPath, WebResource resource, java.lang.String encoding)` | Deprecated. Use `render(HttpServletRequest, String, WebResource, String)` instead
    `protected java.io.InputStream` | `render​(HttpServletRequest request, java.lang.String contextPath, WebResource resource, java.lang.String encoding)` | Decide which way to render.
    `protected java.io.InputStream` | `renderHtml​(java.lang.String contextPath, WebResource resource)` | Deprecated. Unused.
    `protected java.io.InputStream` | `renderHtml​(java.lang.String contextPath, WebResource resource, java.lang.String encoding)` | Deprecated. Unused.
    `protected java.io.InputStream` | `renderHtml​(HttpServletRequest request, java.lang.String contextPath, WebResource resource, java.lang.String encoding)` | Return an InputStream to an HTML representation of the contents of this directory.
    `protected java.lang.String` | `renderSize​(long size)` | Render the specified file size (in bytes).
    `protected java.io.InputStream` | `renderXml​(java.lang.String contextPath, WebResource resource, javax.xml.transform.Source xsltSource)` | Deprecated. Unused.
    `protected java.io.InputStream` | `renderXml​(java.lang.String contextPath, WebResource resource, javax.xml.transform.Source xsltSource, java.lang.String encoding)` | Deprecated. Unused.
    `protected java.io.InputStream` | `renderXml​(HttpServletRequest request, java.lang.String contextPath, WebResource resource, javax.xml.transform.Source xsltSource, java.lang.String encoding)` | Return an InputStream to an XML representation of the contents this directory.
    `protected java.lang.String` | `rewriteUrl​(java.lang.String path)` | URL rewriter.
    `protected void` | `sendNotAllowed​(HttpServletRequest req, HttpServletResponse resp)` |
    `protected void` | `serveResource​(HttpServletRequest request, HttpServletResponse response, boolean content, java.lang.String inputEncoding)` | Serve the specified resource, optionally including the data content.
    `protected void` | `service​(HttpServletRequest req, HttpServletResponse resp)` | Receives standard HTTP requests from the public `service` method and dispatches them to the `do` Method methods defined in this class.

    - ### Methods inherited from class javax.servlet.http.HttpServlet

      `doTrace, getLastModified, 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

    - #### sm

          protected static final StringManager sm

      The string manager for this package.

    - #### FULL

          protected static final java.util.ArrayList<DefaultServlet.Range> FULL

      Full range marker.

    - #### mimeSeparation

          protected static final java.lang.String mimeSeparation

      MIME multipart separation string
      See Also:
        Constant Field Values

    - #### RESOURCES_JNDI_NAME

          @Deprecated
          protected static final java.lang.String RESOURCES_JNDI_NAME

      Deprecated.
      Unused. Will be removed in Tomcat 9.
      JNDI resources name.
      See Also:
        Constant Field Values

    - #### BUFFER_SIZE

          protected static final int BUFFER_SIZE

      Size of file transfer buffer in bytes.
      See Also:
        Constant Field Values

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

    - #### readOnly

          protected boolean readOnly

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

    - #### compressionFormats

          protected DefaultServlet.CompressionFormat[] compressionFormats

      List of compression formats to serve and their preference order.

    - #### output

          protected int output

      The output buffer size to use when serving resources.

    - #### localXsltFile

          protected java.lang.String localXsltFile

      Allow customized directory listing per directory.

    - #### contextXsltFile

          protected java.lang.String contextXsltFile

      Allow customized directory listing per context.

    - #### globalXsltFile

          protected java.lang.String globalXsltFile

      Allow customized directory listing per instance.

    - #### readmeFile

          protected java.lang.String readmeFile

      Allow a readme file to be included.

    - #### resources

          protected transient WebResourceRoot resources

      The complete set of web application resources

    - #### fileEncoding

          protected java.lang.String fileEncoding

      File encoding to be used when reading static files. If none is specified the platform default is used.

    - #### sendfileSize

          protected int sendfileSize

      Minimum size for sendfile usage in bytes.

    - #### useAcceptRanges

          protected boolean useAcceptRanges

      Should the Accept-Ranges: bytes header be send with static resources?

    - #### showServerInfo

          protected boolean showServerInfo

      Flag to determine if server information is presented.

    - #### sortListings

          protected boolean sortListings

      Flag to determine if resources should be sorted.

    - #### sortManager

          protected transient org.apache.catalina.servlets.DefaultServlet.SortManager sortManager

      The sorting manager for sorting files and directories.

  - ### Constructor Detail

    - #### DefaultServlet

          public DefaultServlet()

  - ### Method Detail

    - #### destroy

          public void destroy()

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

    - #### init

          public void init()
                    throws ServletException

      Initialize this servlet.
      Overrides:
        `init` in class `GenericServlet`
      Throws:
        `ServletException` - if an exception occurs that interrupts the servlet's normal operation

    - #### getRelativePath

          protected java.lang.String getRelativePath​(HttpServletRequest request)

      Return the relative path associated with this servlet.
      Parameters:
        `request` - The servlet request we are processing
      Returns:
        the relative path

    - #### getRelativePath

          protected java.lang.String getRelativePath​(HttpServletRequest request,
                                                     boolean allowEmptyPath)

    - #### getPathPrefix

          protected java.lang.String getPathPrefix​(HttpServletRequest request)

      Determines the appropriate path to prepend resources with when generating directory listings. Depending on the behaviour of `getRelativePath(HttpServletRequest)` this will change.
      Parameters:
        `request` - the request to determine the path for
      Returns:
        the prefix to apply to all resources in the listing.

    - #### service

          protected void service​(HttpServletRequest req,
                                 HttpServletResponse resp)
                          throws ServletException,
                                 java.io.IOException

      Description copied from class: `javax.servlet.http.HttpServlet`
      Receives standard HTTP requests from the public `service` method and dispatches them to the `do` Method methods defined in this class. This method is an HTTP-specific version of the `Servlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)` method. There's no need to override this method.
      Overrides:
        `service` in class `HttpServlet`
      Parameters:
        `req` - the `HttpServletRequest` object that contains the request the client made of the servlet
        `resp` - the `HttpServletResponse` object that contains the response the servlet returns to the client
      Throws:
        `ServletException` - if the HTTP request cannot be handled
        `java.io.IOException` - if an input or output error occurs while the servlet is handling the HTTP request
      See Also:
        `Servlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)`

    - #### doGet

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

      Process a GET request for the specified resource.
      Overrides:
        `doGet` in class `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
        `ServletException` - if a servlet-specified error occurs
      See Also:
        `ServletResponse.setContentType(java.lang.String)`

    - #### doHead

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

      Process a HEAD request for the specified resource.
      Overrides:
        `doHead` in class `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
        `ServletException` - if a servlet-specified error occurs

    - #### doOptions

          protected void doOptions​(HttpServletRequest req,
                                   HttpServletResponse resp)
                            throws ServletException,
                                   java.io.IOException

      Override default implementation to ensure that TRACE is correctly handled.
      Overrides:
        `doOptions` in class `HttpServlet`
      Parameters:
        `req` - the `HttpServletRequest` object that contains the request the client made of the servlet
        `resp` - the `HttpServletResponse` object that contains the response the servlet returns to the client
      Throws:
        `java.io.IOException` - if an input or output error occurs while the servlet is handling the OPTIONS request
        `ServletException` - if the request for the OPTIONS cannot be handled

    - #### determineMethodsAllowed

          protected java.lang.String determineMethodsAllowed​(HttpServletRequest req)

    - #### sendNotAllowed

          protected void sendNotAllowed​(HttpServletRequest req,
                                        HttpServletResponse resp)
                                 throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### doPost

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

      Process a POST request for the specified resource.
      Overrides:
        `doPost` in class `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
        `ServletException` - if a servlet-specified error occurs
      See Also:
        `ServletOutputStream`, `ServletResponse.setContentType(java.lang.String)`

    - #### doPut

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

      Process a PUT request for the specified resource.
      Overrides:
        `doPut` in class `HttpServlet`
      Parameters:
        `req` - The servlet request we are processing
        `resp` - The servlet response we are creating
      Throws:
        `java.io.IOException` - if an input/output error occurs
        `ServletException` - if a servlet-specified error occurs

    - #### executePartialPut

          protected java.io.File executePartialPut​(HttpServletRequest req,
                                                   DefaultServlet.Range range,
                                                   java.lang.String path)
                                            throws java.io.IOException

      Handle a partial PUT. New content specified in request is appended to existing content in oldRevisionContent (if present). This code does not support simultaneous partial updates to the same resource.
      Parameters:
        `req` - The Servlet request
        `range` - The range that will be written
        `path` - The path
      Returns:
        the associated file object
      Throws:
        `java.io.IOException` - an IO error occurred

    - #### doDelete

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

      Process a DELETE request for the specified resource.
      Overrides:
        `doDelete` in class `HttpServlet`
      Parameters:
        `req` - The servlet request we are processing
        `resp` - The servlet response we are creating
      Throws:
        `java.io.IOException` - if an input/output error occurs
        `ServletException` - if a servlet-specified error occurs

    - #### checkIfHeaders

          protected boolean checkIfHeaders​(HttpServletRequest request,
                                           HttpServletResponse response,
                                           WebResource resource)
                                    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
        `resource` - The resource
      Returns:
        `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
      Throws:
        `java.io.IOException` - an IO error occurred

    - #### rewriteUrl

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

      URL rewriter.
      Parameters:
        `path` - Path which has to be rewritten
      Returns:
        the rewritten path

    - #### serveResource

          protected void serveResource​(HttpServletRequest request,
                                       HttpServletResponse response,
                                       boolean content,
                                       java.lang.String inputEncoding)
                                throws java.io.IOException,
                                       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?
        `inputEncoding` - The encoding to use if it is necessary to access the source as characters rather than as bytes
      Throws:
        `java.io.IOException` - if an input/output error occurs
        `ServletException` - if a servlet-specified error occurs

    - #### parseContentRange

          protected DefaultServlet.Range parseContentRange​(HttpServletRequest request,
                                                           HttpServletResponse response)
                                                    throws java.io.IOException

      Parse the content-range header.
      Parameters:
        `request` - The servlet request we are processing
        `response` - The servlet response we are creating
      Returns:
        the partial content-range, `null` if the content-range header was invalid or `#IGNORE` if there is no header to process
      Throws:
        `java.io.IOException` - an IO error occurred

    - #### parseRange

          protected java.util.ArrayList<DefaultServlet.Range> parseRange​(HttpServletRequest request,
                                                                         HttpServletResponse response,
                                                                         WebResource resource)
                                                                  throws java.io.IOException

      Parse the range header.
      Parameters:
        `request` - The servlet request we are processing
        `response` - The servlet response we are creating
        `resource` - The resource
      Returns:
        a list of ranges, `null` if the range header was invalid or `#FULL` if the Range header should be ignored.
      Throws:
        `java.io.IOException` - an IO error occurred

    - #### render

          @Deprecated
          protected java.io.InputStream render​(java.lang.String contextPath,
                                               WebResource resource)
                                        throws java.io.IOException,
                                               ServletException

      Deprecated.
      Unused. Will be removed in Tomcat 9
      Decide which way to render. HTML or XML.
      Parameters:
        `contextPath` - The path
        `resource` - The resource
      Returns:
        the input stream with the rendered output
      Throws:
        `java.io.IOException` - an IO error occurred
        `ServletException` - rendering error

    - #### render

          @Deprecated
          protected java.io.InputStream render​(java.lang.String contextPath,
                                               WebResource resource,
                                               java.lang.String encoding)
                                        throws java.io.IOException,
                                               ServletException

      Deprecated.
      Use `render(HttpServletRequest, String, WebResource, String)` instead
      Decide which way to render. HTML or XML.
      Parameters:
        `contextPath` - The path
        `resource` - The resource
        `encoding` - The encoding to use to process the readme (if any)
      Returns:
        the input stream with the rendered output
      Throws:
        `java.io.IOException` - an IO error occurred
        `ServletException` - rendering error

    - #### render

          protected java.io.InputStream render​(HttpServletRequest request,
                                               java.lang.String contextPath,
                                               WebResource resource,
                                               java.lang.String encoding)
                                        throws java.io.IOException,
                                               ServletException

      Decide which way to render. HTML or XML.
      Parameters:
        `request` - The HttpServletRequest being served
        `contextPath` - The path
        `resource` - The resource
        `encoding` - The encoding to use to process the readme (if any)
      Returns:
        the input stream with the rendered output
      Throws:
        `java.io.IOException` - an IO error occurred
        `ServletException` - rendering error

    - #### renderXml

          @Deprecated
          protected java.io.InputStream renderXml​(java.lang.String contextPath,
                                                  WebResource resource,
                                                  javax.xml.transform.Source xsltSource)
                                           throws java.io.IOException,
                                                  ServletException

      Deprecated.
      Unused. Will be removed in Tomcat 9
      Return an InputStream to an XML representation of the contents this directory.
      Parameters:
        `contextPath` - Context path to which our internal paths are relative
        `resource` - The associated resource
        `xsltSource` - The XSL stylesheet
      Returns:
        the XML data
      Throws:
        `java.io.IOException` - an IO error occurred
        `ServletException` - rendering error

    - #### renderXml

          @Deprecated
          protected java.io.InputStream renderXml​(java.lang.String contextPath,
                                                  WebResource resource,
                                                  javax.xml.transform.Source xsltSource,
                                                  java.lang.String encoding)
                                           throws ServletException,
                                                  java.io.IOException

      Deprecated.
      Unused. Will be removed in Tomcat 10
      Return an InputStream to an XML representation of the contents this directory.
      Parameters:
        `contextPath` - Context path to which our internal paths are relative
        `resource` - The associated resource
        `xsltSource` - The XSL stylesheet
        `encoding` - The encoding to use to process the readme (if any)
      Returns:
        the XML data
      Throws:
        `java.io.IOException` - an IO error occurred
        `ServletException` - rendering error

    - #### renderXml

          protected java.io.InputStream renderXml​(HttpServletRequest request,
                                                  java.lang.String contextPath,
                                                  WebResource resource,
                                                  javax.xml.transform.Source xsltSource,
                                                  java.lang.String encoding)
                                           throws java.io.IOException,
                                                  ServletException

      Return an InputStream to an XML representation of the contents this directory.
      Parameters:
        `request` - The HttpServletRequest being served
        `contextPath` - Context path to which our internal paths are relative
        `resource` - The associated resource
        `xsltSource` - The XSL stylesheet
        `encoding` - The encoding to use to process the readme (if any)
      Returns:
        the XML data
      Throws:
        `java.io.IOException` - an IO error occurred
        `ServletException` - rendering error

    - #### renderHtml

          @Deprecated
          protected java.io.InputStream renderHtml​(java.lang.String contextPath,
                                                   WebResource resource)
                                            throws java.io.IOException

      Deprecated.
      Unused. Will be removed in Tomcat 9
      Return an InputStream to an HTML representation of the contents of this directory.
      Parameters:
        `contextPath` - Context path to which our internal paths are relative
        `resource` - The associated resource
      Returns:
        the HTML data
      Throws:
        `java.io.IOException` - an IO error occurred

    - #### renderHtml

          @Deprecated
          protected java.io.InputStream renderHtml​(java.lang.String contextPath,
                                                   WebResource resource,
                                                   java.lang.String encoding)
                                            throws java.io.IOException

      Deprecated.
      Unused. Will be removed in Tomcat 10
      Return an InputStream to an HTML representation of the contents of this directory.
      Parameters:
        `contextPath` - Context path to which our internal paths are relative
        `resource` - The associated resource
        `encoding` - The encoding to use to process the readme (if any)
      Returns:
        the HTML data
      Throws:
        `java.io.IOException` - an IO error occurred

    - #### renderHtml

          protected java.io.InputStream renderHtml​(HttpServletRequest request,
                                                   java.lang.String contextPath,
                                                   WebResource resource,
                                                   java.lang.String encoding)
                                            throws java.io.IOException

      Return an InputStream to an HTML representation of the contents of this directory.
      Parameters:
        `request` - The HttpServletRequest being served
        `contextPath` - Context path to which our internal paths are relative
        `resource` - The associated resource
        `encoding` - The encoding to use to process the readme (if any)
      Returns:
        the HTML data
      Throws:
        `java.io.IOException` - an IO error occurred

    - #### renderSize

          protected java.lang.String renderSize​(long size)

      Render the specified file size (in bytes).
      Parameters:
        `size` - File size (in bytes)
      Returns:
        the formatted size

    - #### getReadme

          @Deprecated
          protected java.lang.String getReadme​(WebResource directory)

      Deprecated.
      Unused. Will be removed in Tomcat 9
      Get the readme file as a string.
      Parameters:
        `directory` - The directory to search
      Returns:
        the readme for the specified directory

    - #### getReadme

          protected java.lang.String getReadme​(WebResource directory,
                                               java.lang.String encoding)

      Get the readme file as a string.
      Parameters:
        `directory` - The directory to search
        `encoding` - The readme encoding
      Returns:
        the readme for the specified directory

    - #### findXsltSource

          protected javax.xml.transform.Source findXsltSource​(WebResource directory)
                                                       throws java.io.IOException

      Return a Source for the xsl template (if possible).
      Parameters:
        `directory` - The directory to search
      Returns:
        the source for the specified directory
      Throws:
        `java.io.IOException` - an IO error occurred

    - #### checkSendfile

          protected boolean checkSendfile​(HttpServletRequest request,
                                          HttpServletResponse response,
                                          WebResource resource,
                                          long length,
                                          DefaultServlet.Range range)

      Check if sendfile can be used.
      Parameters:
        `request` - The Servlet request
        `response` - The Servlet response
        `resource` - The resource
        `length` - The length which will be written (will be used only if range is null)
        `range` - The range that will be written
      Returns:
        `true` if sendfile should be used (writing is then delegated to the endpoint)

    - #### checkIfMatch

          protected boolean checkIfMatch​(HttpServletRequest request,
                                         HttpServletResponse response,
                                         WebResource resource)
                                  throws java.io.IOException

      Check if the if-match condition is satisfied.
      Parameters:
        `request` - The servlet request we are processing
        `response` - The servlet response we are creating
        `resource` - The resource
      Returns:
        `true` if the resource meets the specified condition, and `false` if the condition is not satisfied, in which case request processing is stopped
      Throws:
        `java.io.IOException` - an IO error occurred

    - #### checkIfModifiedSince

          protected boolean checkIfModifiedSince​(HttpServletRequest request,
                                                 HttpServletResponse response,
                                                 WebResource resource)

      Check if the if-modified-since condition is satisfied.
      Parameters:
        `request` - The servlet request we are processing
        `response` - The servlet response we are creating
        `resource` - The resource
      Returns:
        `true` if the resource meets the specified condition, and `false` if the condition is not satisfied, in which case request processing is stopped

    - #### checkIfNoneMatch

          protected boolean checkIfNoneMatch​(HttpServletRequest request,
                                             HttpServletResponse response,
                                             WebResource resource)
                                      throws java.io.IOException

      Check if the if-none-match condition is satisfied.
      Parameters:
        `request` - The servlet request we are processing
        `response` - The servlet response we are creating
        `resource` - The resource
      Returns:
        `true` if the resource meets the specified condition, and `false` if the condition is not satisfied, in which case request processing is stopped
      Throws:
        `java.io.IOException` - an IO error occurred

    - #### checkIfUnmodifiedSince

          protected boolean checkIfUnmodifiedSince​(HttpServletRequest request,
                                                   HttpServletResponse response,
                                                   WebResource resource)
                                            throws java.io.IOException

      Check if the if-unmodified-since condition is satisfied.
      Parameters:
        `request` - The servlet request we are processing
        `response` - The servlet response we are creating
        `resource` - The resource
      Returns:
        `true` if the resource meets the specified condition, and `false` if the condition is not satisfied, in which case request processing is stopped
      Throws:
        `java.io.IOException` - an IO error occurred

    - #### generateETag

          protected java.lang.String generateETag​(WebResource resource)

      Provides the entity tag (the ETag header) for the given resource. Intended to be over-ridden by custom DefaultServlet implementations that wish to use an alternative format for the entity tag.
      Parameters:
        `resource` - The resource for which an entity tag is required.
      Returns:
        The result of calling `WebResource.getETag()` on the given resource

    - #### copy

          @Deprecated
          protected void copy​(WebResource resource,
                              java.io.InputStream is,
                              ServletOutputStream ostream)
                       throws java.io.IOException

      Deprecated.
      Unused. This will be removed in Tomcat 9. Use `copy(InputStream, ServletOutputStream)`
      Copy the contents of the specified input stream to the specified output stream, and ensure that both streams are closed before returning (even in the face of an exception).
      Parameters:
        `resource` - The source resource
        `is` - The input stream to read the source resource from
        `ostream` - The output stream to write to
      Throws:
        `java.io.IOException` - if an input/output error occurs

    - #### copy

          protected void copy​(java.io.InputStream is,
                              ServletOutputStream ostream)
                       throws java.io.IOException

      Copy the contents of the specified input stream to the specified output stream, and ensure that both streams are closed before returning (even in the face of an exception).
      Parameters:
        `is` - The input stream to read the source resource from
        `ostream` - The output stream to write to
      Throws:
        `java.io.IOException` - if an input/output error occurs

    - #### copy

          @Deprecated
          protected void copy​(WebResource resource,
                              java.io.InputStream is,
                              java.io.PrintWriter writer,
                              java.lang.String encoding)
                       throws java.io.IOException

      Deprecated.
      Unused. This will be removed in Tomcat 9. Use `copy(InputStream, PrintWriter, String)`
      Copy the contents of the specified input stream to the specified output stream, and ensure that both streams are closed before returning (even in the face of an exception).
      Parameters:
        `resource` - The source resource
        `is` - The input stream to read the source resource from
        `writer` - The writer to write to
        `encoding` - The encoding to use when reading the source input stream
      Throws:
        `java.io.IOException` - if an input/output error occurs

    - #### copy

          protected void copy​(java.io.InputStream is,
                              java.io.PrintWriter writer,
                              java.lang.String encoding)
                       throws java.io.IOException

      Copy the contents of the specified input stream to the specified output stream, and ensure that both streams are closed before returning (even in the face of an exception).
      Parameters:
        `is` - The input stream to read the source resource from
        `writer` - The writer to write to
        `encoding` - The encoding to use when reading the source input stream
      Throws:
        `java.io.IOException` - if an input/output error occurs

    - #### copy

          protected void copy​(WebResource resource,
                              ServletOutputStream ostream,
                              DefaultServlet.Range range)
                       throws java.io.IOException

      Copy the contents of the specified input stream to the specified output stream, and ensure that both streams are closed before returning (even in the face of an exception).
      Parameters:
        `resource` - The source resource
        `ostream` - The output stream to write to
        `range` - Range the client wanted to retrieve
      Throws:
        `java.io.IOException` - if an input/output error occurs

    - #### copy

          protected void copy​(WebResource resource,
                              ServletOutputStream ostream,
                              java.util.Iterator<DefaultServlet.Range> ranges,
                              java.lang.String contentType)
                       throws java.io.IOException

      Copy the contents of the specified input stream to the specified output stream, and ensure that both streams are closed before returning (even in the face of an exception).
      Parameters:
        `resource` - The source resource
        `ostream` - The output stream to write to
        `ranges` - Enumeration of the ranges the client wanted to retrieve
        `contentType` - Content type of the resource
      Throws:
        `java.io.IOException` - if an input/output error occurs

    - #### copyRange

          protected java.io.IOException copyRange​(java.io.InputStream istream,
                                                  ServletOutputStream ostream)

      Copy the contents of the specified input stream to the specified output stream, and ensure that both streams are closed before returning (even in the face of an exception).
      Parameters:
        `istream` - The input stream to read from
        `ostream` - The output stream to write to
      Returns:
        Exception which occurred during processing

    - #### copyRange

          protected java.io.IOException copyRange​(java.io.Reader reader,
                                                  java.io.PrintWriter writer)

      Copy the contents of the specified input stream to the specified output stream, and ensure that both streams are closed before returning (even in the face of an exception).
      Parameters:
        `reader` - The reader to read from
        `writer` - The writer to write to
      Returns:
        Exception which occurred during processing

    - #### copyRange

          protected java.io.IOException copyRange​(java.io.InputStream istream,
                                                  ServletOutputStream ostream,
                                                  long start,
                                                  long end)

      Copy the contents of the specified input stream to the specified output stream, and ensure that both streams are closed before returning (even in the face of an exception).
      Parameters:
        `istream` - The input stream to read from
        `ostream` - The output stream to write to
        `start` - Start of the range which will be copied
        `end` - End of the range which will be copied
      Returns:
        Exception which occurred during processing