Apache Tomcat 6.0.41

org.apache.catalina.servlets
Class WebdavServlet

java.lang.Object
  extended by javax.servlet.GenericServlet
      extended by javax.servlet.http.HttpServlet
          extended by org.apache.catalina.servlets.DefaultServlet
              extended by org.apache.catalina.servlets.WebdavServlet
All Implemented Interfaces:
java.io.Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig

public class WebdavServlet
extends DefaultServlet

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. This 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:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.catalina.servlets.DefaultServlet
DefaultServlet.Range
 
Field Summary
protected static java.text.SimpleDateFormat creationDateFormat
          Simple date format for the creation date ISO representation (partial).
protected static java.lang.String DEFAULT_NAMESPACE
          Default namespace.
protected static MD5Encoder md5Encoder
          The MD5 helper object for this class.
protected static java.security.MessageDigest md5Helper
          MD5 message digest provider.
 
Fields inherited from class org.apache.catalina.servlets.DefaultServlet
BUFFER_SIZE, contextXsltFile, debug, fileEncoding, FULL, globalXsltFile, input, listings, localXsltFile, mimeSeparation, output, readmeFile, readOnly, resources, RESOURCES_JNDI_NAME, sendfileSize, sm, urlEncoder, useAcceptRanges
 
Constructor Summary
WebdavServlet()
           
 
Method Summary
protected  boolean checkIfHeaders(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, ResourceAttributes resourceAttributes)
          Check if the conditions specified in the optional If headers are satisfied.
protected  void doCopy(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)
          COPY Method.
protected  void doDelete(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)
          DELETE Method.
protected  void doLock(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)
          LOCK Method.
protected  void doMkcol(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)
          MKCOL Method.
protected  void doMove(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)
          MOVE Method.
protected  void doOptions(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)
          OPTIONS Method.
protected  void doPropfind(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)
          PROPFIND Method.
protected  void doProppatch(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)
          PROPPATCH Method.
protected  void doPut(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)
          Process a POST request for the specified resource.
protected  void doUnlock(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)
          UNLOCK Method.
protected  javax.xml.parsers.DocumentBuilder getDocumentBuilder()
          Return JAXP document builder instance.
protected  java.lang.String getPathPrefix(javax.servlet.http.HttpServletRequest request)
          Determines the prefix for standard directory GET listings.
protected  java.lang.String getRelativePath(javax.servlet.http.HttpServletRequest request)
          Override the DefaultServlet implementation and only use the PathInfo.
 void init()
          Initialize this servlet.
protected  void service(javax.servlet.http.HttpServletRequest req, javax.servlet.http.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, copyRange, destroy, displaySize, doGet, doHead, doPost, executePartialPut, findXsltInputStream, getReadme, parseContentRange, parseRange, render, renderHtml, renderSize, renderXml, rewriteUrl, 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
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_NAMESPACE

protected static final java.lang.String DEFAULT_NAMESPACE
Default namespace.

See Also:
Constant Field Values

creationDateFormat

protected static final java.text.SimpleDateFormat creationDateFormat
Simple date format for the creation date ISO representation (partial).


md5Helper

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


md5Encoder

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

Constructor Detail

WebdavServlet

public WebdavServlet()
Method Detail

init

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

Overrides:
init in class DefaultServlet
Throws:
javax.servlet.ServletException - if an exception occurs that interrupts the servlet's normal operation

getDocumentBuilder

protected javax.xml.parsers.DocumentBuilder getDocumentBuilder()
                                                        throws javax.servlet.ServletException
Return JAXP document builder instance.

Throws:
javax.servlet.ServletException

service

protected void service(javax.servlet.http.HttpServletRequest req,
                       javax.servlet.http.HttpServletResponse resp)
                throws javax.servlet.ServletException,
                       java.io.IOException
Handles the special WebDAV methods.

Overrides:
service in class javax.servlet.http.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:
javax.servlet.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)

checkIfHeaders

protected boolean checkIfHeaders(javax.servlet.http.HttpServletRequest request,
                                 javax.servlet.http.HttpServletResponse response,
                                 ResourceAttributes resourceAttributes)
                          throws java.io.IOException
Check if the conditions specified in the optional If headers are satisfied.

Overrides:
checkIfHeaders in class DefaultServlet
Parameters:
request - The servlet request we are processing
response - The servlet response we are creating
resourceAttributes - The resource information
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

getRelativePath

protected java.lang.String getRelativePath(javax.servlet.http.HttpServletRequest request)
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 class DefaultServlet
Parameters:
request - The servlet request we are processing

getPathPrefix

protected java.lang.String getPathPrefix(javax.servlet.http.HttpServletRequest request)
Determines the prefix for standard directory GET listings.

Overrides:
getPathPrefix in class DefaultServlet
Parameters:
request - the request to determine the path for
Returns:
the prefix to apply to all resources in the listing.

doOptions

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

Overrides:
doOptions in class DefaultServlet
Parameters:
req - The request
resp - The response
Throws:
javax.servlet.ServletException - If an error occurs
java.io.IOException - If an IO error occurs

doPropfind

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

Throws:
javax.servlet.ServletException
java.io.IOException

doProppatch

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

Throws:
javax.servlet.ServletException
java.io.IOException

doMkcol

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

Throws:
javax.servlet.ServletException
java.io.IOException

doDelete

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

Overrides:
doDelete in class DefaultServlet
Parameters:
req - The servlet request we are processing
resp - The servlet response we are creating
Throws:
javax.servlet.ServletException - if a servlet-specified error occurs
java.io.IOException - if an input/output error occurs

doPut

protected void doPut(javax.servlet.http.HttpServletRequest req,
                     javax.servlet.http.HttpServletResponse resp)
              throws javax.servlet.ServletException,
                     java.io.IOException
Process a POST request for the specified resource.

Overrides:
doPut in class DefaultServlet
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

doCopy

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

Throws:
javax.servlet.ServletException
java.io.IOException

doMove

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

Throws:
javax.servlet.ServletException
java.io.IOException

doLock

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

Throws:
javax.servlet.ServletException
java.io.IOException

doUnlock

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

Throws:
javax.servlet.ServletException
java.io.IOException

Apache Tomcat 6.0.41

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