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.

Localized Date Form

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:

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:

  1. In a terminal window, go to <INSTALL>/javaeetutorial5/examples/web/date/.
  2. 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:

  1. Start the Application Server.
  2. Run ant deploy.

To run the example, perform these steps:

  1. Set the character encoding in your browser to UTF-8.
  2. Open the URL http://localhost:8080/date in a browser.

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.