АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Вопрос 18.6

Читайте также:
  1. E. Некорректный вопрос
  2. I. Перечень вопросов и тем для подготовки к экзамену
  3. II. Вопросительное предложение
  4. VII. Вопросник для анализа учителем особенностей индивидуального стиля своей педагогической деятельности (А.К. Маркова)
  5. X. примерный перечень вопросов к итоговой аттестации
  6. Аграрный вопрос
  7. Анализ влияния рекламы на продвижение противопростудных средств
  8. Балканский вопрос в начале XXв. Русско-германские отношения
  9. Бланк вопросов
  10. БЛОК № 1 (1 – 10 вопрос)
  11. БЛОК № 2 (11 – 20 вопрос)
  12. Блок № 4 (31 – 40 вопрос)

Как можно получить всю информацию из запроса, посланного следующей формой? (выберите два варианта ответа)

<HTML><BODY>

<FORM action="/com/MyServlet">

<INPUT type="file" name="filename">

<INPUT type="submit" value="Submit">

</FORM></BODY></HTML>

1) request.getParameterValues("filename");

2) request.getAttribute("filename");

3) request.getInputStream();

4) request.getReader();

5) request.getFileInputStream().

 

 

 
Глава 19

Java Server Pages

Технология Java Server Pages (JSP) была разработана компанией Sun Microsystems, чтобы облегчить создание страниц с динамическим содержанием.

В то время как сервлеты наилучшим образом подходят для выполнения контролирующей функции приложения в виде обработки запросов и определения вида ответа, страницы JSP выполняют функцию формирования текстовых документов типа HTML, XML, WML и некоторых других.

под терминами “динамическое/статическое содержание” обычно понимаются не части JSP, а содержание Web-приложения:

1) динамические ресурсы, изменяемые в процессе работы: сервлеты, JSP, а также java-код;

2) статические ресурсы, не изменяемые в процессе работы – HTML, JavaScript, изображения и т.д.

Смысл разделения динамического и статического содержания в том, что статические ресурсы могут находиться под управлением HTTP-сервера, в то время как динамические нуждаются в движке (Servlet Engine) и в большинстве случаев в доступе к уровню данных.

Рекомендуется разделить и разрабатывать параллельно две части приложения: Web-приложение, состоящее только из динамических ресурсов, и Web-приложение, состоящее только из статических ресурсов.

Некоторые преимущества использования JSP-технологии над другими методами создания динамического содержания страниц:

d) Разделение динамического и статического содержания.

Возможность разделить логику приложения и дизайн Web-страницы снижает сложность разработки Web-приложений и упрощает их поддержку.

d) Независимость от платформы.

Так как JSP-технология, основанная на языке программирования Java, не зависит от платформы, то JSP могут выполняться практически на любом Web-сервере. Разрабатывать JSP можно на любой платформе.

e) Многократное использование компонентов.

Использование JavaBeans и Enterprise JavaBeans (EJB) позволяет мно­гократно использовать компоненты, что ускоряет создание Web-сайтов.

f) Скрипты и теги.

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

Чтобы облегчить внедрение динамической структуры, JSP использует ряд тегов, которые дают возможность проектировщику страницы вставить значение полей объекта JavaBean в файл JSP.

Содержимое Java Server Pages (теги HTML, теги JSP и скрипты) переводится в сервлет код-сервером. Этот процесс ответствен за трансляцию как динами­ческих, так и статических элементов, объявленных внутри файла JSP. Об архитектуре сайтов, использующих JSP/Servlet-технологии, часто говорят как о thin-client (использование ресурсов клиента незначительно), потому что большая часть логики выполняется на сервере.

JSP составляется из стандартных HTML-тегов, JSP-тегов, action-тегов, JSTL и пользовательских тегов. В спецификации JSP 2.0 существует пять основных тегов:

<%@ директива %> –используются для установки параметров серверной страницы JSP.

<%! объявление %> –содержит переменные Java и методы, которые вызываются в expression-блоке и являются полями генерируемого сервлета. Объявление не должно производить запись в выходной поток out страницы, но может быть использовано в скриптлетах и выражениях.

<% скриптлет %> –вживление Java-кода в JSP-страницу. Скриптлеты обыч­но используют маленькие блоки кода и выполняются во время обработки запроса клиента. Когда все скриптлеты собираются воедино в том порядке, в котором они записаны на странице, они должны представлять собой правильный код языка программирования. Контейнер помещает код Java в метод _jspService() на этапе трансляции.

<%= вычисляемое выражение %> –операторы языка Java, которые вычисляются, после чего результат вычисления преобразуется в строку String и посылается в поток out.

<%-- JSP-комментарий --%>–комментарий, который не отображается в исходных кодах JSP-страницы после этапа выполнения.

Стандартные элементы action

Большинство тегов, объявленных выше, применяются не так уж часто. Наиболее используемыми являются стандартные действия версии JSP 2.0. Они позволяют создавать правильные JSP –документы с помощью следующих тегов:

1) jsp:declaration – объявление, аналогичен тегу <%!... %>;

2) jsp:scriptlet – скриптлет, аналогичен тегу <%... %>;

3) jsp:expression – скриптлет, аналогичен тегу <%=... %>;

4) jsp:text – вывод текста;

2 jsp:useBean – позволяет использовать экземпляр компонента Java Bean. Если экземпляр с указанным идентификатором не существует, то он будет создан с областью видимости page (страница), request (запрос), session (сессия) или application (приложение). Объявляется, как правило, с атрибутами id (имя объекта), scope (область видимости), class (полное имя класса), type (по умолчанию class).

<jsp:useBean id=”ob”

scope=”session”

class=”test.MyBean” />

Создан объект ob класса MyBean, и в дальнейшем через этот объект можно вызывать доступные методы класса. Специфика компонентов JavaBean в том, что если компонент имеет поле field, экземпляр компонента имеет параметр field, а метод, устанавливающий значение, должен называться setField(type value), возвращающий значение – getField().

package test;

public class MyBean {

private String field = "нет информации";

public String getField() {

return info;

}

public void setField(String f) {

field = f;

}

}

5) jsp:setProperty – позволяет устанавливать значения полей указанного в атрибуте name объекта. Если установить значение property в «*», то значения свойств компонента JavaBean будут установлены таким образом, что будет определено соответствие между именами параметров и именами методов-установщиков (setter-ов) компонента:

<jsp:setProperty name=”ob”

property=”field”

value=”привет” />

e) jsp:getProperty – получает значения поля указанного объекта, преобразует его в строку и отправляет в неявный объект out:

<jsp:getProperty name=”ob” property=”field” />

f) jsp:include – позволяет включать файлы в генерируемую страницу при запросе страницы:

<jsp:include page=” относительный URL

flush=”true”/>

g) jsp:forward – позволяет передать запрос другой странице:

<jsp:forward page=” относительный URL ”/>

h) jsp:plugin – замещается тегом <OBJECT> или <EMBED>, в зависимости от типа браузера, в котором будет выполняться подключаемый апплет или Java Bean.

i) jsp:params – группирует параметры внутри тега jsp:plugin.

6) jsp:param – добавляет параметры в объект запроса, например в элементах forward, include, plugin.

7) jsp:fallback – указывает содержимое, которое будет использоваться браузером клиента, если подключаемый модуль не сможет запуститься. Используется внутри элемента plugin.

В качестве примера можно привести следующий фрагмент:

<jsp:plugin type=”bean | applet”

code=”test.com.ReadParam”

width=”250”

height=”250”>

<jsp:params>

<jsp:param name=”bNumber” value=”7” />

<jsp:param name=”state” value=”true” />

</jsp:params>

<jsp:fallback>

<p> unable to start plugin </p>

</jsp:fallback>

</jsp:plugin>

Код апплета находится в примере 5 главы 11, и пакет, в котором он объявлен, должен быть расположен в корне папки /WEB-INF, а не в папке /classes.

Элементы <jsp:attribute>, <jsp:body>, <jsp:invoke>, <jsp:doBody>, <jsp:element>, <jsp:output> используются в основном при включении в страницу пользовательских тегов.

JSP-документ

Предпочтительно создавать JSP-страницу в виде JSP-документа – кор­рект­ного XML-документа, который ссылается на определенное пространство имен, содержит стандартные действия JSP, пользовательские теги и теги ядра JSTL, XML-эквиваленты директив JSP. В JSP-документе вышеперечисленные пять тегов неприменимы, поэтому их нужно заменять стандартными действиями и кор­ректными тегами. JSP-документы необходимо сохранять с расширением .jspx.

Директива taglib для обычной JSP:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core"

prefix="c"%>

для JSP-документа:

<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core"/>

Директива page для обычной JSP:

<%@ page contentType="text/html"%>

для JSP-документа:

<jsp:directive.page contentType="text/html" />

Директива include для обычной JSP:

<%@ include file="file.jspf"%>

для JSP-документа:

<jsp:directive.include file="file.jspf" />

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

<!--пример # 1: обычная jsp-страница: page.jsp -->

<%@ page contentType="text/html; charset=Cp1251" %>

<html><head><title>JSP-страница</title></head>

<%! private int count = 0;

String version = new String("J2EE 1.5");

private String getName(){ return "J2EE 1.6";} %>

<% out.println("Значение count: "); %>

<%= count++ %>

<br/>

<% out.println("Значение count после инкремента: " + count); %>

<br/>

<% out.println("Старое значение version: "); %>

<%= version %>

<br/>

<% version=getName();

out.println("Новое значение version: " + version); %>

</html>

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

<!--пример # 2: правильный jsp-документ: page.jspx -->

<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"

version="2.0">

<jsp:directive.page contentType=

"text/html; charset=UTF-8" />

<html><body>

<jsp:declaration>

private int count = 0;

String version = new String("J2EE 1.5");

private String getName(){ return "J2EE 1.6";}

</jsp:declaration>

<jsp:scriptlet>

out.println("Значение count: ");

</jsp:scriptlet>

<jsp:expression>

count++

</jsp:expression>

<br />

<jsp:scriptlet>

out.println("Значение count после инкремента:"

+ count);

</jsp:scriptlet>

<br/>

<jsp:scriptlet>

out.println("Старое значение version: "); </jsp:scriptlet>

<jsp:expression> version </jsp:expression>

<br/>

<jsp:scriptlet> version=getName();

out.println("Новое значение version: " + version);

</jsp:scriptlet>

</body></html>

</jsp:root>

Далее в главе примеры будут приведены в виде JSP-документов.

JSTL

JSP-страницы, включающие скриптлеты, элементы action (стандартные действия) и пользовательские теги, не могут быть технологичными без использования JSTL (JSP Standard Tag Library). Создание страниц с применением JSTL позволяет упростить разработку и отказаться от вживления Java-кода в JSP. Как было показано ранее, страницы со скриптлетами трудно читаемы, что вызывает проблемы как у программиста, так и у веб-дизайнера, не обладающего глубокими познаниями в Java.

Библиотеку JSTL версии 1.1.2 (jstl-1.1.2.jar и standard-1.1.2.jar) или более позднюю версию можно загрузить c сайта apache.org. Библиотеки следует разместить в каталоге /lib проекта. При указании значения параметра xmlns элемента root (для JSP-страницы значение параметра taglib uri="") необходимо быть внимательным, так как если адрес будет указан неправильно, JSP-страница не сможет иметь доступ к тегам JSTL. Проверить правильность значение параметра uri (оно же справедливо и для параметра xmlns) можно в файле подключаемой библиотеки (например c.tld). Простейшая JSP с применением тега JSTL, выводящим в браузер приветствие будет выглядеть следующим образом:

<!--пример # 3: правильный jsp-документ: simple.jspx -->

<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"

xmlns:c=http://java.sun.com/jsp/jstl/core

version="2.0">

<jsp:directive.page contentType=

"text/html; charset=Utf-8"/>

<html><body>

<c:out value="Welcome to JSTL"/>

</body></html>

</jsp:root>

Тег <c:out/> отправляет значение параметра value в поток JspWriter.

JSTL предоставляет следующие возможности:

- поддержку Expression Language, что позволяет разработчику писать простые выражения внутри атрибутов тега и предоставляет “прозрачный” доступ к переменным в различных областях видимости страницы;

- организацию условных переходов и циклов, основанную на тегах, а не на скриптовом языке;

- простое формирование доступа (URL) к различным ресурсам;

- простую интернационализацию JSP;

- взаимодействие с базами данных;

- обработку XML, а также форматирование и разбор строк.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.017 сек.)