Технология JSP – Java Server Pages
Одним из важнейших видов серверных программ являются приложения, использующие технологию JSP – Java Server Pages. Несмотря на то, что она опирается использование сервлетов, JSP является самостоятельной технологией. Идеология JSP основана на внедрение в HTML-документы специальных конструкций, позволяющих со стороны сервера выполнять программную обработку данных и выводить в соответствующее место документа результат.
В качестве примеров в NetBeans Enterprise Pack приведены примеры Tomcat JSP Example и JSTL Example. Отметим, что Tomcat – название программного сервера, варианта сервера apache, который автоматически конфигурируется и запускается при выполнении примеров, а example означает “пример”. Большим достоинством среды NetBeans является то, что оригиналы всех примеров, открываемых в NetBeans, остаются в неприкосновенности – автоматически создаются копии примеров. Поэтому даже если вы внесёте исправления в исходный код проекта с примером, это не повлечёт изменений в новом проекте с таким же примером.
Для правильной работы серверных примеров требуется, чтобы на компьютере была установлена работа с Интернет. Реально выходить в Интернет не надо, идёт соединение http://localhost:8084//. Но после запуска другого серверного приложения идёт соединение по тому же адресу, поэтому документ берётся из буфера – и показывается документ, созданный предыдущим приложением. Для показа правильного документа требуется нажать в браузере кнопку “обновить”, и в случае автономной работы в появившемся диалоге, предлагающем выбрать режим работы, выбрать “Подключиться”. Реального соединения с Интернет для адреса http://localhost:8084// не будет – все коммуникации станут проходить локально.
Первый из примеров иллюстрирует базовые конструкции JSP, его можно просмотреть, создав проект File/New Project…/ Samples/J2EE1.4/Web /Tomcat JSP Example.
Второй пример – надстройка над JSP, специальный набор тегов JSP, разработанный группой экспертов для облегчения разработки серверных приложений. Пример можно просмотреть, создав проект File/New Project…/ Samples/J2EE1.4/Web / JSTL Example.
Оба этих примера также разработаны организацией The Apache Software Foundation (http://www.apache.org/), и их использование также должно соответствовать лицензии http://www.apache.org/licenses/LICENSE-2.0 .
Порядок примеров в мастере создания приложений прямо противоположный рассматриваемому нами - сначала предлагается использовать JSTL как наиболее развитое средство, затем – JSP как средство более низкого уровня, и только затем Servlet – как средство ещё более низкого уровня. Мы используем при рассмотрении обратный порядок, так как JSP использует сервлеты, а JSTL является надстройкой над JSP.
Рассмотрим подробнее первый пример.
Первая страница запущенного примера JSP
Как и в предыдущем случае, при нажатии на гиперссылку “Execute” выполняется соответствующий пример – в данном случае запускается страница JSP. А при нажатии гиперссылки Source показывается HTML-страница с примерным видом исходного кода.
Страницы JSP представляют обычные HTML-документы, но имеющие расширение имени файла .jsp , а не .html или .htm . Это – заготовка HTML-документа, который будет показан пользователю-клиенту. При создании клиентского HTML-документа в этой заготовке выражения в фигурных скобках после знака доллара вычисляются, а в HTML-документ подставляется строковое представление результата.
Например, выражение вида ${1 + 2} выдаст в соответствующее место документа символ 3. Последовательность \$ означает, что выражение ${…} не вычисляется, а рассматривается как строка.
Первый пример JSP- вычисление выражений
Имеется ряд встроенных в JSP тегов (объектов Java):
- request – запрос. Тип объекта - класс, реализующий интерфейс javax.servlet.http.HttpServletRequest.
- response – ответ на запрос. Тип объекта - класс, реализующий интерфейс javax.servlet.http.HttpServletResponce.
- pageContext – контекст страницы JSP. Обеспечивает доступ к пространству имён и элементам страницы (тегам, атрибутам). Тип объекта - класс javax.servlet.jsp.PageContext .
- session – сессия (сеанс связи клиента с сервером). Тип объекта - класс, реализующий интерфейс javax.servlet.http.HttpSession
- application – приложение. Тип объекта - класс, реализующий интерфейс javax.servlet.ServletContext
- out – выходной поток. Тип объекта - класс javax.servlet.jsp.JspWriter
- config – объект конфигурации сервлета для текущей страницы. Тип объекта - класс, реализующий интерфейс javax.servlet.ServletConfig
- page – объект, обрабатывающий запрос для данной страницы. Тип объекта - класс Object.
Данные объекты применяются в виде
<%@ имяОбъекта параметр1=значение1 параметр2=значение2 ... %>Пример их использования:
<%@ page session=true import=”java.util.*” %>Имеется возможность задания сценариев (интерпретируемого кода) с помощью специальных определений вида
<%@ код %>Где код – сценарий Java для работы с документом или вычислений. Например,
<%
for(int i=0; i<table.getEntries().getRows(); i++) {
cal.Entry entr = table.getEntries().getEntry(i);
%>
В частности, разрешается задавать собственные теги вида
<%@ имяБиблиотеки prefix="имяОбъекта" uri="путь к библиотеке" %>После чего разрешается использовать теги вида < имяОбъекта:оператор>
Так делается в примере использования оператора out в JSTL Example. Используется пользовательский объект c (сокращение от customer – “покупатель”), задаваемый как prefix="c" , и оператор out, заданный в библиотеке taglib по адресу uri="http://java.sun.com/jsp/jstl/core":
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>Отметим, что соответствующие библиотеки уже добавлены в проект. Для примера out это пакет org.apache.taglibs.standard.tag.el.core .
После запуска данного приложения в появившемся документе в списке Examples это первый пример - General Purpose Tags. При переходе по данной гиперссылке мы получаем пример