Home | Download | PDF | API | FAQ | Search | Feedback | History

> ## The Example JavaServer Faces Application

> The JavaServer Faces technology chapters of this tutorial primarily use a rewritten version of the Duke's Bookstore example to illustrate the basic concepts of JavaServer Faces technology. This version of the Duke's Bookstore example includes several JavaServer Faces technology features:

> - The JavaServer Faces implementation provides `FacesServlet`, whose instances accept incoming requests and pass them to the implementation for processing. Therefore, the application does not need to include a servlet (such as the `Dispatcher` servlet) that processes request parameters and dispatches to application logic, as do the other versions of Duke's Bookstore.
> - A custom image map component that allows you to select the locale for the application.
> - Navigation configured in a centralized application configuration resource file. This eliminates the need to calculate URLs, as other versions of the Duke's Bookstore application must do.
> - Backing beans associated with the pages. These beans hold the component data and perform other processing associated with the components. This processing includes handling the event generated when a user clicks a button or a hyperlink.
> - The table that displays the books from the database and the shopping cart are rendered with the `dataTable` tag, which is used to dynamically render data in a table. The `dataTable` tag on `bookshowcart.jsp` also includes input components.
> - The table that displays the books from the database uses a `c:forEach` JSTL tag, demonstrating that you can easily use JavaServer Faces component tags with JSTL tags.
> - A custom validator and a custom converter are registered on the credit card field of the `bookcashier.jsp` page.
> - A value-change listener is registered on the Name field of `bookcashier.jsp`. This listener saves the name in a parameter so that `bookreceipt.jsp` can access it.

> This version of Duke's Bookstore includes the same pages listed in Table 4-1. It also includes the `chooselocale.jsp` page, which displays the custom image map that allows you to select the locale of the application. This page is displayed first and advances directly to the `bookstore.jsp` page after the locale is selected.

> The packages of the Duke's Bookstore application are:

> - `backing`: Includes the backing bean classes
> - `components`: Includes the custom UI component classes
> - `converters`: Includes the custom converter class
> - `listeners`: Includes the event handler and event listener classes
> - `model`: Includes a model bean class
> - `renderers`: Includes the custom renderers
> - `resources`: Includes custom error messages for the custom converter and validator
> - `taglib`: Includes custom tag handler classes
> - `util`: Includes a message factory class
> - `validators`: Includes a custom validator class

> Chapter 11 describes how to program backing beans, custom converters and validators, and event listeners. Chapter 12 describes how to program event handlers, custom components, renderers, and tag handlers.

> The source code for the application is located in the `<``INSTALL``>/javaeetutorial5/examples/web/bookstore6/` directory. To build and package the example, follow these steps:

> 1. Go to `<INSTALL>``/javaee5utorial/examples/web/bookstore6/` and run `ant`.
> 2. Start the Application Server.
> 3. Perform all the operations described in Accessing Databases from Web Applications, page 54.

> To deploy the example run `ant deploy`.

> To learn how to configure the example, refer to the `web.xml` file, which includes the following configurations:

> - A `display-name` element that specifies the name that tools use to identify the application.
> - A `context-param` element that specifies that the `javax.faces.STATE_SAVING_METHOD` parameter has a value of `client`, meaning that state is saved on the client.
> - A `listener` element that identifies the `ContextListener` class used to create and remove the database access.
> - A `servlet` element that identifies the `FacesServlet` instance.
> - A `servlet-mapping` element that maps `FacesServlet` to a URL pattern.
> - Nested inside a `jsp-config` element is a `jsp-property-group` element, which sets the properties for the group of pages included in this version of Duke's Bookstore. See Setting Properties for Groups of JSP Pages (page 144) for more information.

> To run the example, open the URL `http://localhost:8080/bookstore6` in a browser.