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?
I think the first point is the answer, but you should probably be able to say more than just
In fact, as an interviewer, I would be expecting and hoping to here you explain exactly what the difference between the Servelt API and a web application framework, like Struts 2 is. This is actually a chance to show your understanding of the entire Java web app ecosystem and infrastructure.
Good answers might touch upon:
How the Struts 2 framework is implemented within a Servlet Filter.
What specific use cases would call for a servlet filter outside of
struts 2 but within the same web application?
What indeed is the Servlet API, a web application, a web application
framework, etc.?
Answering in way that showed your understanding of all of these topics is what there looking for, I would guess.