Package org.apache.catalina.servlets
Class WebdavServlet
java.lang.Object
javax.servlet.GenericServlet
javax.servlet.http.HttpServlet
org.apache.catalina.servlets.DefaultServlet
org.apache.catalina.servlets.WebdavServlet
- All Implemented Interfaces:
Serializable
,Servlet
,ServletConfig
Servlet which adds support for WebDAV
level 2. All the basic HTTP requests are handled by the
DefaultServlet. The WebDAVServlet must not be used as the default servlet (ie mapped to '/') as it will not work in
this configuration.
Mapping a subpath (e.g. /webdav/*
to this servlet has the effect of re-mounting the entire web
application under that sub-path, with WebDAV access to all the resources. The WEB-INF
and
META-INF
directories are protected in this re-mounted resource tree.
To enable WebDAV for a context add the following to web.xml:
<servlet> <servlet-name>webdav</servlet-name> <servlet-class>org.apache.catalina.servlets.WebdavServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>webdav</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>This will enable read only access. To enable read-write access add:
<init-param> <param-name>readonly</param-name> <param-value>false</param-value> </init-param>To make the content editable via a different URL, use the following mapping:
<servlet-mapping> <servlet-name>webdav</servlet-name> <url-pattern>/webdavedit/*</url-pattern> </servlet-mapping>By default access to /WEB-INF and META-INF are not available via WebDAV. To enable access to these URLs, use add:
<init-param> <param-name>allowSpecialPaths</param-name> <param-value>true</param-value> </init-param>Don't forget to secure access appropriately to the editing URLs, especially if allowSpecialPaths is used. With the mapping configuration above, the context will be accessible to normal users as before. Those users with the necessary access will be able to edit content available via http://host:port/context/content using http://host:port/context/webdavedit/content
- Author:
- Remy Maucherat
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.catalina.servlets.DefaultServlet
DefaultServlet.CompressionFormat, DefaultServlet.Range
-
Field Summary
Modifier and TypeFieldDescriptionprotected static final ConcurrentDateFormat
Simple date format for the creation date ISO representation (partial).protected static final String
Default namespace.Fields inherited from class org.apache.catalina.servlets.DefaultServlet
BUFFER_SIZE, compressionFormats, contextXsltFile, debug, fileEncoding, FULL, globalXsltFile, input, listings, localXsltFile, mimeSeparation, output, readmeFile, readOnly, resources, RESOURCES_JNDI_NAME, sendfileSize, showServerInfo, sm, sortListings, sortManager, useAcceptRanges
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected boolean
checkIfHeaders
(HttpServletRequest request, HttpServletResponse response, WebResource resource) Check if the conditions specified in the optional If headers are satisfied.protected String
Determines the methods normally allowed for the resource.protected void
doCopy
(HttpServletRequest req, HttpServletResponse resp) COPY Method.protected void
doDelete
(HttpServletRequest req, HttpServletResponse resp) DELETE Method.protected void
doLock
(HttpServletRequest req, HttpServletResponse resp) LOCK Method.protected void
doMkcol
(HttpServletRequest req, HttpServletResponse resp) MKCOL Method.protected void
doMove
(HttpServletRequest req, HttpServletResponse resp) MOVE Method.protected void
doOptions
(HttpServletRequest req, HttpServletResponse resp) OPTIONS Method.protected void
doPropfind
(HttpServletRequest req, HttpServletResponse resp) PROPFIND Method.protected void
doProppatch
(HttpServletRequest req, HttpServletResponse resp) PROPPATCH Method.protected void
doPut
(HttpServletRequest req, HttpServletResponse resp) Process a PUT request for the specified resource.protected void
doUnlock
(HttpServletRequest req, HttpServletResponse resp) UNLOCK Method.protected DocumentBuilder
Return JAXP document builder instance.protected String
getPathPrefix
(HttpServletRequest request) Determines the prefix for standard directory GET listings.protected String
getRelativePath
(HttpServletRequest request) Override the DefaultServlet implementation and only use the PathInfo.protected String
getRelativePath
(HttpServletRequest request, boolean allowEmptyPath) void
init()
Initialize this servlet.protected void
service
(HttpServletRequest req, HttpServletResponse resp) Handles the special WebDAV methods.Methods inherited from class org.apache.catalina.servlets.DefaultServlet
checkIfMatch, checkIfModifiedSince, checkIfNoneMatch, checkIfUnmodifiedSince, checkSendfile, copy, copy, copy, copy, copy, copy, copyRange, copyRange, copyRange, destroy, doGet, doHead, doPost, executePartialPut, findXsltSource, generateETag, getReadme, getReadme, parseContentRange, parseRange, render, render, render, renderHtml, renderHtml, renderHtml, renderSize, renderXml, renderXml, renderXml, rewriteUrl, sendNotAllowed, serveResource
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
-
Field Details
-
DEFAULT_NAMESPACE
Default namespace.- See Also:
-
creationDateFormat
Simple date format for the creation date ISO representation (partial).
-
-
Constructor Details
-
WebdavServlet
public WebdavServlet()
-
-
Method Details
-
init
Initialize this servlet.- Overrides:
init
in classDefaultServlet
- Throws:
ServletException
- if an exception occurs that interrupts the servlet's normal operation
-
getDocumentBuilder
Return JAXP document builder instance.- Returns:
- the document builder
- Throws:
ServletException
- document builder creation failed (wrappedParserConfigurationException
exception)
-
service
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException Handles the special WebDAV methods.- Overrides:
service
in classDefaultServlet
- Parameters:
req
- theHttpServletRequest
object that contains the request the client made of the servletresp
- theHttpServletResponse
object that contains the response the servlet returns to the client- Throws:
ServletException
- if the HTTP request cannot be handledIOException
- if an input or output error occurs while the servlet is handling the HTTP request- See Also:
-
checkIfHeaders
protected boolean checkIfHeaders(HttpServletRequest request, HttpServletResponse response, WebResource resource) throws IOException Description copied from class:DefaultServlet
Check if the conditions specified in the optional If headers are satisfied.- Overrides:
checkIfHeaders
in classDefaultServlet
- Parameters:
request
- The servlet request we are processingresponse
- The servlet response we are creatingresource
- The resource- Returns:
true
if the resource meets all the specified conditions, andfalse
if any of the conditions is not satisfied, in which case request processing is stopped- Throws:
IOException
- an IO error occurred
-
getRelativePath
Override the DefaultServlet implementation and only use the PathInfo. If the ServletPath is non-null, it will be because the WebDAV servlet has been mapped to a url other than /* to configure editing at different url than normal viewing.- Overrides:
getRelativePath
in classDefaultServlet
- Parameters:
request
- The servlet request we are processing- Returns:
- the relative path
-
getRelativePath
- Overrides:
getRelativePath
in classDefaultServlet
-
getPathPrefix
Determines the prefix for standard directory GET listings.- Overrides:
getPathPrefix
in classDefaultServlet
- Parameters:
request
- the request to determine the path for- Returns:
- the prefix to apply to all resources in the listing.
-
doOptions
protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException OPTIONS Method.- Overrides:
doOptions
in classDefaultServlet
- Parameters:
req
- The Servlet requestresp
- The Servlet response- Throws:
ServletException
- If an error occursIOException
- If an IO error occurs
-
doPropfind
protected void doPropfind(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException PROPFIND Method.- Parameters:
req
- The Servlet requestresp
- The Servlet response- Throws:
ServletException
- If an error occursIOException
- If an IO error occurs
-
doProppatch
PROPPATCH Method.- Parameters:
req
- The Servlet requestresp
- The Servlet response- Throws:
IOException
- If an IO error occurs
-
doMkcol
protected void doMkcol(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException MKCOL Method.- Parameters:
req
- The Servlet requestresp
- The Servlet response- Throws:
ServletException
- If an error occursIOException
- If an IO error occurs
-
doDelete
protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException DELETE Method.- Overrides:
doDelete
in classDefaultServlet
- Parameters:
req
- The Servlet requestresp
- The Servlet response- Throws:
ServletException
- If an error occursIOException
- If an IO error occurs
-
doPut
protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException Process a PUT request for the specified resource.- Overrides:
doPut
in classDefaultServlet
- Parameters:
req
- The servlet request we are processingresp
- The servlet response we are creating- Throws:
IOException
- if an input/output error occursServletException
- if a servlet-specified error occurs
-
doCopy
COPY Method.- Parameters:
req
- The Servlet requestresp
- The Servlet response- Throws:
IOException
- If an IO error occurs
-
doMove
MOVE Method.- Parameters:
req
- The Servlet requestresp
- The Servlet response- Throws:
IOException
- If an IO error occurs
-
doLock
protected void doLock(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException LOCK Method.- Parameters:
req
- The Servlet requestresp
- The Servlet response- Throws:
ServletException
- If an error occursIOException
- If an IO error occurs
-
doUnlock
UNLOCK Method.- Parameters:
req
- The Servlet requestresp
- The Servlet response- Throws:
IOException
- If an IO error occurs
-
determineMethodsAllowed
Determines the methods normally allowed for the resource.- Overrides:
determineMethodsAllowed
in classDefaultServlet
- Parameters:
req
- The Servlet request- Returns:
- The allowed HTTP methods
-