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 theDispatcher
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. ThedataTable
tag onbookshowcart.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 thatbookreceipt.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 thebookstore.jsp
page 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.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 thejavax.faces.STATE_SAVING_METHOD
parameter has a value ofclient
, meaning that state is saved on the client.- A
listener
element that identifies theContextListener
class used to create and remove the database access.- A
servlet
element that identifies theFacesServlet
instance.- A
servlet-mapping
element that mapsFacesServlet
to a URL pattern.- Nested inside a
jsp-config
element is ajsp-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.