- •Содержание
- •Введение
- •1. Основные понятия языка Java иUml
- •Простое приложение
- •Простой апплет
- •Классы и объекты
- •Базовые типы данных
- •Операторы
- •If (obj instanceof java.Awt.Font) {/*операторы*/}
- •Операторы управления
- •UmLкак язык описания объектно-ориентированных программ
- •2. Библиотека стандартаJava_se Наследование
- •Использование super и this
- •Абстрактные классы и интерфейсы
- •Переопределение методов
- •Перегрузка методов
- •Полимофизм и расширяемость
- •Статические методы и полиморфизм
- •Внутренние (inner) классы
- •Вложенные классы (nested)
- •Анонимные классы
- •Использование библиотек классов Файлы. Потоки ввода/вывода
- •Обработка исключительных ситуаций
- •Коллекции
- •Графические интерфейсы пользователя
- •События и их обработка
- •Элементы управления
- •2. Библиотека стандартаJava_ee
- •ТехнологииJsp
ТехнологииJsp
Технология Java Server Pages (JSP) была разработана компанией Sun Microsystems, чтобы облегчить создание страниц с динамическим содержанием. Страница JSP обеспечивает разделение динамической и статической частей страницы, результатом чего является возможность изменения дизайна страницы, не затрагивая динамическое содержание. Это свойство используется при разработке и поддержке страниц, так как дизайнерам нет необходимости знать, как работать с динамическими данными. Один и тот же функционал может иметь представления HTML для браузера и WML для сотового телефона с WAP, так называемый “Device Independence”. Например, пусть существуют страницы*.jspHTML-формата в папке/iexplorerи те же*.jspWML-формата в папке/wap, а из сервлета запрос перенаправляется на нужный диалог в зависимости от типа устройства, т.е. имяJSP = <device type>/<dialog name>.jsp, таким образом, в качестве login-диалога для WAP-устройства будет вызван/wap/login.jsp.
Результат работы JSP можно легко представить, зная правила трансляции JSP в сервлет, в частности в его service()-метод.
под терминами “динамическое/статическое содержание” обычно понимаются не части JSP, а динамическое/статическое содержание Web-приложения, а именно:
динамические ресурсы – изменяемые в процессе работы: это и сервлеты, и JSP;
статические ресурсы – не изменяемые в процессе работы, например HTML, JavaScript, картинки и т.д.
Смысл разделения динамического и статического содержания в том, что статические ресурсы могут находиться под управлением HTTP-сервера, в то время как динамические нуждаются в движке (ServletEngine) и в большинстве случаев в доступе к уровню данных. Поэтому, имея разделенный на три зоны контент в стандартной инфраструктуре (внешний ивнутренний firewall, DMZ, связка “HTTP-сервер – сервер приложений”), можно размещать статические ресурсы перед firewall, тем самым повышаяпроизводительность в несколько, раз не нарушая требований безопасности.
Рекомендуется разрабатывать параллельно две части: Web-прило-жение, состоящее только из динамических ресурсов, иWeb-приложение, состоящее только из статических ресурсов.
Чтобы облегчить внедрение динамической структуры, JSP использует ряд тегов, которые дают возможность проектировщику страницы вставить значение полей объекта JavaBean в файл JSP.
Некоторые преимущества использования JSP-технологии над другими методами создания динамического содержания страниц:
Разделение динамического и статического содержания.
Возможность разделить логику приложения и дизайн Web-стра-ницы снижает сложность разработки Web-сайтов и упрощает их поддержку.
Независимость от платформы.
Так как JSP-технология, основанная на языке программирования Java, не зависит от платформы, то JSP могут выполняться практически на любом Web-сервере. Разрабатывать JSP можно на любой платформе.
Многократное использование компонентов.
Использование JavaBeans и Enterprise JavaBeans (EJB) позволяет многократно использовать компоненты, что ускоряет создание Web-сайтов.
Скрипты и теги.
Спецификация JSPобъявляет собственные теги, кроме того, JSP поддерживают как JavaScript так и HTML-теги. JavaScript обычно используется, чтобы добавить функциональные возможности на уровне HTML-страницы. Теги обеспечивают возможность использования JavaBean и выполнение обычных функций.
Содержимое Java Server Pages (теги HTML, теги JSP и скрипты) переводится в сервлет код-сервером. Этот процесс ответствен за трансляцию как динамических, так и статических элементов, объявленных внутри файла JSP. Об архитектуре сайтов, использующих JSP/Servlet-технологии, часто говорят как о thin-client (использование ресурсов клиента незначительно), потому что большая часть логики выполняется на сервере.
Процессы, выполняемые с файлом JSP при первом вызове или при его изменении:
1. Браузер делает запрос к странице JSP.
2. JSP-engine анализирует содержание файла JSP.
3. JSP-engine создает временный сервлет с кодом, основанным на исходном тексте файла JSP, при этом контейнер транслирует операторыJavaв метод_jspService(). Если нет ошибок компиляции, то этот метод вызывается для непосредственной обработки запроса. Полученный сервлет ответствен за исполнение статических элементов JSP, определенных во время разработки в дополнение к созданию динамических элементов.
4. Полученный текст компилируется в файл *.class.
5. Вызываются методыinit()иservice()(doGet()илиdoPost()), и сервлет логически исполняется.
6. Сервлет установлен. Комбинация статическогоHTMLи графики вместе с динамическими элементами, определенными в оригиналеJSP, пересылаются браузеру через выходной поток объекта ответаServletResponse.
Последующие вызовы файла JSP просто вызовут сервисный метод сервлета. Сервлет используется до тех пор, пока сервер не будет остановлен и сервлет не будет выгружен вручную либо пока не будет изменен файл JSP.
Рис. 4.1.Рабочий циклJSP
JSP-кодJavaзаключается в специальные теги, которые указывают контейнеру, чтобы он использовал этот код для генерации сервлета или его части. Таким образом поддерживается документ, который одновременно содержит и страницу, и кодJava, который управляет этой страницей. Статические частиHTML-страниц посылаются в виде строк в методwrite(). Динамические части включаются прямо в код сервлета. С этого момента страница ведет себя как обычнаяHTML-страница с ассоциированным сервлетом.
JSP составляется из стандартных HTML-тегов, JSP-тегов и пользовательских JSP-тегов. В спецификации JSP 1.1 существует шесть основных тегов:
<%@ директива %>
<%! объявление %>
<% скриптлет %>
<%= вычисляемое выражение %>
<%-- JSP-комментарий --%>
<!-- HTML-комментарий -->
Однако наиболее используемыми являются стандартные теги версии JSP 2.0:
jsp:useBean – позволяет использовать экземпляр компонента JavaBean. Если экземпляр с указанным идентификатором не существует, то он будет создан с областью видимости page (страница), request (запрос), session (сессия) или application (приложение). Объявляется, как правило, с атрибутами id (имя объекта), scope (область видимости), class (полное имя класса), type (по умолчанию class).
<jsp:useBean id=”ob”
scope=”session”
class=”test.MyBean” />
Создан объект ob класса MyBean, и в дальнейшем через это имя можно вызывать доступные методы класса.
package test;
public class MyBean {
private String info = "нет информации";
public String getInfo() {
return info;
}
public void setInfo(String s) {
info = s;
}
}
jsp:setProperty – позволяет устанавливать значения полей указанного в атрибуте name объекта:
<jsp:setProperty name=”ob”
property=”info”
value=”привет” />
jsp:getProperty – получает значения полей указанного объекта, преобразует его в строку и отправляет в неявный объект out:
<jsp:getProperty name=”ob” property=”info” />
jsp:include – позволяет включать файлы в генерируемую страницу при запросе страницы:
<jsp:include page=”относительный URL”
flush=”true”/>
jsp:forward – позволяет передать запрос другой странице:
<jsp:forward page=”относительный URL”/>
jsp:plugin – замещается тэгом <OBJECT> или <EMBED>, в зависимости от типа броузера, в котором будет выполняться подключаемый апплет или Java Bean.
jsp:params – группирует параметры внутри тега jsp:plugin.
jsp:param – добавляет параметры в объект запроса, например в элементах forward, include, plugin.
jsp:fallback – указывает содержимое, которое будет использоваться браузером клиента, если подключаемый модуль не сможет запуститься. Используется внутри элемента plugin.
jsp:text – содержит текстовую информацию.
В качестве примера можно привести следующий фрагмент:
<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>
Код апплета находится в примере, у которого должно быть имя test.com.ReadParam должен быть расположен в корне папки /WEB-INF, а не в папке classes.
Элементы <jsp:attribute>, <jsp:body>, <jsp:invoke>, <jsp:doBody>, <jsp:element>, <jsp:output> используются в основном при включении в страницу пользовательских тегов.