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.
- Tables that display 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.- 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 12-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 19 describes how to program backing beans, custom converters and validators, and event listeners. Chapter 20 describes how to program event handlers, custom components, renderers, and tag handlers.
The source code for the application is located in the
<
INSTALL
>/j2eetutorial14/examples/web/bookstore6/
directory. A samplebookstore6.war
is provided in<
INSTALL
>/j2eetutorial14/examples/web/provided-wars/
. To build the example, follow these steps:
- Build and package the
bookstore
common files as described in Duke's Bookstore Examples.- Go to
<INSTALL>
/j2eetutorial14/examples/web/bookstore6/
and runasant build
.- Start the Application Server.
- Perform all the operations described in Accessing Databases from Web Applications.
To package and deploy the example using
asant
:To learn how to configure the example, use
deploytool
to package and deploy it:
- Start
deploytool
.- Create a web application called
bookstore6
by running the New Web Component Wizard. Select FileNewWeb Component.- In the New Web Component wizard:
- Select the Create New Stand-Alone WAR Module radio button.
- In the WAR File field, enter
<INSTALL>
/j2eetutorial14/examples/web/bookstore6.war.
- The WAR Display Name field will show
bookstore6
.- In the Context Root field, enter
/bookstore6
.- Click Edit Contents.
- In the Edit Contents dialog box, navigate to
<INSTALL>
/j2eetutorial14/examples/web/bookstore6/build/
. Select everything in thebuild
directory and click Add.- In the Contents tree, drag the
resources
package to theWEB-INF/classes
directory.- In the Edit Contents dialog, go back to the
<INSTALL>
/j2eetutorial14/examples/web/bookstore6/
directory. Selectfaces-config.xml
and click Add.- In the Contents tree, drag
faces-config.xml
to theWEB-INF
directory.- In the Edit Contents dialog, navigate to
<INSTALL>/j2eetutorial14/examples/web/bookstore/dist/
. Selectbookstore.jar
and click Add.- In the Edit Contents dialog box, navigate to
<J2EE_HOME>
/lib/
and select thejsf-api.jar
. Click Add, and then Click OK.- Click Next.
- Select the Servlet radio button.
- Click Next.
- Select
javax.faces.webapp.FacesServlet
from the Servlet Class combo box.- In the Startup Load Sequence Position combo box, enter
1
.- Click Finish.
- Provide a mapping for the
FacesServlet
.- Specify where state is saved.
- Set preludes and codas for all JSP pages.
- Add the listener class
listeners.ContextListener
(described in Handling Servlet Life-Cycle Events).- Add a resource reference for the database.
- Select FileSave.
- Deploy the application.
- Select ToolsDeploy.
- In the Connection Settings frame, enter the user name and password you specified when you installed the Application Server.
- Click OK.
- A pop-up dialog box will display the results of the deployment. Click Close.
To run the example, open the URL
http://localhost:8080/bookstore6
in a browser.