В прошлом посте мы научились создавать сервлеты. Мы создали сервлет, который выводит форму и позволяет пользователю отправить через нее данные. В этой статье мы рассмотрим технологию JSP, которая позволяет значительно упростить создание пользовательских интерфейсов (по сравнению с сервлетами).

Компонент JSP (Java Server Pages – серверные страницы Java) – тип сервлета, созданный для исполнения роли пользовательского интерфейса в web-приложениях Java. JSP – это текстовый файл, сочетающий в себе код HTML и XHTML, XML-элементы и встроенные действия и команды JSP. Обычно имена файлов JSP имеют расширение .jsp, например firstpage.jsp. При первом запросе клиентом страницы JSP или при перекомпиляции JSP разработчиком, web-контейнер транслирует этот текстовый документ в сервлет. Спецификация JSP 2.0 называет преобразование JSP в сервлет фазой трансляции. При этом полученный экземпляр сервлета называется объект-реализация страницы.

Компилятор JSP, например Jasper сервера Tomcat, автоматически преобразует исходный текстовый документ в сервлет. Web-контейнер создает экземпляр полученного сервлета и делает сервлет доступным для обработки запросов. Эти задачи выполняются незаметно для разработчика, которому совсем не нужно заниматься транслированным исходным кодом сервлета (хотя он может проверить этот код, чтобы увидеть, что происходит за сценой, что всегда поучительно).

Разработчик сосредотачивает внимание на динамическом поведении JSP и на том, какие элементы или пользовательские теги в ней используются для генерации ответа. Создние JSP в виде текстового документа, а не в виде исходного кода на языке Java позволяет профессиональному дизайнеру работать над графикой, HTML или DHTML, оставляя XML-теги и динамическое содержимое программистам.

Теории для начала хватит, приступаем к практике. Здесь мы не будем создавать новый web-проект, а возьмем за основу созданный в предыдущем посте. Итак, чтобы создать JSP-страницу нужно:

  1. Щелкнуть правой кнопкой мыши на Web Pages в проекте test-servlet и выбрать New->JSP…
  2. В поле JSP File Name ввести имя файла JSP-страницы, все остальное оставить без изменений.

Сейчас нам эти действия совершать не нужно, т.к. в нашем проекте уже есть JSP-страница index.jsp. Откройте ее. Ее содержание должно быть таким, как показано в листинге ниже.

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
 
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1>
    </body>
</html>

Помните, когда вы запускали проектиз прошлого поста, вы попадали на страницу со трокой “Hello World!”? Это как раз та самая страница.

Можно создать JSP страницу в виде XML-файла, такие страницы называют JSP-документами, они состоят исключительно из корректных XML-элементов и атрибутов. Спецификация JSP 2.0 рекомендует давать таким файлам расширение .jspx. Мы научимся создавать JSP-докуметы в следующих постах, а пока ограничимся простыми JSP-страницами.

Измените JSP-страницу так, как показано в следующем листинге.

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c'%>
<jsp:useBean id="date" class="java.util.Date" />
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
 
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
 
    <body>
        <h1>Сегодня </h1> <c:out value="${date}" />
    </body>
</html>

Если вы также как и я используете для разработки NetBeans, то строка

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

у вас будет подчеркнута красной волнистой линией, что сигнализирует об ошибке. Эта ошибка возникла потому, что в  CLASSPATH нашего проекта нет стандартной библиотеки пользовательских тегов (JSTL).  Скачайте эту библиотеку с сайта http://jakarta.apache.org/site/downloads/downloads_taglibs-standard.cgi. На момент написания этого поста последняя версия библиотеки была 1.1.2. Вам понадобится архив из раздела Binaries.

Разархивируйте архив и зайдите в директорию lib. Скопируйте файлы jstl.jar и standard.jar в директорию <путь_к_вашему_проекту>/test-servlet/lib/. Теперь в NetBeans зайдите в свойства проекта на вкладку Libraries и нажмите Add Jar/Folder, выделите jstl.jar и standard.jar и нажмите Open.

Попробуйте теперь запустить проект. Если вы все сделали правильно, то у вас должна отобразиться страница со строкой “Сегодня” и текущей датой.

При первом обращении к данной странице, вы почувствуете задержку, связанную с тем, что JSP-контейнер преобразует текстовый файл в исходный код Java и затем компилирует его в сервлет.

Этой задержки можно избежать путем предварительной компиляции (прекомпиляци) JSP. Если вы запросите JSP с параметром jsp_precompile=true, Tomcat транслирует JSP, но не будет посылать ответ на этот запрос. Например: http://localhost:8084/test-servlet/index.jsp?jsp_precompile=true.

В коде JSP-страницы есть конструкции, которые могут быть сейчас не понятны вам. Но пост пора завершать, а обо всех конструкциях мы поговорим в следующих постах.