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:

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 the bookstore.jsp page after the locale is selected.

The packages of the Duke's Bookstore application are:

Chapter 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 sample bookstore6.war is provided in <INSTALL>/j2eetutorial14/examples/web/provided-wars/. To build the example, follow these steps:

  1. Build and package the bookstore common files as described in Duke's Bookstore Examples.
  2. Go to <INSTALL>/j2eetutorial14/examples/web/bookstore6/ and run asant build.
  3. Start the Application Server.
  4. Perform all the operations described in Accessing Databases from Web Applications.

To package and deploy the example using asant:

  1. Run asant create-bookstore-war.
  2. Run asant deploy-war.

To learn how to configure the example, use deploytool to package and deploy it:

  1. Start deploytool.
  2. Create a web application called bookstore6 by running the New Web Component Wizard. Select FileRight ArrowNewRight ArrowWeb Component.
  3. In the New Web Component wizard:
    1.   Select the Create New Stand-Alone WAR Module radio button.
    2.   In the WAR File field, enter <INSTALL>/j2eetutorial14/examples/web/bookstore6.war.
    3.   The WAR Display Name field will show bookstore6.
    4. In the Context Root field, enter /bookstore6.
    5. Click Edit Contents.
    6. In the Edit Contents dialog box, navigate to <INSTALL>/j2eetutorial14/examples/web/bookstore6/build/. Select everything in the build directory and click Add.
    7. In the Contents tree, drag the resources package to the WEB-INF/classes directory.
    8. In the Edit Contents dialog, go back to the <INSTALL>/j2eetutorial14/examples/web/bookstore6/ directory. Select faces-config.xml and click Add.
    9. In the Contents tree, drag faces-config.xml to the WEB-INF directory.
    10. In the Edit Contents dialog, navigate to <INSTALL>/j2eetutorial14/examples/web/bookstore/dist/. Select bookstore.jar and click Add.
    11. In the Edit Contents dialog box, navigate to <J2EE_HOME>/lib/ and select the jsf-api.jar. Click Add, and then Click OK.
    12. Click Next.
    13. Select the Servlet radio button.
    14. Click Next.
    15. Select javax.faces.webapp.FacesServlet from the Servlet Class combo box.
    16. In the Startup Load Sequence Position combo box, enter 1.
    17. Click Finish.
  4. Provide a mapping for the FacesServlet.
    1. Select the FacesServlet web component that is contained in the bookstore6 web application from the tree.
    2. Select the Aliases tab.
    3. Click Add and enter *.faces in the Aliases field.
  5. Specify where state is saved.
    1. Select the bookstore6 WAR from the tree.
    2. Select the Context tabbed pane and click Add.
    3. Enter javax.faces.STATE_SAVING_METHOD in the Coded Parameter field.
    4. Enter client in the Value field.
  6. Set preludes and codas for all JSP pages.
    1. Select the JSP Properties tab.
    2. Click Add.
    3. Enter bookstore6 in the Name field.
    4. Click Add URL.
    5. Enter *.jsp in the URL Patterns field.
    6. Click Edit Preludes.
    7. Click Add.
    8. Enter /template/prelude.jspf.
    9. Click OK.
    10. Click Edit Codas.
    11. Click Add.
    12. Enter /template/coda.jspf.
    13. Click OK.
  7. Add the listener class listeners.ContextListener (described in Handling Servlet Life-Cycle Events).
    1. Select the Event Listeners tab.
    2. Click Add.
    3. Select the listeners.ContextListener class from the drop-down menu in the Event Listener Classes pane.
  8. Add a resource reference for the database.
    1. Select the Resource Ref's tab.
    2. Click Add.
    3. Enter jdbc/BookDB in the Coded Name field.
    4. Accept the default type javax.sql.DataSource.
    5. Accept the default authorization Container.
    6. Accept the default selected Shareable.
    7. Enter jdbc/BookDB in the JNDI Name field of the Sun-specific Settings frame.
  9. Select FileRight ArrowSave.
  10. Deploy the application.
  11. Select ToolsRight ArrowDeploy.
  12. In the Connection Settings frame, enter the user name and password you specified when you installed the Application Server.
  13. Click OK.
  14. 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.