I'm researching this so that I can respond better in interviews. I've been searching around for a clear and concise answer.
So far, and by all means correct me if I am wrong or lacking in detail:
- Filters are part of the Servlet API, Interceptors are Struts 2. (Seems obvious though)
- The Interceptor stack fires on requests in a configured package while filters only apply to their mapped URLs.
- Interceptors can be configured to execute or not depending on specific target action methods via excludeMethods and includeMethods while Filters lack this feature.
- Filters are an implementation of the Intercepting Filter pattern while Interceptors are of the Interceptor pattern.
Does this seem like an accurate and complete answer? Should I add or correct anything? What about threading issues / differences?