org.apache.struts2.dispatcher
Class FilterDispatcher

java.lang.Object
  extended by org.apache.struts2.dispatcher.FilterDispatcher
All Implemented Interfaces:
Filter, StrutsStatics
Direct Known Subclasses:
FilterDispatcherCompatWeblogic61

Deprecated. Since Struts 2.1.3, use StrutsPrepareAndExecuteFilter instead or StrutsPrepareFilter and StrutsExecuteFilter if needing using the ActionContextCleanUp filter in addition to this one

public class FilterDispatcher
extends Object
implements StrutsStatics, Filter

Master filter for Struts that handles four distinct responsibilities:

IMPORTANT: this filter must be mapped to all requests. Unless you know exactly what you are doing, always map to this URL pattern: /*

Executing actions

This filter executes actions by consulting the ActionMapper and determining if the requested URL should invoke an action. If the mapper indicates it should, the rest of the filter chain is stopped and the action is invoked. This is important, as it means that filters like the SiteMesh filter must be placed before this filter or they will not be able to decorate the output of actions.

Cleaning up the ActionContext

This filter will also automatically clean up the ActionContext for you, ensuring that no memory leaks take place. However, this can sometimes cause problems integrating with other products like SiteMesh. See ActionContextCleanUp for more information on how to deal with this.

Serving static content

This filter also serves common static content needed when using various parts of Struts, such as JavaScript files, CSS files, etc. It works by looking for requests to /struts/*, and then mapping the value after "/struts/" to common packages in Struts and, optionally, in your class path. By default, the following packages are automatically searched:

This means that you can simply request /struts/xhtml/styles.css and the XHTML UI theme's default stylesheet will be returned. Likewise, many of the AJAX UI components require various JavaScript files, which are found in the org.apache.struts2.static package. If you wish to add additional packages to be searched, you can add a comma separated (space, tab and new line will do as well) list in the filter init parameter named "packages". Be careful, however, to expose any packages that may have sensitive information, such as properties file with database access credentials.

This filter supports the following init-params:

To use a custom Dispatcher, the createDispatcher() method could be overriden by the subclass.

Version:
$Date: 2008-07-07 10:10:42 -0400 (Mon, 07 Jul 2008) $ $Id: FilterDispatcher.java 674498 2008-07-07 14:10:42Z mrdon $
See Also:
ActionMapper, ActionContextCleanUp, StrutsPrepareAndExecuteFilter, StrutsPrepareFilter, StrutsExecuteFilter

Field Summary
private  ActionMapper actionMapper
          Deprecated. Provide ActionMapper instance, set by injection.
protected  Dispatcher dispatcher
          Deprecated. Expose Dispatcher instance to subclass.
private  FilterConfig filterConfig
          Deprecated. Provide FilterConfig instance, set on init.
private  Logger log
          Deprecated. Provide a logging instance.
protected  StaticContentLoader staticResourceLoader
          Deprecated. Loads stattic resources, set by injection
 
Fields inherited from interface org.apache.struts2.StrutsStatics
HTTP_REQUEST, HTTP_RESPONSE, PAGE_CONTEXT, SERVLET_CONTEXT, SERVLET_DISPATCHER, STRUTS_PORTLET_CONTEXT
 
Constructor Summary
FilterDispatcher()
          Deprecated.  
 
Method Summary
protected  Dispatcher createDispatcher(FilterConfig filterConfig)
          Deprecated. Create a default Dispatcher that subclasses can override with a custom Dispatcher, if needed.
 void destroy()
          Deprecated. Calls dispatcher.cleanup, which in turn releases local threads and destroys any DispatchListeners.
 void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
          Deprecated. Process an action or handle a request a static resource.
protected  FilterConfig getFilterConfig()
          Deprecated. Expose the FilterConfig instance.
protected  ServletContext getServletContext()
          Deprecated. Provide a workaround for some versions of WebLogic.
 void init(FilterConfig filterConfig)
          Deprecated. Initializes the filter by creating a default dispatcher and setting the default packages for static resources.
private  void initLogging()
          Deprecated.  
protected  HttpServletRequest prepareDispatcherAndWrapRequest(HttpServletRequest request, HttpServletResponse response)
          Deprecated. Wrap and return the given request, if needed, so as to to transparently handle multipart data as a wrapped class around the given request.
 void setActionMapper(ActionMapper mapper)
          Deprecated. Modify ActionMapper instance.
 void setStaticResourceLoader(StaticContentLoader staticResourceLoader)
          Deprecated. Modify state of StrutsConstants.STRUTS_STATIC_CONTENT_LOADER setting.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

log

private Logger log
Deprecated. 
Provide a logging instance.


actionMapper

private ActionMapper actionMapper
Deprecated. 
Provide ActionMapper instance, set by injection.


filterConfig

private FilterConfig filterConfig
Deprecated. 
Provide FilterConfig instance, set on init.


dispatcher

protected Dispatcher dispatcher
Deprecated. 
Expose Dispatcher instance to subclass.


staticResourceLoader

protected StaticContentLoader staticResourceLoader
Deprecated. 
Loads stattic resources, set by injection

Constructor Detail

FilterDispatcher

public FilterDispatcher()
Deprecated. 
Method Detail

init

public void init(FilterConfig filterConfig)
          throws ServletException
Deprecated. 
Initializes the filter by creating a default dispatcher and setting the default packages for static resources.

Specified by:
init in interface Filter
Parameters:
filterConfig - The filter configuration
Throws:
ServletException

initLogging

private void initLogging()
Deprecated. 

destroy

public void destroy()
Deprecated. 
Calls dispatcher.cleanup, which in turn releases local threads and destroys any DispatchListeners.

Specified by:
destroy in interface Filter
See Also:
Filter.destroy()

createDispatcher

protected Dispatcher createDispatcher(FilterConfig filterConfig)
Deprecated. 
Create a default Dispatcher that subclasses can override with a custom Dispatcher, if needed.

Parameters:
filterConfig - Our FilterConfig
Returns:
Initialized Dispatcher

setStaticResourceLoader

public void setStaticResourceLoader(StaticContentLoader staticResourceLoader)
Deprecated. 
Modify state of StrutsConstants.STRUTS_STATIC_CONTENT_LOADER setting.

Parameters:
staticResourceLoader - val New setting

setActionMapper

public void setActionMapper(ActionMapper mapper)
Deprecated. 
Modify ActionMapper instance.

Parameters:
mapper - New instance

getServletContext

protected ServletContext getServletContext()
Deprecated. 
Provide a workaround for some versions of WebLogic.

Servlet 2.3 specifies that the servlet context can be retrieved from the session. Unfortunately, some versions of WebLogic can only retrieve the servlet context from the filter config. Hence, this method enables subclasses to retrieve the servlet context from other sources.

Returns:
the servlet context.

getFilterConfig

protected FilterConfig getFilterConfig()
Deprecated. 
Expose the FilterConfig instance.

Returns:
Our FilterConfit instance

prepareDispatcherAndWrapRequest

protected HttpServletRequest prepareDispatcherAndWrapRequest(HttpServletRequest request,
                                                             HttpServletResponse response)
                                                      throws ServletException
Deprecated. 
Wrap and return the given request, if needed, so as to to transparently handle multipart data as a wrapped class around the given request.

Parameters:
request - Our ServletRequest object
response - Our ServerResponse object
Returns:
Wrapped HttpServletRequest object
Throws:
ServletException - on any error

doFilter

public void doFilter(ServletRequest req,
                     ServletResponse res,
                     FilterChain chain)
              throws IOException,
                     ServletException
Deprecated. 
Process an action or handle a request a static resource.

The filter tries to match the request to an action mapping. If mapping is found, the action processes is delegated to the dispatcher's serviceAction method. If action processing fails, doFilter will try to create an error page via the dispatcher.

Otherwise, if the request is for a static resource, the resource is copied directly to the response, with the appropriate caching headers set.

If the request does not match an action mapping, or a static resource page, then it passes through.

Specified by:
doFilter in interface Filter
Throws:
IOException
ServletException
See Also:
Filter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)


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