Enhydra 5.1 API

com.lutris.appserver.server.httpPresentation.servlet
Class AbstractFilterableServlet

java.lang.Object
  |
  +--javax.servlet.GenericServlet
        |
        +--javax.servlet.http.HttpServlet
              |
              +--com.lutris.appserver.server.httpPresentation.servlet.AbstractFilterableServlet
All Implemented Interfaces:
FilterableServlet, java.io.Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig

public abstract class AbstractFilterableServlet
extends javax.servlet.http.HttpServlet
implements FilterableServlet

This class demonstrates the responsibilities of a FilterableServlet. Because most servlets will need to extend the base class HttpServlet, they will not be able to extend this class. Therefore this class is not expected to be used, it is merely an instructional reference. That is why it does not implement the full Servlet interface, just the extensions in FilterableServlet service() method.

See Also:
FilterableServlet, Serialized Form

Constructor Summary
AbstractFilterableServlet()
           
 
Method Summary
 void addFilter(Filter filter)
          Add a filter to the end of the list of filters.
 void removeFilter(Filter filter)
          Remove a filter from the list of current filters.
 void service(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Handle a service request.
abstract  void serviceDirect(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Once the filters are done, you don't want to call service(), or it would result in an infinite loop of filter processing.
 
Methods inherited from class javax.servlet.http.HttpServlet
doDelete, doGet, doOptions, doPost, doPut, doTrace, getLastModified, 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
 

Constructor Detail

AbstractFilterableServlet

public AbstractFilterableServlet()
Method Detail

addFilter

public void addFilter(Filter filter)
Add a filter to the end of the list of filters.

Specified by:
addFilter in interface FilterableServlet
Parameters:
filter - The filter to add.

removeFilter

public void removeFilter(Filter filter)
Remove a filter from the list of current filters. Silently fails if the filter is not in the list.

Specified by:
removeFilter in interface FilterableServlet
Parameters:
filter - The filter to remove.

service

public void service(javax.servlet.http.HttpServletRequest request,
                    javax.servlet.http.HttpServletResponse response)
             throws javax.servlet.ServletException,
                    java.io.IOException
Handle a service request. Use the first filter to wrap the request, response, and servlet (this) objects. This will return new objects. Then use the second filter to wrap those, again returning new objects. Then use the fourth filter to wrap those etc.... Then finally call service() on the outermost results.

Overrides:
service in class javax.servlet.http.HttpServlet
Parameters:
request - The original servlet request object.
response - The original servlet response object.
javax.servlet.ServletException
java.io.IOException

serviceDirect

public abstract void serviceDirect(javax.servlet.http.HttpServletRequest request,
                                   javax.servlet.http.HttpServletResponse response)
                            throws javax.servlet.ServletException,
                                   java.io.IOException
Once the filters are done, you don't want to call service(), or it would result in an infinite loop of filter processing. So you call this instead. It does the real work that service() would normally do, without applying the filters.

This is left an abstract method because this is where you would do your real work if you subclassed this. However this class is most likely never going to be extended; it is meant to be used as a code reference to see how filters work.

Specified by:
serviceDirect in interface FilterableServlet
Parameters:
request - The request object.
response - The response object.
javax.servlet.ServletException
java.io.IOException

Enhydra 5.1 API