What Is a JSP Page?
A JSP page is a text document that contains two types of text: static data, which can be expressed in any text-based format (such as HTML, SVG, WML, and XML), and JSP elements, which construct dynamic content.
The recommended file extension for the source file of a JSP page is
.jsp
. The page can be composed of a top file that includes other files that contain either a complete JSP page or a fragment of a JSP page. The recommended extension for the source file of a fragment of a JSP page is.jspf
.The JSP elements in a JSP page can be expressed in two syntaxes--standard and XML--though any given file can use only one syntax. A JSP page in XML syntax is an XML document and can be manipulated by tools and APIs for XML documents. This chapter and Chapters 6 through 8 document only the standard syntax. The XML syntax is covered in Chapter 5.
Example
The web page in Figure 4-1 is a form that allows you to select a locale and displays the date in a manner appropriate to the locale.
Figure 4-1 Localized Date Form
The source code for this example is in the
<
INSTALL
>/javaeetutorial5/examples/web/date/
directory. The JSP page,index.jsp
, used to create the form appears in a moment; it is a typical mixture of static HTML markup and JSP elements. If you have developed web pages, you are probably familiar with the HTML document structure statements (<head>
,<body>
, and so on) and the HTML statements that create a form (<form>)
and a menu (<select>)
.The lines in bold in the example code contain the following types of JSP constructs:
- A page directive (
<%@page ... %>
) sets the content type returned by the page.- Tag library directives (
<%@taglib ... %>
) import custom tag libraries.jsp:useBean
creates an object containing a collection of locales and initializes an identifier that points to that object.- JSP expression language expressions (
${ }
) retrieve the value of object properties. The values are used to set custom tag attribute values and create dynamic content.- Custom tags set a variable (
c:set
), iterate over a collection of locale names (c:forEach
), and conditionally insert HTML text into the response (c:if
,c:choose
,c:when
,c:otherwise
).jsp:setProperty
sets the value of an object property.- A function (
f:equals
) tests the equality of an attribute and the current item of a collection. (Note: A built-in==
operator is usually used to test equality).Here is the JSP page:
<%@page contentType
="text/html; charset=UTF-8" %> <%@taglib
uri="http://java.sun.com/jsp/jstl/core
" prefix="c" %> <%@taglib
uri="/functions" prefix="f" %> <html> <head><title>Localized Dates</title></head> <body bgcolor="white"> <jsp:useBean
id="locales" scope="application" class="mypkg.MyLocales"/> <form name="localeForm" action="index.jsp" method="post"> <c:set
var="selectedLocaleString" value="${param.locale}
" /> <c:set
var="selectedFlag" value="${!empty selectedLocaleString}
" /> <b>Locale:</b> <select name=locale> <c:forEach
var="localeString" items="${locales.localeNames}
" > <c:choose
> <c:when
test="${selectedFlag}
"> <c:choose
> <c:when
test="${f:equals(selectedLocaleString, localeString)}
" > <option selected>${localeString}
</option> </c:when> <c:otherwise> <option>${localeString}
</option> </c:otherwise> </c:choose> </c:when> <c:otherwise
> <option>${localeString}
</option> </c:otherwise> </c:choose> </c:forEach> </select> <input type="submit" name="Submit" value="Get Date"> </form> <c:if
test="${selectedFlag}" > <jsp:setProperty
name="locales" property="selectedLocaleString" value="${selectedLocaleString}
" /> <jsp:useBean
id="date" class="mypkg.MyDate"/> <jsp:setProperty
name="date" property="locale" value="${locales.selectedLocale}
"/> <b>Date: </b>${date.date}
</c:if> </body> </html>. To build this example, perform the following steps:
- In a terminal window, go to
<
INSTALL
>/javaeetutorial5/examples/web/date/
.- Run
ant
. This target will spawn any necessary compilations and copy files to the<
INSTALL
>/javaeetutorial5/examples/web/date/build/
directory. It will also package the files into a WAR file and copy this WAR file to the<
INSTALL
>/javaeetutorial5/examples/web/date/dist
directory.To deploy the example using
ant
, follow these steps:To run the example, perform these steps:
You will see a combo box whose entries are locales. Select a locale and click Get Date. You will see the date expressed in a manner appropriate for that locale.