The Struts Framework is a standard for developing well-architected Web applications. It has the following features:
Based on the Model-View-Controller (MVC) design paradigm, distinctly separating all three levels:
Model Tier :
- Struts includes only minimal infrastructure for the model tier
- A basic implementation of javax.sql.DataSource is included
- But you can integrate any desired approach
View Tier :
Form Beans:
- Represent the server side state of the input fields on an HTML form
- Contains hooks for resetting fields to default values (needed for checkboxes) and input field validation
- DynaActionForm means you do not have to create new JavaBeans yourself
Validation Framework:
- Abstract input validation rules into separate XML document
- Extensible for custom field checking
- Optionally generates client-side JavaScript
- Always checks on server side
- Integrated with standard ActionForm beans and DynaActionForm beans
(JSP) Custom Tag Libraries:
- Bean – General purpose bean and property manipulation
- Html – Dynamic HTML-based user interfaces (including input forms)
- Logic – Conditionals and iteration
- Nested – Versions of other tags that access nested JavaBean hierarchies easily
- Tiles – Layout management (next page)
(JSP) Tiles Framework:
- Supports templating for common look and feel of all pages in a web app
- Tile definitions created in JSP page or in external XML document
- Definitions can extend base definitions
- Advanced techniques for dynamically passing information to tiles
Controller Tier :
- Configuration Document Defines Behavior
- Action URLs mapped to Actions
- Data sources
- Exception handlers
- Form beans
- Forwarding URLs mapped to Pages
- Message Resources for i18n
- PlugIns for Lifecycle Management
- One or more documents allowed
Request Processing Lifecycle :
- Extract action mapping path
- Select locale (if necessary)
- Select action mapping to utilize
- Perform role-based access checks
- Server-side validation (if requested)
- Invoke application Action
- Forward based on application outcome
- Highly customizable and extendable
Sub-Application Modules :
- Logically divide single web application into multiple Struts “mini-applications”
- Session state shared across all modules
- Standard Action Implementations:
- Forward or include other URLs
Posted in: 