Технология JavaServer Pages

Автор работы: Пользователь скрыл имя, 27 Февраля 2014 в 15:52, реферат

Краткое описание

Технология JavaServer Pages (JSP) позволяет легко создавать web содержимое, которое имеет как статические, так и динамические компоненты.
JSP технология воплощает все динамические возможности технологии Java Servlet, но обеспечивает более естественный способ создания статического содержимого. Главные особенности JSP технологии:
Язык разработки JSP страниц, которые являются текстовыми документами и описывают, как обработать запрос и построить ответ.
Структурные компоненты для доступа к серверным объектам.
Механизмы для определения расширений языка JSP.

Прикрепленные файлы: 1 файл

ТЕХНОЛОГИЯ JSP.doc

— 251.50 Кб (Скачать документ)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

СОДЕРЖАНИЕ

 

Введение…………………………………………………………………………………3

 

 

Введение

Технология JavaServer Pages (JSP) позволяет легко создавать web содержимое, которое имеет как статические, так и динамические компоненты.

JSP технология  воплощает все динамические возможности технологии Java Servlet, но обеспечивает более естественный способ создания статического содержимого. Главные особенности JSP технологии:

    • Язык разработки JSP страниц, которые являются текстовыми документами и описывают, как обработать запрос и построить ответ.
    • Структурные компоненты для доступа к серверным объектам.
    • Механизмы для определения расширений языка JSP.

Технология JSP также содержит API, который используется разработчиками web контейнеров, но этот API не рассматривается в данной главе.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Что такое JSP Page?

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

Следующая web страница является формой, которая позволяет вам выбрать локализацию и отобразить дату в соответствующем стиле.

Рисунок 1.

Исходный текст для этого примера расположен в ../examples/. Страница JSP index.jsp использованная для создания этой формы, показана ниже. Это – типичная смесь статической HTML разметки и элементов JSP. Если вы разрабатывали  web страницы, вы хорошо знакомы со структурными выражениями HTML документа (<head>, <body>, и так далее) и с HTML выражениями, которые создают форму <form> и меню <select>. Выделенные строки в примере содержат следующие типы JSP конструкций:

    • Директивы (<@page ... %>) импорта классов из пакета java.util и установки типа содержимого, возвращаемого страницей.
    • Элемент jsp:useBean создает объект, содержащий коллекцию локализаций, и инициализирует переменную, которая указывает на такой объект.
    • Скриплеты (<% ... %> ) извлекают значение параметра, перебирают коллекцию имен локализаций и условно вставляют HTML текст в вывод.
    • Выражения (<%= ... %>) вставляют значение имени локализации в ответ.
    • Элемент jsp:include посылает запрос к другой странице (date.jsp) и включает ее ответ в ответ вызвавшей страницы.

 <%@ page import="java.util.*" %>

<%@ page contentType="text/html; charset=ISO-8859-5" %>

<html>

<head><title>Localized Dates</title></head>

<body bgcolor="white">

<jsp:useBean id="locales" scope="application"    

class="MyLocales"/>

<form name="localeForm" action="index.jsp" method="post">

<b>Locale:</b>

<select name=locale>

<%   

String selectedLocale = request.getParameter("locale");   

Iterator i = locales.getLocaleNames().iterator();   

while (i.hasNext()) {      

String locale = (String)i.next();      

if (selectedLocale != null &&         

selectedLocale.equals(locale)) {

%>         

<option selected><%=locale%></option>

<%        

} else {

%>         

<option><%=locale%></option>

<%      

}   

}

%>

</select>

<input type="submit" name="Submit" value="Get Date">

</form>

<jsp:include page="date.jsp"/>

 </body>

</html>

Чтобы построить, развернуть и выполнить эту страницу:

  1. Перейдите в examples/src и постройте пример для выполнения ant date (смотрите How to Build and Run the Examples).
  2. Создайте J2EE приложение, названное date.
    1. Выберите File->New Application или нажмите кнопку New Application.
    2. Введите date.ear в поле Application File Name.
    3. Нажмите OK.
  3. Добавьте web компонент date к приложению date.
    1. Выберите File->New Web Component или нажмите кнопку New Web Component.
    2. Выберите приложение date из Create new WAR File в выпадающем списке Application.
    3. Введите date в поле WAR Display Name.
    4. Нажмите Add.
    5. Перейдите в examples/build/web/date. Выделите index.jsp, date.jsp, MyDate.class и MyLocales.class и нажмите Add, затем нажмите Finish.
    6. Нажмите Next.
    7. Выделите JSP в переключателе Web Component, затем нажмите Next.
    8. Выберите index.jsp из выпадающего списка JSP Filename. Введите date в поле Web Component Display Name. Нажмите Next и Finish.
  4. Разверните приложение. Выберите Tools->Deploy Application или нажмите кнопку Deploy Application. В мастере развертывания (deploy), установите context root для date.
  5. Активизируйте URL http://<host>:8000/date в браузере.

Вы увидите выпадающий список, который содержит локализации. Выберите локализацию и нажмите Get Date. Вы увидите дату, представленную в стиле, соответствующем вашей локализации.

Пример страниц JSP

Для иллюстрации JSP технологии в этой главе переписывается каждый сервлет приложения Duke's Bookstore, представленный в The Example Servlets , как страница JSP:

Функция

JSP страница

Вход в книжный магазин

bookstore.jsp

Создание баннера (заголовка) магазина

banner.jsp

Просмотр книг, предлагаемых для продажи

catalog.jsp

Отбор книг в карту покупок («корзинку»)

catalog.jsp and bookdetails.jsp

Получить подробную информацию о книге

bookdetails.jsp

Показать карту покупок

showcart.jsp

Удалить книгу(и) из карты покупок

showcart.jsp

Купить книги из карты покупок

cashier.jsp

Послать подтверждение покупки

receipt.jsp


Таблица 1. Пример Duke's Bookstore JSP Pages.

 

Исходные тексты для этого приложения расположены в examples/src/web/bookstore2. Данные для приложения bookstore по прежнему поддерживаются в базе данных Cloudscape. Однако, два изменения сделаны для объекта helper базы данных (database helper object) database.BookDB:

  • Объект helper переписан таким образом, чтобы соответствовать моделям проектирования компонентов JavaBeans в JavaBeans Components in JSP Pages. Это изменение делается так, чтобы  JSP страницы могли получить доступ к helper объекту, используя элементы языка JSP, специфичные для компонентов JavaBeans.
  • Вместо непосредственного доступа к базе данных книжного магазина, helper объект использует enterprise bean. Преимущество использования enterprise bean состоит в том, что объект helper больше не отвечает за соединение с базой данных; эта работа поручена enterprise bean. Кроме того, контейнер EJB поддерживает пул соединений с базой, поэтому enterprise bean может быстрее получить это соединение, чем helper объект. К enterprise bean имеют отношение следующие интерфейсы и классы: database.BookDBEJBHome home интерфейс, database.BookDBEJB remote интерфейс, и класс реализации database.BookDBEJB, который содержит все JDBC вызовы к базе данных.

Наконец, эта версия примера использует апплет для генерации динамических цифровых часов в баннере. Смотрите Including an Applet, где описывается JSP элемент, который генерирует HTML для загрузки апплета.

Чтобы построить, развернуть и исполнить пример:

  1. Перейдите в examples/src и постройте пример, выполнив ant bookstore2.
  2. Запустите базу данных Cloudscape, выполнив cloudscape -start.
  3. Если у вас еще нет базы данных bookstore, выполните ant create-web-db.
  4. Запустите j2ee сервер.
  5. Запустите deploytool.
  6. Создайте J2EE приложение, названное bookstore2.
    1. Выберите File->New Application или нажмите кнопку New Application.
    2. Введите bookstore2.ear в поле Application File Name.
    3. Нажмите OK.
  7. Добавьте bookstore2 WAR к приложению bookstore2.
    1. Выберите File->Add to Application->Web WAR или нажмите кнопку Web WAR.
    2. В диалоге Add Web WAR перейдите в examples/build/web/bookstore2. Выделите bookstore2.war. Нажмите Add Web WAR.
  8. Добавьте к приложению BookDBEJB enterprise bean.
    1. Выберите File->New Enterprise Bean или нажмите кнопку New Enterprise Bean.
    2. Выберите из выпадающего списка Enterprise Bean bookstore2.
    3. Введите BookDBEJB в поле JAR Display Name.
    4. Кликните Add Чтобы добавить файлы содержимого. Перейдите в  папку examples/build/web/ejb и добавьте базу данных и пакеты исключений. Нажмите Next.
    5. Выберите тип Bean: Session и Stateless.
    6. Выберите BookDBEJBImpl для класса Enterprise Bean.
    7. Выберите BookDBEJBHome для Home интерфейса.
    8. Выберите BookDBEJB для Remote интерфейса.
    9. Введите BookDBEJB для имени Enterprise Bean.
    10. Введите BookDBEJB в поле JNDI Name около компонентаBookDB.
  9. Добавьте ресурсную ссылку на базу данных Cloudscape.
    1. Выберите BookDBEJB enterprise bean.
    2. Выберите вкладку Resource Ref's.
    3. Нажмите Add.
    4. Выберите javax.sql.DataSource из списка Type.
    5. Введите jdbc/BookDB в поле Coded Name.
    6. Введите jdbc/Cloudscape в поле JNDI Name.
  10. Добавьте ссылку на enterprise bean BookDBEJB.
    1. Выберите bookstore2 WAR.
    2. Выберите вкладку EJB Ref's.
    3. Нажмите Add.
    4. Введите ejb/BookDBEJB в поле Coded Name.
    5. Введите Session в поле Type.
    6. Введите BookDBEJBHome в поле Home.
    7. Введите BookDBEJB в поле Remote.
    8. Введите BookDBEJB в поле JNDI Name.
  11. Разверните приложение. Выберите Tools->Deploy Application или нажмите кнопку Deploy Application. Нажмите Next дважды. Введите BookDBEJB в поле Application->JNDI Name и bookstore2 для context root. Нажмите Next и Finish.
  12. Откройте bookstore URL http://<host>:8000/bookstore2/enter.

Смотрите Troubleshooting для помощи с диагностикой общих проблем.

Основные черты программной технологии JSP

 

JavaServer Page (JSP) –  это расширение технологии Java servlet, являющееся удобным методом для  отображения веб-страниц с динамическим  содержанием. Технология позволяет  внедрять Java-код, а также EL (Expression Language) в статичное содержимое страницы. Могут использоваться библиотеки JSP-тегов для внедрения их в JSP-страницы. Страницы компилируются JSP-компилятором в сервлеты, представляющие собой Java-классы, которые выполняются на сервере. Сервлеты могут быть написаны разработчиком, не используя JSP-страницы. Эти технологии дополняют друг друга.

Основным отличием от других подобных технологий, например ASP и PHP, является то, что код, находящийся внутри специальных тэгов не интерпретируется при обращении к странице, а предварительно компилируется в Java Servlet. Технология JSP удачно объединяет шаблонный подход к построению сайтов и все преимущества Java-платформы.

Важным шагом к расширению шаблонного подхода стали библиотеки тэгов. Они предоставляют хорошую возможность интегрировать стандартные, сторонние, или собственные программные компоненты в страницы. Простота создания и использования привели к большой популярности библиотек тэгов.

JSP не привязана  к конкретной платформе благодаря  использованию Java. Кроссплатформенность  является одним из основных преимуществ этой технологии. Также к достоинствам JSP следует отнести простоту разработки, наличие большого количества библиотек и легкость их использования, мощные и разнообразные среды разработки.

Пример программного кода на JSP, который выбирает из базы данных информацию о торговых марках:

 

<%

List<Object> list = (new TradeMarkService()). getAllFromBase();

int i = 0;

for (i=0; i<list.size(); i++){

TradeMark tradeMark = (TradeMark)list.get(i);

%>

<tr>

<td><%= i+1 %></td>

<td><a>

</tr>

<% } %>

 

Этот пример демонстрирует комбинацию Java-кода и статического HTML на JSP-странице.

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

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

 

Цикл жизни JSP Page

Страница JSP обслуживает запросы подобно сервлету. Таким образом, цикл жизни и многие особенности JSP pages (в частности динамические аспекты) определены технологией Java Servlet technology, и многое из обсуждаемого в данной главе ссылается на  функции, описанные в Java Servlet Technology.

Когда запрос обращается к JSP странице, он обрабатывается специальным сервлетом, который сначала проверяет, старше ли сервлет этой JSP страницы, чем сама JSP page. Если старше, он транслирует эту JSP страницу в класс сервлета и компилирует этот класс. Одно из преимуществ JSP page над сервлетами состоит в том, что процесс «построения» выполняется автоматически.

Трансляция и компиляция

На этапе трансляции каждый тип данных в JSP page интерпретируется по разному. Исходные данные трансформируются в код, который будет выделять данные в поток, возвращающий данные клиенту. JSP элементы интерпретируются следующим образом:

  • Директивы используются, чтобы контролировать, как web контейнер транслирует и выполняет JSP страницу.
  • Скриптовые элементы (Scripting elements) вставляются в класс сервлета  JSP страницы. Подробности смотрите в JSP Scripting Elements.
  • Элементы форм <jsp:XXX ... /> конвертируются в метод, вызывающий компоненты JavaBeans или вызовы Java Servlet API.

Для JSP страницы, названной pageName, исходный текст сервлета JSP страницы servlet хранится в файле:

J2EE_HOME/repository/host/web/context root/pageName_jsp.java

Например, исходный текст для страницы с именем index (index.jsp) для примера локализации даты, обсуждаемого в начале главы, был бы назван:

J2EE_HOME/repository/host/web/date/index_jsp.java

Этапы трансляции и компиляции могут выдавать ошибки, которые наблюдаются, только когда страница запрашивается в первый раз. Если ошибка встречается во время трансляции страницы (например, если транслятор встречает плохо сформированный JSP элемент) сервер выбросит ParseException, и исходный файл класса сервлета будет пустым или неполным. Последняя некомплектная строка укажет на некорректный JSP элемент.

Если ошибка встречается во время компиляции (например, ошибка синтаксиса в скриплете), сервер вернет JasperException и сообщение, которое содержит имя сервлета JSP страницы и строку, в которой встретилась ошибка.

Если страница была оттранслирована и откомпилирована, полученный сервлет в основном следует циклу жизни обычного сервлета, описанному в

Servlet Life Cycle:

  1. Если экземпляр сервлета JSP страницы еще не создан, контейнер:
    1. Загружает класс сервлета JSP страницы
    2. Устанавливает экземпляр класса сервлета
    3. Инициализирует экземпляр сервлета, вызывая метод jspInit
  2. Вызывает метод _jspService, передавая объекты запроса и ответа.

Информация о работе Технология JavaServer Pages