What\'s the difference, really, between filters and interceptors? I realize that interceptors fire before and after an action, recursively, and filters can be configured to fir
As a rule of thumb
request
. The struts
itself is a filter.interceptors
can run before, after struts actions. They will not run if the request does not end with .action
. So, some example of filters could be:
js
and css
files, you should go for filters not interceptors. chain.doFilter(request, response)
Theoretically you can develop an struts web application without developing your own interceptors
and using filters
only. But you will face lots problem and code boiler filters.
Lots of struts 2 features are build with interceptors, you can find it in struts-default.xml (https://struts.apache.org/docs/struts-defaultxml.html) the list will help to find when interceptors can be used. (For example ParametersInterceptor
runs before actions to apply submited form values to actions)
While working with interceptors you can easily access struts features, for example getText
from message resources, get current action name and name space, change the action flow.
Considering above here are some cases which can be developed by interceptors:
invocation.invoke()
The interceptors are providing the filter and Chain of Responsibility design pattern for struts actions, while filters provide this pattern to your whole web application.