org.apache.catalina.servlets
Class DefaultServlet

java.lang.Object
  extended byjavax.servlet.GenericServlet
      extended byjavax.servlet.http.HttpServlet
          extended byorg.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.23 $ $Date: 2004/05/26 16:03:06 $
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  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 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  java.lang.String readmeFile
          Allow a readme file to be included.
protected  boolean readOnly
          Read only flag.
protected static java.lang.String RESOURCES_JNDI_NAME
          JNDI resources name.
protected static StringManager sm
          The string manager for this package.
protected static URLEncoder urlEncoder
          Array containing the safe characters set.
 
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.io.File executePartialPut(javax.servlet.http.HttpServletRequest req, org.apache.catalina.servlets.DefaultServlet.Range range, java.lang.String path)
          Handle a partial PUT.
protected  java.io.InputStream findXsltInputStream(javax.naming.directory.DirContext directory)
          Return the xsl template inputstream (if possible)
protected  java.lang.String getETag(DefaultServlet.ResourceInfo resourceInfo)
          Get the ETag associated with a file.
protected  java.lang.String getReadme(javax.naming.directory.DirContext directory)
          Get the readme file as a string.
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  org.apache.catalina.servlets.DefaultServlet.Range parseContentRange(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Parse the content-range header.
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)
          Decide which way to render.
protected  java.io.InputStream renderHtml(java.lang.String contextPath, DefaultServlet.ResourceInfo resourceInfo)
          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, DefaultServlet.ResourceInfo resourceInfo, java.io.InputStream xsltInputStream)
          Return an InputStream to an HTML representation of the contents of this directory.
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?


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.


md5Helper

protected static java.security.MessageDigest md5Helper
MD5 message digest provider.


md5Encoder

protected static final MD5Encoder md5Encoder
The MD5 helper object for this class.


urlEncoder

protected static URLEncoder urlEncoder
Array containing the safe characters set.


localXsltFile

protected java.lang.String localXsltFile
Allow customized directory listing per directory.


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.


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.

Constructor Detail

DefaultServlet

public DefaultServlet()
Method Detail

destroy

public void destroy()
Finalize this servlet.


init

public void init()
          throws javax.servlet.ServletException
Initialize this servlet.

Throws:
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.

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.

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.

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.

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
javax.servlet.ServletException - if a servlet-specified error occurs

executePartialPut

protected java.io.File executePartialPut(javax.servlet.http.HttpServletRequest req,
                                         org.apache.catalina.servlets.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.

Throws:
java.io.IOException

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.

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
Throws:
java.io.IOException

getETag

protected java.lang.String getETag(DefaultServlet.ResourceInfo resourceInfo)
Get the ETag associated with a file.

Parameters:
resourceInfo - File object

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

parseContentRange

protected org.apache.catalina.servlets.DefaultServlet.Range parseContentRange(javax.servlet.http.HttpServletRequest request,
                                                                              javax.servlet.http.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:
Range
Throws:
java.io.IOException

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
Throws:
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)
Decide which way to render. HTML or XML.


renderXml

protected java.io.InputStream renderXml(java.lang.String contextPath,
                                        DefaultServlet.ResourceInfo resourceInfo,
                                        java.io.InputStream xsltInputStream)
Return an InputStream to an HTML representation of the contents of this directory.

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

renderHtml

protected java.io.InputStream renderHtml(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

renderSize

protected java.lang.String renderSize(long size)
Render the specified file size (in bytes).

Parameters:
size - File size (in bytes)

getReadme

protected java.lang.String getReadme(javax.naming.directory.DirContext directory)
Get the readme file as a string.


findXsltInputStream

protected java.io.InputStream findXsltInputStream(javax.naming.directory.DirContext directory)
Return the xsl template inputstream (if possible)



Copyright ⌐ 2000-2003 Apache Software Foundation. All Rights Reserved.