Download PDF Home History |  | API Search Feedback FAQ

> ## 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 Sun Java System Application Server Platform Edition 8.
> 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 FileNewWeb Component.
> 3. In the New Web Component wizard:
> 1. Select the Create New Stand-Alone WAR Module radio button.
> 2. In the WAR Location field, enter `<INSTALL>``/j2eetutorial14/examples/web/bookstore6.war.`
> 3. In the WAR Name field, enter `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 FileSave.
> 10. Deploy the application.
> 11. Select ToolsDeploy.
> 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.

Download PDF Home History |  | API Search Feedback FAQ

All of the material in The J2EE(TM) 1.4 Tutorial is copyright-protected and may not be published in other works without express written permission from Sun Microsystems.