Both approaches are often considered inadequate for large projects because they mix application logic with presentation and make maintenance difficult.
Struts provides the controller (a servlet known as ActionServlet) and facilitates the writing of templates for the view or presentation layer (typically in JSP, but XML/XSLT and Velocity are also supported).
The model code returns an "ActionForward", a string telling the controller what output page to send to the client.
A powerful custom tag library allows it from the presentation layer to read and write the content of these beans without the need for any embedded Java code.
[2] Struts also supports internationalization by web forms, and includes a template mechanism called "Tiles" that (for instance) allows the presentation layer to be composed from independent header, footer, menu navigation and content components.