站内搜索: 请输入搜索关键词
当前页面: 在线文档首页 > The J2EE 1.4 Tutorial

The Example JavaServer Faces Application - The J2EE 1.4 Tutorial

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.
  • 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. The dataTable tag on bookshowcart.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 that bookreceipt.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 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 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.