2. Using the Tutorial Examples 3. Getting Started with Web Applications 5. JavaServer Pages Technology Using Objects within JSP Pages Using Application-Specific Objects Immediate and Deferred Evaluation Syntax Deactivating Expression Evaluation Process of Expression Evaluation JavaBeans Component Design Conventions Creating and Using a JavaBeans Component Including the Tag Library Implementation Transferring Control to Another Web Component Setting Properties for Groups of JSP Pages Deactivating EL Expression Evaluation Further Information about JavaServer Pages Technology 7. JavaServer Pages Standard Tag Library 10. JavaServer Faces Technology 11. Using JavaServer Faces Technology in JSP Pages 12. Developing with JavaServer Faces Technology 13. Creating Custom UI Components 14. Configuring JavaServer Faces Applications 15. Internationalizing and Localizing Web Applications 16. Building Web Services with JAX-WS 17. Binding between XML Schema and Java Classes 19. SOAP with Attachments API for Java 21. Getting Started with Enterprise Beans 23. A Message-Driven Bean Example 24. Introduction to the Java Persistence API 25. Persistence in the Web Tier 26. Persistence in the EJB Tier 27. The Java Persistence Query Language 28. Introduction to Security in the Java EE Platform 29. Securing Java EE Applications 31. The Java Message Service API 32. Java EE Examples Using the JMS API 36. The Coffee Break Application | JavaBeans ComponentsJavaBeans components are Java classes that can be easily reused and composed together intoapplications. Any Java class that follows certain design conventions is a JavaBeans component. JavaServer Pages technology directly supports using JavaBeans components with standard JSP language elements.You can easily create and initialize beans and get and set the valuesof their properties. JavaBeans Component Design ConventionsJavaBeans component design conventions govern the properties of the class and govern thepublic methods that give access to the properties. A JavaBeans component property can be:
A property does not have to be implemented by an instance variable. Itmust simply be accessible using public methods that conform to the following conventions:
In addition to the property methods, a JavaBeans component must define a constructorthat takes no parameters. The Duke’s Bookstore application JSP pagesbookstore.jsp,bookdetails.jsp,catalog.jsp, andshowcart.jsp, alllocated attut-install/javaeetutorial5/examples/web/bookstore2/web, use thetut-install/javaeetutorial5/examples/web/bookstore2/src/java/com/sun/bookstore2/database/BookDB.java JavaBeans component. BookDB provides a JavaBeans component front end to the access objectBookDBAO. TheJSP pagesshowcart.jsp andcashier.jsp access the beantut-install/javaeetutorial5/examples/web/bookstore/src/com/sun/bookstore/cart/ShoppingCart.java, which represents auser’s shopping cart. TheBookDB bean has two writable properties,bookId anddatabase, and threereadable properties:bookDetails,numberOfBooks, andbooks. These latter properties do not correspond toany instance variables but rather are a function of thebookId anddatabaseproperties. package database;public class BookDB { private String bookId = "0"; private BookDBAO database = null; public BookDB () { } public void setBookId(String bookId) { this.bookId = bookId; } public void setDatabase(BookDBAO database) { this.database = database; } public Book getBook() throws BookNotFoundException { return (Book)database.getBook(bookId); } public List getBooks() throws BooksNotFoundException { return database.getBooks(); } public void buyBooks(ShoppingCart cart) throws OrderException { database.buyBooks(cart); } public int getNumberOfBooks() throws BooksNotFoundException { return database.getNumberOfBooks(); }}Creating and Using a JavaBeans ComponentTo declare that your JSP page will use a JavaBeans component, you useajsp:useBean element. There are two forms: <jsp:useBean scope="scope"/> and <jsp:useBean scope="scope"> <jsp:setProperty .../></jsp:useBean> The second form is used when you want to includejsp:setProperty statements, describedin the next section, for initializing bean properties. Thejsp:useBean element declares that the page will use a bean thatis stored within and is accessible from the specified scope, which can beapplication,session,request, orpage. If no such bean exists, the statement createsthe bean and stores it as an attribute of the scope object (seeUsing Scope Objects). The value of theid attribute determines thename of the bean inthe scope and theidentifier used to reference the bean in EL expressions,other JSP elements, and scripting expressions (seeChapter 9, Scripting in JSP Pages). The value supplied for theclassattribute must be a fully qualified class name. Note that beans cannot bein the unnamed package. Thus the format of the value must bepackage-name.class-name. The following element creates an instance ofmypkg.myLocales if none exists, stores itas an attribute of the application scope, and makes the bean available throughoutthe application by the identifierlocales: <jsp:useBean scope="application" /> Setting JavaBeans Component PropertiesThe standard way to set JavaBeans component properties in a JSP page isby using thejsp:setProperty element. The syntax of thejsp:setProperty element depends onthe source of the property value.Table 5-6 summarizes the various ways to set aproperty of a JavaBeans component using thejsp:setProperty element. Note - Syntax rules of attribute values used in this table:
Table 5-6 Valid Bean Property Assignments from String Values
A property set from a constant string or request parameter must have oneof the types listed inTable 5-7. Because constants and request parameters are strings,the web container automatically converts the value to the property’s type; the conversionapplied is shown in the table. String values can be used to assign values to a property that hasaPropertyEditor class. When that is the case, thesetAsText(String) method is used.A conversion failure arises if the method throws anIllegalArgumentException. The value assigned to an indexed property must be an array, andthe rules just described apply to the elements. You use an expression to set the value of a property whose typeis a compound Java programming language type. The type returned from an expressionmust match or be castable to the type of the property. Table 5-7 Valid Property Value Assignments from String Values
The Duke’s Bookstore application demonstrates how to use thesetProperty element toset the current book from a request parameter in the database bean intut-install/javaeetutorial5/examples/web/bookstore2/web/books/bookdetails.jsp: <c:set var="bid" value="${param.bookId}"/><jsp:setProperty name="bookDB" property="bookId" value="${bid}" />The following fragment from the pagetut-install/javaeetutorial5/examples/web/bookstore2/web/books/bookshowcart.jsp illustrates how to initialize aBookDB bean with adatabase object. Because the initialization is nested in auseBeanelement, it is executed only when the bean is created. <jsp:useBean scope="page"> <jsp:setProperty name="bookDB" property="database" value="${bookDBAO}" /></jsp:useBean>Retrieving JavaBeans Component PropertiesThe main way to retrieve JavaBeans component properties is by using the unifiedEL expressions. Thus, to retrieve a book title, the Duke’s Bookstore application usesthe following expression: ${bookDB.bookDetails.title}Another way to retrieve component properties is to use thejsp:getProperty element.This element converts the value of the property into aString andinserts the value into the response stream: <jsp:getProperty name="beanName" property="propName"/> Note thatbeanName must be the same as that specified for theidattribute in auseBean element, and there must be agetPropName method in theJavaBeans component. Although the preferred approach to getting properties is to use anEL expression, thegetProperty element is available if you need to disable expressionevaluation. Copyright © 2010, Oracle and/or its affiliates. All rights reserved.Legal Notices |