The terms Model 1 and Model 2 originated in the JSP 0.92 specification. The primary characteristics of Model 1 are
HTTP requests are posted directly to .jsp files.
The logic for directing program flow, for accessing databases and remote systems, and for building user displays are all embedded directly in JSP files.
The primary characteristics of Model 2 are
HTTP requests are posted to Java servlets.
The logic for directing program flow (Controllers) and for accessing databases and remote systems (Models) are implemented in Java servlets and classes. All user displays (Views) are built using JSP files.
Struts implements the MVC design pattern and is based on Model 2. Struts implements MVC using
Model components that provide a programming model of back-end databases and remote systems and services
View components that use JSP and Struts custom tags to build pages for user presentation
Controller components that implement the business logic that defines the program flow
Struts is a "Web Application Framework" that helps you go further faster when developing applications for which the client is a browser. It enables you to build better applications by letting you take advantage of best practices put together by some of the best programmers in the world.
A framework is a collection of software and methods used to speed application development. Web application structure and format are formally governed by the Java Servlet and J2EE specifications.
The Struts framework is based on a Model-View-Controller architecture. The Model provides an internal representation of the data. The View displays data without incorporating significant business logic. The Controller determines what processing to perform and what steps to take next.
The Struts tag libraries are used to build Struts Views. The libraries' JSP custom tags provide a high level of functionality while making the Views more readable and easier to maintain.