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 theDispatcherservlet) 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
dataTabletag, which is used to dynamically render data in a table. ThedataTabletag onbookshowcart.jspalso includes input components.- The table that displays the books from the database uses a
c:forEachJSTL 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.jsppage.- A value-change listener is registered on the Name field of
bookcashier.jsp. This listener saves the name in a parameter so thatbookreceipt.jspcan access it.This version of Duke's Bookstore includes the same pages listed in Table 4-1. It also includes the
chooselocale.jsppage, 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 thebookstore.jsppage after the locale is selected.The packages of the Duke's Bookstore application are:
backing: Includes the backing bean classescomponents: Includes the custom UI component classesconverters: Includes the custom converter classlisteners: Includes the event handler and event listener classesmodel: Includes a model bean classrenderers: Includes the custom renderersresources: Includes custom error messages for the custom converter and validatortaglib: Includes custom tag handler classesutil: Includes a message factory classvalidators: Includes a custom validator classChapter 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:
- Go to
<INSTALL>/javaee5utorial/examples/web/bookstore6/and runant.- Start the Application Server.
- 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.xmlfile, which includes the following configurations:
- A
display-nameelement that specifies the name that tools use to identify the application.- A
context-paramelement that specifies that thejavax.faces.STATE_SAVING_METHODparameter has a value ofclient, meaning that state is saved on the client.- A
listenerelement that identifies theContextListenerclass used to create and remove the database access.- A
servletelement that identifies theFacesServletinstance.- A
servlet-mappingelement that mapsFacesServletto a URL pattern.- Nested inside a
jsp-configelement is ajsp-property-groupelement, 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/bookstore6in a browser.