Struts 2 uses interceptors based on the intercepting filter design pattern. It follows a pull-MVC architecture where the view layer retrieves data stored in the value stack by the controller. Interceptors are not thread-safe. Interceptors and filters both intercept requests, but interceptors are specific to Struts 2, can be configured to call methods conditionally, and replace the need for some filters. The front controller in Struts 2 is a filter rather than a servlet to avoid loading issues and allow interceptors to replace some filters. Actions serve as both models and controllers by containing business logic and data for the view. Interceptors make Struts 2 more configurable, reusable, and integrated with other frameworks compared