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 appplication 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.
Modifier and Type | Class and Description |
---|---|
protected static class |
DefaultServlet.Range |
Modifier and Type | Field and Description |
---|---|
protected static int |
BUFFER_SIZE
Size of file transfer buffer in bytes.
|
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 ProxyDirContext |
resources
Proxy directory context.
|
protected static java.lang.String |
RESOURCES_JNDI_NAME
JNDI resources name.
|
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 static URLEncoder |
urlEncoder
Array containing the safe characters set.
|
protected boolean |
useAcceptRanges
Should the Accept-Ranges: bytes header be send with static resources?
|
Constructor and Description |
---|
DefaultServlet() |
Modifier and Type | Method and Description |
---|---|
protected boolean |
checkIfHeaders(HttpServletRequest request,
HttpServletResponse response,
ResourceAttributes resourceAttributes)
Check if the conditions specified in the optional If headers are
satisfied.
|
protected boolean |
checkIfMatch(HttpServletRequest request,
HttpServletResponse response,
ResourceAttributes resourceAttributes)
Check if the if-match condition is satisfied.
|
protected boolean |
checkIfModifiedSince(HttpServletRequest request,
HttpServletResponse response,
ResourceAttributes resourceAttributes)
Check if the if-modified-since condition is satisfied.
|
protected boolean |
checkIfNoneMatch(HttpServletRequest request,
HttpServletResponse response,
ResourceAttributes resourceAttributes)
Check if the if-none-match condition is satisfied.
|
protected boolean |
checkIfUnmodifiedSince(HttpServletRequest request,
HttpServletResponse response,
ResourceAttributes resourceAttributes)
Check if the if-unmodified-since condition is satisfied.
|
protected boolean |
checkSendfile(HttpServletRequest request,
HttpServletResponse response,
CacheEntry entry,
long length,
DefaultServlet.Range range)
Check if sendfile can be used.
|
protected void |
copy(CacheEntry cacheEntry,
java.io.InputStream is,
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).
|
protected void |
copy(CacheEntry cacheEntry,
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(CacheEntry cacheEntry,
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 void |
copy(CacheEntry cacheEntry,
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 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 void |
displaySize(java.lang.StringBuilder buf,
int filesize)
Deprecated.
Will be removed in Tomcat 8.0.x. Replaced by
renderSize(long) |
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 |
findXsltInputStream(javax.naming.directory.DirContext directory)
Return a Source for the xsl template (if possible)
|
protected java.lang.String |
getPathPrefix(HttpServletRequest request)
Determines the appropriate path to prepend resources with
when generating directory listings.
|
protected java.lang.String |
getReadme(javax.naming.directory.DirContext directory)
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,
ResourceAttributes resourceAttributes)
Parse the range header.
|
protected java.io.InputStream |
render(java.lang.String contextPath,
CacheEntry cacheEntry)
Decide which way to render.
|
protected java.io.InputStream |
renderHtml(java.lang.String contextPath,
CacheEntry cacheEntry)
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,
CacheEntry cacheEntry,
javax.xml.transform.Source xsltSource)
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(HttpServletRequest request,
HttpServletResponse response,
boolean content)
Serve the specified resource, optionally including the data content.
|
doTrace, getLastModified, service, service
getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log
protected int debug
protected int input
protected boolean listings
protected boolean readOnly
protected int output
protected static final URLEncoder urlEncoder
protected java.lang.String localXsltFile
protected java.lang.String contextXsltFile
protected java.lang.String globalXsltFile
protected java.lang.String readmeFile
protected transient ProxyDirContext resources
protected java.lang.String fileEncoding
protected int sendfileSize
protected boolean useAcceptRanges
protected static final java.util.ArrayList<DefaultServlet.Range> FULL
protected boolean showServerInfo
protected static final java.lang.String mimeSeparation
protected static final java.lang.String RESOURCES_JNDI_NAME
protected static final StringManager sm
protected static final int BUFFER_SIZE
public void destroy()
destroy
in interface Servlet
destroy
in class GenericServlet
public void init() throws ServletException
init
in class GenericServlet
ServletException
- if an exception occurs that interrupts the servlet's
normal operationprotected java.lang.String getRelativePath(HttpServletRequest request)
request
- The servlet request we are processingprotected java.lang.String getRelativePath(HttpServletRequest request, boolean allowEmptyPath)
protected java.lang.String getPathPrefix(HttpServletRequest request)
getRelativePath(HttpServletRequest)
this will change.request
- the request to determine the path forprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException
doGet
in class HttpServlet
request
- The servlet request we are processingresponse
- The servlet response we are creatingjava.io.IOException
- if an input/output error occursServletException
- if a servlet-specified error occursServletResponse.setContentType(java.lang.String)
protected void doHead(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException
doHead
in class HttpServlet
request
- The servlet request we are processingresponse
- The servlet response we are creatingjava.io.IOException
- if an input/output error occursServletException
- if a servlet-specified error occursprotected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
doOptions
in class HttpServlet
req
- the HttpServletRequest
object that
contains the request the client made of
the servletresp
- the HttpServletResponse
object that
contains the response the servlet returns
to the clientjava.io.IOException
- if an input or output error occurs
while the servlet is handling the
OPTIONS requestServletException
- if the request for the
OPTIONS cannot be handledprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException
doPost
in class HttpServlet
request
- The servlet request we are processingresponse
- The servlet response we are creatingjava.io.IOException
- if an input/output error occursServletException
- if a servlet-specified error occursServletOutputStream
,
ServletResponse.setContentType(java.lang.String)
protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
doPut
in class HttpServlet
req
- The servlet request we are processingresp
- The servlet response we are creatingjava.io.IOException
- if an input/output error occursServletException
- if a servlet-specified error occursprotected java.io.File executePartialPut(HttpServletRequest req, DefaultServlet.Range range, java.lang.String path) throws java.io.IOException
java.io.IOException
protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
doDelete
in class HttpServlet
req
- The servlet request we are processingresp
- The servlet response we are creatingjava.io.IOException
- if an input/output error occursServletException
- if a servlet-specified error occursprotected boolean checkIfHeaders(HttpServletRequest request, HttpServletResponse response, ResourceAttributes resourceAttributes) throws java.io.IOException
request
- The servlet request we are processingresponse
- The servlet response we are creatingresourceAttributes
- The resource informationjava.io.IOException
protected java.lang.String rewriteUrl(java.lang.String path)
path
- Path which has to be rewritten@Deprecated protected void displaySize(java.lang.StringBuilder buf, int filesize)
renderSize(long)
protected void serveResource(HttpServletRequest request, HttpServletResponse response, boolean content) throws java.io.IOException, ServletException
request
- The servlet request we are processingresponse
- The servlet response we are creatingcontent
- Should the content be included?java.io.IOException
- if an input/output error occursServletException
- if a servlet-specified error occursprotected DefaultServlet.Range parseContentRange(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException
request
- The servlet request we are processingresponse
- The servlet response we are creatingjava.io.IOException
protected java.util.ArrayList<DefaultServlet.Range> parseRange(HttpServletRequest request, HttpServletResponse response, ResourceAttributes resourceAttributes) throws java.io.IOException
request
- The servlet request we are processingresponse
- The servlet response we are creatingjava.io.IOException
protected java.io.InputStream render(java.lang.String contextPath, CacheEntry cacheEntry) throws java.io.IOException, ServletException
java.io.IOException
ServletException
protected java.io.InputStream renderXml(java.lang.String contextPath, CacheEntry cacheEntry, javax.xml.transform.Source xsltSource) throws java.io.IOException, ServletException
contextPath
- Context path to which our internal paths are
relativejava.io.IOException
ServletException
protected java.io.InputStream renderHtml(java.lang.String contextPath, CacheEntry cacheEntry) throws java.io.IOException, ServletException
contextPath
- Context path to which our internal paths are
relativejava.io.IOException
ServletException
protected java.lang.String renderSize(long size)
size
- File size (in bytes)protected java.lang.String getReadme(javax.naming.directory.DirContext directory) throws java.io.IOException
java.io.IOException
protected javax.xml.transform.Source findXsltInputStream(javax.naming.directory.DirContext directory) throws java.io.IOException
java.io.IOException
protected boolean checkSendfile(HttpServletRequest request, HttpServletResponse response, CacheEntry entry, long length, DefaultServlet.Range range)
protected boolean checkIfMatch(HttpServletRequest request, HttpServletResponse response, ResourceAttributes resourceAttributes) throws java.io.IOException
request
- The servlet request we are processingresponse
- The servlet response we are creatingresourceAttributes
- File objectjava.io.IOException
protected boolean checkIfModifiedSince(HttpServletRequest request, HttpServletResponse response, ResourceAttributes resourceAttributes)
request
- The servlet request we are processingresponse
- The servlet response we are creatingresourceAttributes
- File objectprotected boolean checkIfNoneMatch(HttpServletRequest request, HttpServletResponse response, ResourceAttributes resourceAttributes) throws java.io.IOException
request
- The servlet request we are processingresponse
- The servlet response we are creatingresourceAttributes
- File objectjava.io.IOException
protected boolean checkIfUnmodifiedSince(HttpServletRequest request, HttpServletResponse response, ResourceAttributes resourceAttributes) throws java.io.IOException
request
- The servlet request we are processingresponse
- The servlet response we are creatingresourceAttributes
- File objectjava.io.IOException
protected void copy(CacheEntry cacheEntry, java.io.InputStream is, ServletOutputStream ostream) throws java.io.IOException
cacheEntry
- The cache entry for the source resourceis
- The input stream to read the source resource fromostream
- The output stream to write tojava.io.IOException
- if an input/output error occursprotected void copy(CacheEntry cacheEntry, java.io.InputStream is, java.io.PrintWriter writer) throws java.io.IOException
cacheEntry
- The cache entry for the source resourceis
- The input stream to read the source resource fromwriter
- The writer to write tojava.io.IOException
- if an input/output error occursprotected void copy(CacheEntry cacheEntry, ServletOutputStream ostream, DefaultServlet.Range range) throws java.io.IOException
cacheEntry
- The cache entry for the source resourceostream
- The output stream to write torange
- Range the client wanted to retrievejava.io.IOException
- if an input/output error occursprotected void copy(CacheEntry cacheEntry, ServletOutputStream ostream, java.util.Iterator<DefaultServlet.Range> ranges, java.lang.String contentType) throws java.io.IOException
cacheEntry
- The cache entry for the source resourceostream
- The output stream to write toranges
- Enumeration of the ranges the client wanted to retrievecontentType
- Content type of the resourcejava.io.IOException
- if an input/output error occursprotected java.io.IOException copyRange(java.io.InputStream istream, ServletOutputStream ostream)
istream
- The input stream to read fromostream
- The output stream to write toprotected java.io.IOException copyRange(java.io.Reader reader, java.io.PrintWriter writer)
reader
- The reader to read fromwriter
- The writer to write toprotected java.io.IOException copyRange(java.io.InputStream istream, ServletOutputStream ostream, long start, long end)
istream
- The input stream to read fromostream
- The output stream to write tostart
- Start of the range which will be copiedend
- End of the range which will be copiedCopyright © 2000-2015 Apache Software Foundation. All Rights Reserved.