Download FAQ History |  | API Search Feedback

> ## Using JSTL

> JSTL includes a wide variety of tags that fit into discrete functional areas. To reflect this, as well as to give each area its own namespace, JSTL is exposed as multiple tag libraries. The URIs for the libraries are:

> - Core: `http://java.sun.com/jsp/jstl/core`
> - XML: `http://java.sun.com/jsp/jstl/xml`
> - Internationalization: `http://java.sun.com/jsp/jstl/fmt`
> - SQL: `http://java.sun.com/jsp/jstl/sql`
> - Functions: `http://java.sun.com/jsp/jstl/functions`

> Table 17-1 summarizes these functional areas along with the prefixes used in this tutorial.

> Table 17-1 JSTL Tags
> Area | Subfunction | Prefix
> --- | --- | ---
> Core | Variable Support | `c`
> Flow Control
> URL Management
> Miscellaneous
> XML | Core | `x`
> Flow Control
> Transformation
> I18n | Locale | `fmt`
> Message formatting
> Number and date formatting
> Database | SQL | `sql`
> Functions | Collection length | `fn`
> String manipulation

> Thus, the tutorial references the JSTL core tags in JSP pages with the following `taglib`:

>     <%@ taglib uri="http://java.sun.com/jsp/jstl/core"
>         prefix="c" %>

> In addition to declaring the tag libraries, tutorial examples access the JSTL API and implementation. In the Java WSDP, the JSTL TLDs `and` libraries are distributed in the archives standard.jar and jstl.jar in `<``JWSDP_HOME``>/jstl/lib/`. If you copy these archives to the directory `<``JWSDP_HOME``>/common/lib`, they will automatically be loaded into the classpath of all Web applications running on Tomcat.

> ### Tag Collaboration

> Tags usually collaborate with their environment in implicit and explicit ways. Implicit collaboration is done via a well defined interface that allows nested tags to work seamlessly with the ancestor tag exposing that interface. The JSTL conditional tags employ this mode of collaboration.

> Explicit collaboration happens when a tag exposes information to its environment. JSTL tags expose information as JSP EL variables; the convention JSTL follows is to use the name `var` for any tag attribute that exports information about the tag. For example, the `forEach` tag exposes the current item of the shopping cart it is iterating over in the following way:

>     <c:forEach var="item" items="${sessionScope.cart.items}">
>       ...
>     </c:forEach>

> In situations where a tag exposes more than one piece of information, the name `var` is used for the primary piece of information being exported, and an appropriate name is selected for any other secondary piece of information exposed. For example, iteration status information is exported by the `forEach` tag via the attribute `status`.

> For situations where you want to use an EL variable exposed by a JSTL tag in an expression in the page's scripting language (see Chapter 19), you use the standard JSP element `jsp:useBean` to declare a scripting variable.

> For example, `bookshowcart.jsp` removes a book from a shopping cart using a scriptlet. The ID of the book to be removed is passed as a request parameter. The value of the request parameter is first exposed as an EL variable (to be used later by the JSTL `sql:query` tag) and then declared as scripting variable and passed to the `cart.remove` method:

>     <c:set var="bookId" value="${param.Remove}"/>
>     <jsp:useBean id="bookId" type="java.lang.String" />
>     <% cart.remove(bookId); %>
>     <sql:query var="books"
>       dataSource="${applicationScope.bookDS}">
>       select * from PUBLIC.books where id = ?
>       <sql:param value="${bookId}" />
>     </sql:query>

Download FAQ History |  | API Search Feedback

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