1 Java J2EE. JSP
2 Технология Java Server Pages (JSP) Java Server Pages (JSP) обеспечивает разделение динамической и статической частей страницы, результатом чего является возможность изменения дизайна страницы, не затрагивая динамическое содержание. Содержание Web-приложения: динамические ресурсы, изменяемые в процессе работы: сервлеты, JSP, а также java-код; статические ресурсы, не изменяемые в процессе работы – HTML, Java-Script, изображения и т.д. Статические ресурсы могут находиться под управлением HTTP- сервера. Динамические ресурсы нуждаются в движке (Servlet Engine) и в большинстве случаев в доступе к уровню данных.
3 Преимущества JSP-технологии Разделение динамического и статического содержания. (логика и дизайн) Независимость от платформы. Многократное использование компонентов (использование JavaBeans и Enterprise JavaBeans (EJB)) Скрипты и теги. Спецификация JSP объявляет собственные теги, кроме того, JSP поддерживают как JavaScript, так и HTML-теги. JavaScript обычно используется, чтобы добавить функциональные возможности на уровне HTML-страницы. Теги обеспечивают возможность использования JavaBean и выполнение обычных функций.
4 страница JSP страница JSP представляет собой текстовый документ, который содержит текст двух типов: статические исходные данные, которые могут быть оформлены в одном из текстовых форматов HTML, SVG, WML, или XML,HTMLSVGWMLXML JSP элементы, которые конструируют динамическое содержимое. Кроме этого могут использоваться библиотеки JSP тегов, а также EL (Expression Language), для внедрения Java-кода в статичное содержимое JSP-страниц. ELExpression Language
5 Вызов JSP Первое обращение: 1. Браузер делает запрос к странице JSP. 2. JSP-engine анализирует содержание файла JSP. 3. JSP-engine создает временный сервлет с кодом, основанным на исходном тексте файла JSP, при этом контейнер транслирует операторы Java в метод _jspService(). 4. Полученный код компилируется в файл *.class. 5. Вызываются методы init() и _jspService(), и сервлет логически исполняется. 6. Сервлет на основе JSP установлен. Комбинация статического HTML и графики вместе с динамическими элементами, определенными в оригинале JSP, пересылаются браузеру через выходной поток объекта ответа ServletResponse. Последующие обращения к файлу JSP просто вызовут метод _jspService() сервлета
6 Рабочий цикл JSP Сервлет используется до тех пор пока: - сервер не будет остановлен - сервлет не будет выгружен вручную - не будет изменен файл JSP EE02ex01: простейшая страница JSP код сервлета
7 Взаимодействие сервлета и JSP Страница JSP формирует пользовательский интерфейс и отображает информацию, переданную с сервера. Сервлет выполняет роль контроллера запросов и ответов. Передачу информации между JSP и сервлетом можно осуществлять, в частности, с помощью добавления атрибутов к объектам: HttpServletRequest, HttpSession HttpServletContext. EE02ex02: пример вызова сервлета из JSP с последующим вызовом другой JSP
8 Основные теги спецификации JSP 2.0 используются для установки параметров серверной страницы JSP содержит переменные Java и методы, которые вызываются в expression-блоке и являются полями генерируемого сервлета. Объявление не должно производить запись в выходной поток out страницы, но может быть использовано в скриптлетах и выражениях. вживление Java-кода в JSP-страницу операторы языка Java, которые вычисляются, после чего результат вычисления преобразуется в строку String и посылается в поток out комментарий, который не отображается в исходных кодах JSP-страницы после этапа выполнения
9 Стандартные элементы action jsp:declaration – объявление, аналогичен тегу ; jsp:scriptlet – скриптлет, аналогичен тегу ; jsp:expression – скриптлет, аналогичен тегу ; jsp:text – вывод текста; jsp:useBean – позволяет использовать экземпляр компонента Java Bean. jsp:setProperty – позволяет устанавливать значения полей указанного в атрибуте name объекта. jsp:getProperty – получает значения поля указанного объекта, преобразует его в строку и отправляет в неявный объект out
10 Стандартные элементы action jsp:include – позволяет включать файлы в генерируемую страницу при запросе страницы jsp:forward – позволяет передать запрос другой странице jsp:plugin – замещается тегом или, в зависимости от типа браузера, в котором будет выполняться подключаемый апплет или Java Bean jsp:params – группирует параметры внутри тега jsp:plugin jsp:param – добавляет параметры в объект запроса, например в элементах forward, include, plugin jsp:fallback – указывает содержимое, которое будет использоваться браузером клиента, если подключаемый модуль не сможет запуститься. Используется внутри элемента plugin.
11 Стандартные элементы action Элементы, используются в основном при включении в страницу пользовательских тегов.
12 JSP-документ Корректный XML-документ, который: ссылается на определенное пространство имен, содержит стандартные действия JSP, пользовательские теги, теги ядра JSTL, XML-эквиваленты директив JSP. В JSP-документе директивы JSP неприменимы, их нужно заменять стандартными действиями и корректными тегами. JSP-документы необходимо сохранять с расширением.jspx.
13 Примеры Директива taglib для обычной JSP: для JSP-документа: Директива page для обычной JSP: для JSP-документа: Директива include для обычной JSP: для JSP-документа: EE02ex03: page.jsp, page.jspx
14 JSTL (JSP Standard Tag Library) Библиотеку JSTL версии jstl jar standard jar или более позднюю версию можно загрузить c сайта apache.org. Библиотеки следует разместить в каталоге /lib проекта. EE02ex04: simple.jspx
15 возможности JSTL поддержка Expression Language, что позволяет разработчику писать простые выражения внутри атрибутов тега и предоставляет прозрачный доступ к переменным в различных областях видимости страницы; организация условных переходов и циклов, основанная на тегах, а не на скриптовом языке; простое формирование доступа (URL) к различным ресурсам; простая интернационализация JSP; взаимодействие с базами данных; обработка XML, а также форматирование и разбор строк.
16 Expression Language (EL) EL используется для упрощения доступа к данным, хранящимся в различных областях видимости (page,request, application) и вычисления простых выражений. EL вызывается при помощи конструкции ${имя}. Начиная с версии спецификации JSP 2.0 / JSTL 1.1, EL является частью JSP и поддерживается без всяких сторонних библиотек.
17 EL-идентификатор EL-идентификатор ссылается на переменную, возвращаемую вызовом PageContext.findAttribute(имя). В общем случае переменная может быть сохранена в любой области видимости: page(PageContext), request(HttpServletRequest), session (HttpSession), application (ServletContext). В случае если переменная не найдена, возвращается null. Возможен доступ к параметрам запроса через предопределённый объект paramValues и к заголовкам запроса через requestHeaders.
18 Доступ к данным Данные приложения, как правило, состоят из объектов, соответствующих спецификации JavaBeans, или представляют собой коллекции, такие как List, Map,Array и др. EL предоставляет доступ к этим объектам при помощи операторов. и []. EE02ex04: simple2.jspx
19 Операторы в EL Стандартные операторы отношения: == (или eq), != (или neq), < (или lt), > (или gt), = (или ge). Логические операторы: && (или and), || (или or), ! (или not). Оператор empty – используется для проверки переменной на null, или пустое значение. Арифметические операторы: +, -, *, / (или div), % (или mod).
20 Автоматическое приведение типов Данные не всегда имеют тот же тип, который ожидается в EL- операторе. EL использует набор правил для автоматического приведения типов. Например, если оператор ожидает параметр типа Integer, то значение идентификатора будет приведено к типу Integer (если это возможно).
21 Неявные объекты requestзапрос клиента javax.servlet.http.HttpServletRequest страница responseответ клиенту javax.servlet.http.HttpServletResponse страница pageContextконтекст JSP-страницы, предоставляет доступ к неявным объектам javax.servlet.jsp.PageContext. страница sessionпредоставляет информацию о сессии клиента javax.servlet.http.HttpSession сессия applicationконтейнер, в котором исполняется JSP-страница javax.servlet.ServletContext приложение
22 Неявные объекты outвыходной поток сервлета javax.servlet.jsp.JspWriter страница configпараметры конфигурации сервлета javax.servlet.ServletConfig страница pageссылка this для текущего экземпляра данной страницы java.lang.Object страница exceptionисключение которое передается странице сообщения об ошибках и доступно только на ней java.lang.Throwable страница