jodd.servlet
Class ActionServlet

java.lang.Object
  extended byjavax.servlet.GenericServlet
      extended byjavax.servlet.http.HttpServlet
          extended byjodd.servlet.ActionServlet
All Implemented Interfaces:
java.io.Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig
Direct Known Subclasses:
ActionController

public abstract class ActionServlet
extends javax.servlet.http.HttpServlet

Replacement and enhancement of HttpServlet, containing additional functionalities. Must be inherited by user.

ActionServlet may be used in two ways: 1) as standard http serlvet, or 2) as an action servlet in mvc2 framework.

1) ActionServlet as http servlet

Here both POST and GET requests calls doRequest method, which is the entering point of the servlet. For more easier work, this servlet may use one of the helper methods. Helper methods can be grouped in 3 groups:
  • redirectors - perform redirect to specific url. They also can read redirect destination from the request parameter 'redirect'. Default forwarders and redirector names given as request parameter are either 'forward' or 'redirect' respectively. If more than one parameter is needed, they have to be named as 'forward-...' or 'redirect-...'.

    2) ActionServlet as framework action

    using default handler

    In this use case, on the client request container will invoke the controller (ActionController). Controller is configured from a XML file. Here, controller always invokes doAction() method (instead of doRequest). This method must return one of the forwards parameters specified in the XML configuration file, type of String. Afterm Controller will pass the control to adequate URI, as specified in the configuration file.

    It is obvious that forwarders and redirectors should not be used now. On the other hand, invokers can be freely used. Moreover, they are just a bit more suited for this kind of usage, since whatever is returned from the invoker is converted to String so it may be passed back to the controller.

    using mapped methods

    An action can be directly mapped to an method inside ActionServlet class. Method should return an string that represent forwarding. All this is set in the configuration file. In this use case, there is no more need to use invokers, since invoking is done automatically by the Controller.

    So, in this case there is no need to overload and use any of the ActionServlet methods.

    using action parameters

    Action can use specific parameters as defined in configuration xml file. This may be handy, for example, when one ActionServlet is mapped to many requests and when it should act a bit differently for some groups of request. Anyhow, parameters may be used in different ways. Moreover, each action can retrieve action path or some of ActionData values of the current request.

    See Also:
    Serialized Form

    Field Summary
    static java.lang.String parameterActionName
               
    static java.lang.String parameterForwardName
               
    static java.lang.String parameterRedirectName
               
     
    Constructor Summary
    ActionServlet()
               
     
    Method Summary
     java.lang.String doAction(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
              When ActionController and MVC2 is used, doRequest() can not be used as servlet entry point.
    protected  void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
              Default doGet method, calls doRequest().
    protected  void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
              Default doGet method, calls doRequest().
     void doRequest(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
              Main Get/Post handler.
    protected  boolean forward(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.String url)
              Performs forward with use of the RequestDispatcher.
    protected  boolean forwardParam(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
              Performs forward with use of the RequestDispatcher.
    protected  boolean forwardParam(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.String s)
              Performs forward where URL is read from the request.
     java.lang.String getActionForwardPath(javax.servlet.http.HttpServletRequest request, java.lang.String name)
              Returns path of mapped action forward.
     java.lang.String getActionMethodName(javax.servlet.http.HttpServletRequest request)
              Returns mapped action method name.
     java.lang.String getActionParameter(javax.servlet.http.HttpServletRequest request, java.lang.String name)
              Returns action parameter value.
     java.lang.String getActionPath(javax.servlet.http.HttpServletRequest request)
              Returns action path of a current request.
     java.lang.String getActionType(javax.servlet.http.HttpServletRequest request)
              Returns mapped action type.
     ActionController getController()
              Returns action controller that created this ActionServlet object.
     java.lang.String invokeAction(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
              Calls a method defined in the request paramenter.
     java.lang.String invokeAction(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.String actionName)
              Invoke a method from this ActionServlet class.
     java.lang.String invokeExternalAction(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.String actionPath)
              Invokes external action that is defined in other ActionServlet class and not necessary in current one.
     boolean isActionForwardRedirect(javax.servlet.http.HttpServletRequest request, java.lang.String name)
              Returns true if specified forward is actually a redirect.
    protected  void redirect(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.String url)
              Performs redirection.
    protected  boolean redirectParam(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
              Performs redirection.
    protected  boolean redirectParam(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.String s)
              Performs redirection where URL is read from the request.
     
    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, init, log, log
     
    Methods inherited from class java.lang.Object
    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
     

    Field Detail

    parameterActionName

    public static java.lang.String parameterActionName

    parameterForwardName

    public static java.lang.String parameterForwardName

    parameterRedirectName

    public static java.lang.String parameterRedirectName
    Constructor Detail

    ActionServlet

    public ActionServlet()
    Method Detail

    getController

    public ActionController getController()
    Returns action controller that created this ActionServlet object. It should be used for system usage.

    Returns:
    action controller instance

    doGet

    protected final void doGet(javax.servlet.http.HttpServletRequest request,
                               javax.servlet.http.HttpServletResponse response)
                        throws java.io.IOException,
                               javax.servlet.ServletException
    Default doGet method, calls doRequest(). Should not be overloaded.

    Parameters:
    request -
    response -
    Throws:
    java.io.IOException
    javax.servlet.ServletException
    See Also:
    doRequest(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)

    doPost

    protected final void doPost(javax.servlet.http.HttpServletRequest request,
                                javax.servlet.http.HttpServletResponse response)
                         throws java.io.IOException,
                                javax.servlet.ServletException
    Default doGet method, calls doRequest(). Should not be overloaded.

    Parameters:
    request -
    response -
    Throws:
    java.io.IOException
    javax.servlet.ServletException
    See Also:
    doRequest(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)

    doRequest

    public void doRequest(javax.servlet.http.HttpServletRequest request,
                          javax.servlet.http.HttpServletResponse response)
                   throws java.io.IOException,
                          javax.servlet.ServletException
    Main Get/Post handler.

    Parameters:
    request -
    response -
    Throws:
    java.io.IOException
    javax.servlet.ServletException
    See Also:
    doAction(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)

    doAction

    public java.lang.String doAction(javax.servlet.http.HttpServletRequest request,
                                     javax.servlet.http.HttpServletResponse response)
                              throws java.io.IOException,
                                     javax.servlet.ServletException
    When ActionController and MVC2 is used, doRequest() can not be used as servlet entry point. Instead, controller will invoke this method. The only difference from the doRequest() is that this method must return a String that represents a 'mapping' where to forward/redirect, i.e. forwarding and redirections are done by controler, not by servlet. These mappings are defined in 'actions.xml' external file.

    Parameters:
    request -
    response -
    Returns:
    mapping string
    Throws:
    java.io.IOException
    javax.servlet.ServletException
    See Also:
    doRequest(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)

    invokeAction

    public java.lang.String invokeAction(javax.servlet.http.HttpServletRequest request,
                                         javax.servlet.http.HttpServletResponse response)
                                  throws java.io.IOException,
                                         javax.servlet.ServletException
    Calls a method defined in the request paramenter. Method name is read from the request. If method name is null (doesn't exist in the request) nothing happens.

    Parameters:
    request -
    response -
    Returns:
    true if action was invoked, otherwise false
    Throws:
    java.io.IOException
    javax.servlet.ServletException

    invokeAction

    public java.lang.String invokeAction(javax.servlet.http.HttpServletRequest request,
                                         javax.servlet.http.HttpServletResponse response,
                                         java.lang.String actionName)
                                  throws java.io.IOException,
                                         javax.servlet.ServletException
    Invoke a method from this ActionServlet class. Methods name is given as parameter. If method name is null nothing happens.

    Parameters:
    request -
    response -
    actionName - name of the method to invoke
    Returns:
    null if error, otherwise string mapping
    Throws:
    java.io.IOException
    javax.servlet.ServletException

    invokeExternalAction

    public java.lang.String invokeExternalAction(javax.servlet.http.HttpServletRequest request,
                                                 javax.servlet.http.HttpServletResponse response,
                                                 java.lang.String actionPath)
                                          throws java.io.IOException,
                                                 javax.servlet.ServletException
    Invokes external action that is defined in other ActionServlet class and not necessary in current one. It simply delegates call to ActionController.invokeAction().

    Parameters:
    request - http request
    response - http response
    actionPath - action path as defined in configuration xml file
    Returns:
    external action forward string, or ACTION_NOT_FOUND if not founded
    Throws:
    java.io.IOException
    javax.servlet.ServletException
    See Also:
    ActionController.invokeAction(HttpServletRequest, HttpServletResponse, String)

    forward

    protected boolean forward(javax.servlet.http.HttpServletRequest request,
                              javax.servlet.http.HttpServletResponse response,
                              java.lang.String url)
                       throws java.io.IOException,
                              javax.servlet.ServletException
    Performs forward with use of the RequestDispatcher.

    Parameters:
    request -
    response -
    url - URL where to forward
    Throws:
    java.io.IOException
    javax.servlet.ServletException

    forwardParam

    protected boolean forwardParam(javax.servlet.http.HttpServletRequest request,
                                   javax.servlet.http.HttpServletResponse response)
                            throws java.io.IOException,
                                   javax.servlet.ServletException
    Performs forward with use of the RequestDispatcher. URL is read from the request. If URL doesn't exist, nothing happens.

    Parameters:
    request -
    response -
    Returns:
    true if parameter found, false otherwise
    Throws:
    java.io.IOException
    javax.servlet.ServletException

    forwardParam

    protected boolean forwardParam(javax.servlet.http.HttpServletRequest request,
                                   javax.servlet.http.HttpServletResponse response,
                                   java.lang.String s)
                            throws java.io.IOException,
                                   javax.servlet.ServletException
    Performs forward where URL is read from the request. If URL doesn't exist, nothing happens.

    Parameters:
    request - http request
    response - http response
    s - forward parameters suffix, added to the default parameter name
    Returns:
    true if parameter found and forward was sucessful, false otherwise
    Throws:
    java.io.IOException
    javax.servlet.ServletException
    See Also:
    forward(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.String)

    redirect

    protected void redirect(javax.servlet.http.HttpServletRequest request,
                            javax.servlet.http.HttpServletResponse response,
                            java.lang.String url)
                     throws java.io.IOException
    Performs redirection.

    Parameters:
    request -
    response -
    url - URL where to redirect
    Throws:
    java.io.IOException
    javax.servlet.ServletException

    redirectParam

    protected boolean redirectParam(javax.servlet.http.HttpServletRequest request,
                                    javax.servlet.http.HttpServletResponse response)
                             throws java.io.IOException
    Performs redirection. URL is read from the request. If URL doesn't exist, nothing happens.

    Parameters:
    request -
    response -
    Returns:
    true if parameter found, false otherwise
    Throws:
    java.io.IOException
    javax.servlet.ServletException

    redirectParam

    protected boolean redirectParam(javax.servlet.http.HttpServletRequest request,
                                    javax.servlet.http.HttpServletResponse response,
                                    java.lang.String s)
                             throws java.io.IOException
    Performs redirection where URL is read from the request. If URL doesn't exist, nothing happens.

    Parameters:
    request -
    response -
    s - redirect parameters suffix, added to the default parameter name
    Returns:
    true if parameter found, false otherwise
    Throws:
    java.io.IOException
    javax.servlet.ServletException
    See Also:
    redirect(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.String)

    getActionParameter

    public java.lang.String getActionParameter(javax.servlet.http.HttpServletRequest request,
                                               java.lang.String name)
    Returns action parameter value.

    Parameters:
    request - request
    name - parameter name
    Returns:
    action parameter value of null if parameter has not been defined.
    See Also:
    ActionData

    getActionForwardPath

    public java.lang.String getActionForwardPath(javax.servlet.http.HttpServletRequest request,
                                                 java.lang.String name)
    Returns path of mapped action forward.

    Parameters:
    request - request
    name - forward name
    Returns:
    forward path
    See Also:
    ActionData

    getActionMethodName

    public java.lang.String getActionMethodName(javax.servlet.http.HttpServletRequest request)
    Returns mapped action method name.

    Parameters:
    request - request
    Returns:
    mapped action mathod name
    See Also:
    ActionData

    getActionType

    public java.lang.String getActionType(javax.servlet.http.HttpServletRequest request)
    Returns mapped action type.

    Parameters:
    request - request
    Returns:
    mapped action type
    See Also:
    ActionData

    isActionForwardRedirect

    public boolean isActionForwardRedirect(javax.servlet.http.HttpServletRequest request,
                                           java.lang.String name)
    Returns true if specified forward is actually a redirect.

    Parameters:
    request - request
    name - forward name
    Returns:
    true if specified forward is actually a redirect, false otherwise
    See Also:
    ActionData

    getActionPath

    public java.lang.String getActionPath(javax.servlet.http.HttpServletRequest request)
    Returns action path of a current request.

    Parameters:
    request - request
    Returns:
    action path
    See Also:
    ActionData


    Jodd v0.24.5 Javadoc