1. Struts Architecture and Overview
* Objectives * Review: MVC Model * Review: Request, Session and Application * What is Struts? * Struts Flow * Components in Struts * The Model * The View * The Controller * Struts Flow * struts-config.xml * struts-config.xml Content * The <data-sources> element in the struts-config.xml * The <form-beans> element in the struts-config.xml * The <global-forwards> element in the struts-config.xml * The <action-mappings> element in the struts-config.xml * Sample struts-config.xml * The Role of web.xml for the Application * Configuring Struts in the web.xml * web.xml Content * Steps to Configuring Struts in the web.xml * Step 1. Configuring the Action Servlet Instance in the web.xml * Action Servlet Config Example * Step 2. Configuring the Action Servlet Mapping in web.xml * Prefix Mapping Example * Extension Mapping Example * Step 3. Configuring the Struts Tag Libraries in the web.xml * Sample web.xml * Summary
2. The First Struts Application
* Objectives * The application * The Structure * Setup Needed * Directory Structure * index.jsp * index.jsp - continued * The index.jsp Page * struts-config.xml * MultiplyForm.java * MultiplyForm.java - continued * MultiplyAction.java * MultiplyAction.java - continued * result.jsp * The result page * ApplicationResources.properties * Summary
3. Development of Struts Applications Using RAD V6
* Objectives * Directory Structure of a Struts Application * Directory Structure of a Struts Application – an Example * RAD Struts Support * Create a Struts Web Application Project * View the Struts Project Structure * Create a Struts JSP * Insert Struts Tags * Creating a Struts Form Bean * Creating a Struts Form Bean – Cont’d * Create a Struts Action * Create a Struts Action – Cont’d * Edit a Struts Configuration File * Summary
4. Struts Development Cycle
* Objectives * Struts Development Cycle * Gathering Requirements * Defining Screen Requirements * Detailed screen design * Determining the Screen Flow * Defining the ActionMappings in the struts-config.xml * Struts view components – Data vs. ActionForm Bean * Defining Screen Requirements – define FormBean * Developing the FormBean * Developing the FormBean – The reset( ) Method * Developing the FormBean – The validate( ) Method * Developing the FormBean – ActionErrors * Developing the FormBean – Defining the Message Key * Developing the Action Class – action and Action Class * Developing the Action Class * Developing Actions – The execute() Method * Developing Actions – ActionForward * Developing Actions – ActionMapping class * Developing Actions – execute() example * execute() Method Example: * Developing Business Logic – EJBs * Developing JSPs * Configuringstruts-config.xml and web.xml * Build, Pack, and Deploy * Summary
5. Struts Tag Libraries
* Objectives * Struts Tag Libraries * Commonality among the Struts Tags * Bean Tags * Bean Tags… * bean:define> * <bean:define>... * <bean:message> * <bean:page> * <bean:include> * <bean:cookie> * <bean:resource> * <bean:write> * <bean:header> * <bean:parameter> * HTML Tags * <html:form> * <html:submit> * <html:text> * <html:password> * <html:link> * <html:errors> * <html:messages> * <html:messages> * <html:multibox> * <html:multibox> * <html:select> * <htm:options> * Logic Tags * Logic Tags functionality * <logic:equal> * <logic:greaterEqual> and <logic:lessEqual> * <logic:lessThan> and <logic:notEqual> * <logic:notEmpty> * <logic:iterate> * Summary
6. Struts Extensions, Internationalization and Error Handling
* Objectives * Struts Extensions * Extension Points * Plug-ins * A plug-in example * Custom Configuration Class * Writing a Configuration Class * Custom ActionServlet * Custom RequestProcessor * Base Action Class * Base Form Bean * Custom JSP Tags * Internationalization (I18N) * I18N - continued * Error Handling * The ActionError class * The ActionErrors class * Error Handling : validate() method of ActionForm * Displaying the errors found in the validate method * Error Handling : execute() method of Action * Error Handling : execute() method of Action - contd * Declarative Exception Handling * Syntax of declarative exception handling * Programmatic Exception Handling * Logging from Struts * Logging (cont.) * Using Commons Logging and Log4J in Struts * Writing Commons Logging Code
7. Miscellaneous Advanced Features
* Advanced Features Discussed in This Chapter * Integration of Jakarta Common Libraries - BeanUtils * Integration of Jakarta Common Libraries - Digester * Multiple Sub-application Support * DynaActionForms * Validators * Adding the Validator framework to a Struts application * A tale of three files * A sample rule in the file validator-rules.xml * A rule in validator-rules.xml (continued) * validation.xml file * Validator Dependency * Rule Variables * Error Message * Error Message (cont.) * Basic Validation Rules * Client Side Validation * Validating multiplication example using DynaActionForm * Writing Custom Validators * Validator Class Example * HTTP Redirection * Working With Check Boxes * Context Sensitive Form Validation
8. Database Programming
* Basic Concepts * MVC Interaction * Database Connection * Transaction Management * Data Source * Defining a Struts Data Source * Opening a Connection from a Struts Data Source * Creating an Editor Form * Example Form Display Action
9. Templates and Tiles
* Objectives * Struts Templates * Defining the Template * A template * Using the template in a JSP * <template:insert> * <template:put> * A JSP that uses the template * Struts Templates * Templates as UI components * Struts 1.1 Tiles Support * Tiles * Tiles example * A JSP that uses the layout * Tiles go beyond templates * Inheritance in tiles definitions * Definitions as Struts “forwards” * Definitions as Struts “forwards”… * Template or Tiles?
10. Unit Testing Struts Applications
* Objectives * What is JUnit? * Why JUnit? * A JUnit Test * Running the tests * JUnit Basics * Unit Testing Struts Applications * A simple Struts test case * MockStrutsTestCase Methods * MockStrutsTestCase methods… * Downloading STC * Testing Strategies
11. JSP Expression Language and Standard Tag Library
* JSP Expression Language (EL) * Basic Usage * Built-in Objects * Working With Arrays and Maps * Operators * Full Example * JSP Standard Tag Library (JSTL) * Run Time Version * Basic Tags * Condition Tags * Interator Tags * Internationalization (I18N) * Setting Preferred Locale * Specifying Resource Bundle * Display Translated Text * Display Number * Display Date * JDBC Tags * Specify Data Source * Performing a Query * Display Result * Pagination Example
Appendix A. Custom Tag Libraries
* Introduction * Tag Attributes * Tag Body * Tag Library Descriptor * Tag Library Descriptor Details * carPrice.tld * The Java Server Page * Writing a Simple Tag Handler Class * Tag Handler Life Cycle * Rendering Content * Implementing Empty Body Tag * Example: CarPriceHandler * CarPriceHandler… * carPrice.jsp * Implementing a Tag With Unprocessed Body * Handling Tag Bodies * Implementing Body Processing * Example: Body Tag Support * Implementing an Iteration Tag * Nested Tags * Summary |