Creating Static and Dynamic Content

This section explains how to represent static text and
dynamic content in a JSP document. You can represent static text in a JSP
document using uninterpreted XML tags or the jsp:text element.
The jsp:text element passes its content through to the
output.

If
you use jsp:text, all white space is preserved. For example,
consider this example using XML tags:

<books>
<book>
Web Servers for Fun and Profit
</book>
</books>

The output generated from this XML has all white space removed:

<books><book>
Web Servers for Fun and Profit
</book></books>

If you wrap the example XML with a <jsp:text> tag,
all white space is preserved. The white space characters are #x20, #x9, #xD, and #xA.

You can also use jsp:text to output static data that
is not well formed. The ${counter} expression in the following
example would be illegal in a JSP document if it were not wrapped in a jsp:text tag.

The jsp:text tag must not contain any other elements.
Therefore, if you need to nest a tag inside jsp:text, you
must wrap the tag inside CDATA.

You also need to use CDATA if you need to output
some elements that are not well-formed. The following example requires CDATA wrappers around the blockquote start and end
tags because the blockquote element is not well formed.
This is because the blockquote element overlaps with other
elements in the example.

As shown in this snippet from books.jspx, the c:forEach JSTL tag iterates through the list of books and generates
the XML data stream. The EL expressions access the JavaBeans component, which
in turn retrieves the data from the database:

When using the expression language
in your JSP documents, you must substitute alternative notation for some of
the operators so that they will not be interpreted as XML markup. Table 6–2 enumerates the more common
operators and their alternative syntax in JSP documents.

The name attribute identifies the generated tag’s
name. The jsp:attribute tag generates the lang attribute.
The body of the jsp:attribute tag identifies the value
of the lang attribute. The jsp:body tag
generates the body of the tag. The output of this example jsp:element could
be

<h1 lang="fr">Heading in French</h1>

As shown in Table 6–1,
scripting elements (described in Chapter 9, Scripting in JSP Pages) are represented as XML elements when they
appear in a JSP document. The only exception is a scriptlet expression used
to specify a request-time attribute value. Instead of using <%=expr
%>, a JSP document uses %= expr % to represent
a request-time attribute value.

The three scripting elements are declarations, scriptlets, and expressions.

A jsp:declaration element declares a scripting
language construct that is available to other scripting elements. A jsp:declaration element has no attributes and its body is the declaration itself.
Its syntax is

<jsp:declaration> declaration goes here </jsp:declaration>

A jsp:scriptlet element contains a Java program
fragment called a scriptlet. This element has no attributes, and its body
is the program fragment that constitutes the scriptlet. Its syntax is

<jsp:scriptlet> code fragment goes here </jsp:scriptlet>

The jsp:expression element inserts the value
of a scripting language expression, converted into a string, into the data
stream returned to the client. A jsp:expression element
has no attributes and its body is the expression. Its syntax is