Class OpenCmsServlet

  • All Implemented Interfaces:
    java.io.Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig, I_CmsRequestHandler
    Direct Known Subclasses:
    OpenCmsServletErrorHandler

    public class OpenCmsServlet
    extends javax.servlet.http.HttpServlet
    implements I_CmsRequestHandler
    This the main servlet of the OpenCms system.

    From here, all operations that are results of HTTP requests are invoked. Any incoming request is handled in multiple steps:

    1. The requesting CmsUser is authenticated and a CmsObject with this users context information is created. This CmsObject is used to access all functions of OpenCms, limited by the authenticated users permissions. If the user is not identified, it is set to the default user, usually named "Guest".
    2. The requested CmsResource is loaded into OpenCms and depending on its type (and the users persmissions to display or modify it), it is send to one of the OpenCms I_CmsResourceLoader implementations do be processed.
    3. The I_CmsResourceLoader will then decide what to do with the contents of the requested CmsResource. In case of a JSP resource the JSP handling mechanism is invoked with the CmsJspLoader, in case of an image (or another static resource) this will be returned by the CmsDumpLoader etc.
    Since:
    6.0.0
    See Also:
    CmsShell, CmsObject, OpenCms, Serialized Form
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  OpenCmsServlet.RequestCache
      Context class for storing request-dependent caches etc.
      static class  OpenCmsServlet.RequestInfo
      Debugging information about currently running requests.
    • Constructor Summary

      Constructors 
      Constructor Description
      OpenCmsServlet()  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void doGet​(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)
      OpenCms servlet main request handling method.
      void doPost​(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)
      OpenCms servlet POST request handling method, will just call doGet(HttpServletRequest, HttpServletResponse).
      java.lang.String[] getHandlerNames()
      Returns the handler name.
      static OpenCmsServlet.RequestCache getRequestCache()
      Gets a thread-local, request-specific context object for requests made to the OpenCms servlet.
      void handle​(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res, java.lang.String name)
      Handles an OpenCms request.
      void init​(javax.servlet.ServletConfig config)  
      protected void invokeHandler​(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)
      Manages requests to internal OpenCms request handlers.
      protected void openErrorHandler​(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res, int errorCode)
      Displays an error code handler loaded from the OpenCms VFS, or if such a page does not exist, displays the default servlet container error code.
      static void withRequestCache​(java.util.function.Consumer<OpenCmsServlet.RequestCache> handler)
      Helper method used to conveniently access the request cache, does nothing if the request cache isn't set.
      • Methods inherited from class javax.servlet.http.HttpServlet

        doDelete, doHead, doOptions, doPut, doTrace, getLastModified, service, service
      • Methods inherited from class javax.servlet.GenericServlet

        destroy, 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
    • Method Detail

      • withRequestCache

        public static void withRequestCache​(java.util.function.Consumer<OpenCmsServlet.RequestCache> handler)
        Helper method used to conveniently access the request cache, does nothing if the request cache isn't set.
        Parameters:
        handler - the handler to pass the request cache to
      • doGet

        public void doGet​(javax.servlet.http.HttpServletRequest req,
                          javax.servlet.http.HttpServletResponse res)
                   throws java.io.IOException,
                          javax.servlet.ServletException
        OpenCms servlet main request handling method.

        Overrides:
        doGet in class javax.servlet.http.HttpServlet
        Throws:
        java.io.IOException
        javax.servlet.ServletException
        See Also:
        HttpServlet.doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
      • doPost

        public void doPost​(javax.servlet.http.HttpServletRequest req,
                           javax.servlet.http.HttpServletResponse res)
                    throws java.io.IOException,
                           javax.servlet.ServletException
        OpenCms servlet POST request handling method, will just call doGet(HttpServletRequest, HttpServletResponse).

        Overrides:
        doPost in class javax.servlet.http.HttpServlet
        Throws:
        java.io.IOException
        javax.servlet.ServletException
        See Also:
        HttpServlet.doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
      • handle

        public void handle​(javax.servlet.http.HttpServletRequest req,
                           javax.servlet.http.HttpServletResponse res,
                           java.lang.String name)
                    throws java.io.IOException,
                           javax.servlet.ServletException
        Description copied from interface: I_CmsRequestHandler
        Handles an OpenCms request.

        Specified by:
        handle in interface I_CmsRequestHandler
        Parameters:
        req - the current request
        res - the current response
        name - the handler name to invoke
        Throws:
        java.io.IOException - in case an error occurs
        javax.servlet.ServletException - in case an error occurs
        See Also:
        I_CmsRequestHandler.handle(HttpServletRequest, HttpServletResponse, String)
      • init

        public void init​(javax.servlet.ServletConfig config)
                  throws javax.servlet.ServletException
        Specified by:
        init in interface javax.servlet.Servlet
        Overrides:
        init in class javax.servlet.GenericServlet
        Throws:
        javax.servlet.ServletException
        See Also:
        Servlet.init(javax.servlet.ServletConfig)
      • invokeHandler

        protected void invokeHandler​(javax.servlet.http.HttpServletRequest req,
                                     javax.servlet.http.HttpServletResponse res)
                              throws java.io.IOException,
                                     javax.servlet.ServletException
        Manages requests to internal OpenCms request handlers.

        Parameters:
        req - the current request
        res - the current response
        Throws:
        javax.servlet.ServletException - in case an error occurs
        javax.servlet.ServletException - in case an error occurs
        java.io.IOException - in case an error occurs
      • openErrorHandler

        protected void openErrorHandler​(javax.servlet.http.HttpServletRequest req,
                                        javax.servlet.http.HttpServletResponse res,
                                        int errorCode)
                                 throws java.io.IOException,
                                        javax.servlet.ServletException
        Displays an error code handler loaded from the OpenCms VFS, or if such a page does not exist, displays the default servlet container error code.

        Parameters:
        req - the current request
        res - the current response
        errorCode - the error code to display
        Throws:
        java.io.IOException - if something goes wrong
        javax.servlet.ServletException - if something goes wrong