Struts 2 uses the Model-View-Controller (MVC) pattern for building web applications. The key components are:
1. Controller: The FilterDispatcher acts as the controller and maps requests to actions.
2. Model: Actions serve as the model, encapsulating business logic and acting as a data transfer locus between the request and view.
3. View: Results represent the view and render the output.
Actions return a result string to select the appropriate result for rendering. Data is stored in the ValueStack, a central data repository accessible via OGNL expressions. Interceptors handle cross-cutting concerns like validation before and after actions execute.