Автор работы: Пользователь скрыл имя, 27 Февраля 2014 в 15:52, реферат
Технология JavaServer Pages (JSP) позволяет легко создавать web содержимое, которое имеет как статические, так и динамические компоненты.
JSP технология воплощает все динамические возможности технологии Java Servlet, но обеспечивает более естественный способ создания статического содержимого. Главные особенности JSP технологии:
Язык разработки JSP страниц, которые являются текстовыми документами и описывают, как обработать запрос и построить ответ.
Структурные компоненты для доступа к серверным объектам.
Механизмы для определения расширений языка JSP.
<%=bd.getBookId()%>"><%=bd.
</td>
...
<%
// Конец цикла while
}
%>
Результат показан ниже:
Рисунок 2.
JSP выражения используются, чтобы вставлять значение выражения языка скриптов, преобразованное в строку, в поток данных, возвращаемых клиенту. Если языком скриптов является Java, выражение трансформируется в оператор, который преобразует значение выражения в объект String и вставляет его в неявный out объект.
Синтаксис выражения имеет вид:
<%=выражение языка скриптов %>
Отметим, что точка с запятой не допускается внутри JSP выражений, даже если такое выражение содержит точку с запятой, когда вы используете его в скриплете.
Следующий скриплет извлекает количество элементов в карте покупок:
<%
// Печатаем сводку для карты покупок (корзинки)
int num = cart.getNumberOfItems();
if (num > 0) {
%>
Выражения затем используются, чтобы вставить значение из num в выходной поток и определить соответствующую строку, чтобы вставить количество:
<font size="+2">You have <%= num %>
<%= (num==1 ? " item" : " items") %> in your shopping cart.
</font>
Имеется два механизма для включения содержимого из другого источника в страницу JSP: директива include и элемент jsp:include.
Директива include обрабатывается, когда JSP страница транслируется в класс сервлета. Результатом директивы является вставка в JSP страницу текста, содержащегося в другом файле: или статического содержимого или другой JSP страницы. Вы вероятно должны использовать директиву include, чтобы включить содержимое баннера, информацию об авторском праве, или любую порцию содержимого, которую вы хотели бы многократно использовать в другой JSP странице. Синтаксис директивы include имеет вид:
<%@ include file="filename" %>
Например, все страницы приложения bookstore включают файл banner.jsp, содержащий текст баннера, с помощью следующей директивы:
<%@ include file="banner.jsp" %>
Вдобавок, страницы bookstore.jsp, bookdetails.jsp, catalog.jsp, иshowcart.jsp содержат элементы JSP, которые создают и уничтожают бин database с помощью элемента:
<%@ include file="initdestroy.jsp" %>
Поскольку вы должны статически вставлять директиву include в каждый файл, чтобы многократно использовать ее ресурс, этот подход имеет ограничения. Более гибкий подход построения страницы из кусков содержимого смотрите в A Template Tag Library.
Элемент include обрабатывается, когда страница JSP исполняется. Операция include позволяет вам включить или статический или динамический файл в JSP файл. Результат включения статических или динамических файлов получается совершенно различным. Если файл является статическим, его содержимое вставляется в вызывающий JSP файл. Если файл является динамическим, включаемой JSP странице посылается запрос, она исполняется, и затем результат включается в ответ вызвавшей ее JSP страницы. Синтаксис для элемента jsp:include имеет вид:
<jsp:include page="includedPage" />
Приложение date, представленное в начале главы, включает страницу, которая генерирует изображение локализованной даты, с помощью следующего элемента:
<jsp:include page="date.jsp"/>
Механизм контроля пересылки данных другому web компоненту из JSP страницы использует функциональность, обеспечиваемую Java Servlet API как описано в Transferring a Control to Another Web Component. Вы получаете доступ к этой функциональности из JSP страницы с помощью элемента jsp:forward:
<jsp:forward page="/main.jsp" />
Отметим, что если какие-либо данные уже возвращены клиенту, элемент jsp:forward откажется работать и выбросит IllegalStateException.
Когда вызывается элемент include или forward, целевой странице передается исходный объект request. Если вы хотите передать этой странице дополнительные данные, можете добавить параметры к объекту request с помощью элемента param:
<jsp:include page="..." >
<jsp:param name="param1" value="value1"/>
</jsp:include>
Вы можете включить апплет или компонент JavaBeans в JSP страницу с помощью элемента jsp:plugin. Этот элемент генерирует HTML, который содержит структурные компоненты, зависящие от клиентского браузера (<object> или <embed>). Это обеспечит загрузку Java Plugin (сменных программных модулей Java), если требуется, и клиентского компонента, и последующее выполнение клиентского компонента. Синтаксис для элемента jsp:plugin имеет вид:
<jsp:plugin
type="bean|applet"
code="objectCode"
codebase="objectCodebase"
{ align="alignment" }
{ archive="archiveList" }
{ height="height" }
{ hspace="hspace" }
{ jreversion="jreversion" }
{ name="componentName" }
{ vspace="vspace" }
{ width="width" }
{ nspluginurl="url" }
{ iepluginurl="url" } >
{ <jsp:params>
{ <jsp:param name="paramName" value= paramValue" /> }+
</jsp:params> }
{ <jsp:fallback> arbitrary_text </jsp:fallback> }
</jsp:plugin>
Тег jsp:plugin заменяется тегом <object> или <embed>, который соответствует запросу клиента. Атрибуты тега jsp:plugin обеспечивают конфигурационные данные для представления элемента, а также версию нужного plugin. Атрибуты nspluginurl и iepluginurl определяют URL, откуда этот plugin может быть загружен. Элементы jsp:param указывают параметры апплета или компонента JavaBeans.
Элемент jsp:fallback указывает на содержимое, которое должно быть использовано клиентским браузером, если этот plugin не сможет стартовать (поскольку <object> или <embed> не поддерживается клиентом, или имеется другая проблема).
Если этот plugin может стартовать, но апплет или компонент JavaBeans не может быть найден или запущен, пользователь получит специфическое для plugin сообщение (окно с сообщением о ClassNotFoundException).
Страничка banner.jsp примера Duke'sBookstore, которая создает баннер, показывающий динамические цифровые часы, генерируемые DigitalClock:
Рисунок 3.
Элемент jsp:plugin использован для загрузки апплета следующим образом:
<jsp:plugin
type="applet"
code="DigitalClock.class"
codebase="/bookstore2"
jreversion="1.3"
align="center" height="25" width="300"
nspluginurl="http://java.sun.
plugin/1.3.0_01/plugin-
iepluginurl="http://java.sun.
plugin/1.3.0_01/jinstall-130_
<jsp:params>
<jsp:param name="language"
value="<%=request.getLocale().
<jsp:param name="country"
value="<%=request.getLocale().
<jsp:param name="bgcolor"
value="FFFFFF" />
<jsp:param name="fgcolor"
value="CC0066" />
</jsp:params>
<jsp:fallback>
<p>Unable to start plugin.</p>
</jsp:fallback>
</jsp:plugin>
Вы можете выполнять широкое множество задач динамической обработки с помощью компонентов JavaBeans в соединении со скриплетами, в том числе: организацию доступа к базам данных, использование enterprise services (служб), таких как электронная почта (email) или каталоги (directories), и управление потоком. Один из недостатков скриплетов однако состоит в том, что они могут сделать JSP страницу более трудной для поддержки. В качестве альтернативы JSP технология предусматривает механизм, называемый заказными тегами, которые позволяют вам инкапсулировать динамическую функциональность в объекты, которые доступны благодаря расширениям языка JSP. Заказные теги приносят выгоды от другого типа компоновки JSP страницы.
Например, повторный вызов скриплета, используемого в цикле, и отображающего содержимое карты покупок примера Duke'sBookstore:
<%
Iterator i = cart.getItems().iterator();
while (i.hasNext()) {
ShoppingCartItem item =
(ShoppingCartItem)i.next();
...
%>
<tr>
<td align="right" bgcolor="#ffffff">
<%=item.getQuantity()%>
</td>
...
<%
}
%>
Заказной тег iterate устраняет логическую часть кода и управляет скриптовой переменной item, которая ссылается на переменные в карте покупок:
<logic:iterate id="item"
collection="<%=cart.getItems()
<tr>
<td align="right" bgcolor="#ffffff">
<%=item.getQuantity()%>
</td>
...
</logic:iterate>
Заказные теги упаковывают и распространяют как модуль, называемый библиотекой тегов. Синтаксис заказных тегов тот же самый, что и для JSP элементов, а именно <prefix:tag>, но для заказных тегов этот prefix определяется пользователем библиотеки тегов и tag определяется его разработчиком. Раздел CustomTagsinJSPPages объясняет, как использовать и разрабатывать заказные теги.
Заключение
В принципе, любая задача, решаемая посредством JSP, может быть решена с помощью сервлетов. Однако на практике JSP упрощают процедуру генерации HTML- содержимого и обеспечивают более высокую надежность. Это достигается за счет разделения статического текста, используемого для оформления Web-страницы, и Java-кода, генерирующего динамические фрагменты документа. Работу по созданию различных частей такого документа легко распределить между разными группами разработчиков.
В результате лишь на немногих узлах используются только сервлеты и не применяются JSP. Однако это не означает, что разработчики программ, предназначенных для выполнения на стороне сервера, полностью отказались от применения сервлетов в пользу JSP. Как правило, для одних задач используются сервлеты, для других — JSP, а для третьих — сочетание сервлетов и JSP.
В курсовой работе было рассказано об основных средствах JSP и показано, как происходит управление сервлетами, генерируемыми на основе JSP. Также узнали о применении компонентов bean и пользовательских дескрипторов. Эти возможности позволяют поручить сопровождение сложных документов сотрудникам, не имеющим опыта в программировании на языке Java. И, наконец, рассмотрено способы объединения сервлетов и JSP для решения сложных задач.