Saint Petersburg, 2012 Java Lecture 11 Web/Servlets
History HTTP был предложен в марте 1991 года Тимом Бернерсом-Ли, как механизм для доступа к документам в Интернете и облегчения навигации посредством использования гипертекста. Самая ранняя версия протокола HTTP/0.9 была впервые опубликована в январе 1992 г. (хотя реализация датируется 1990 годом). Спецификация протокола привела к упорядочению правил взаимодействия между клиентами и серверами HTTP, а также чёткому разделению функций между этими двумя компонентами. Были задокументированы основные синтаксические и семантические положения.1991 годаТимом Бернерсом-ЛиИнтернетегипертекста годомсинтаксическиесемантические 2
HTTP 3 HTTP протокол прикладного уровня передачи данных. Основой HTTP является технология «клиент-сервер». Протокол без поддержки состояния. Заголовок запроса: Заголовок ответа:
Web Server 4
Web Client 5
Request 6
Response 7
HTTP Methods 8
Red or Blue pill POST GETA user is returning a login name and password POST GETA user is requesting a new page via a hyperlink POST GETA chat room user is sending a written response POST GETA user hits the 'next' button to see the next page POST GETA user hits the 'log out' button on a secure banking site POST GETA user hits the 'back' button on the browser POST GETA user sends a name and address form to the server 9
Go ahead… 10
Dynamic generation of web-pages 11
Servlet Java-программа, выполняющейся на стороне сервера и расширяющей функциональные возможности сервера Взаимодействует с клиентами посредством принципа запрос-ответ Реализует Servlet интерфейс, который определяет методы жизненного цикла Пакеты javax.servlet и javax.servlet.http обеспечивают интерфейсы и классы для создания сервлетов. 12
Servlet example 13
MVC Model: представляет данные для View, реагирует на запросы от Controller, изменяя свое состояние View: отвечает за отображение информации Controller: интерпретирует данные, введенные пользователем, информирует Model и View об изменениях 14
Web Container Серверная программа расширяющая возможности WEB-контейнера Обеспечивает жизненный цикл сервлетов в соответствии с правилами, определёнными в спецификациях При получении WEB-контейнером запроса для сервлета, он загружает его в JVM (если он еще не загружен) и выполняет его 15
Servlets Lifecycle 16
Servlets work 17
Servlets tasks Установить MIME type (text/html, audio/wav). setContentType(String) Установить поля заголовка. setHeader(String, String) Получить PrintWriter или ServletOutputStream. getWriter() getOutputStream() Перенаправление запроса 18
Dispatching Request Dispatcher: 19 Redirect
Servlets parameter [1] 20
Servlets parameter [2] 21
Web-Project Structure 22
Web-Project Structure on Tomcat Server 23
DD 24
Servlets and Applications Parameters 25
Parameters Hierarchy 26
Data Storage 27
API for attributes Для этих целей используются объекты: context, request и session реализующие соответственно интерфейсы ServletContext, ServletRequest и HttpSession Все они имеют следующие методы: Object getAttribute(String name) void setAttribute(String name, Object value) void removeAttribute(String name) Enumeration getAttributeNames() 28
Listener Обеспечивают возможность выполнить некоторые действия в ответ на определенные события - такие, как запуск и остановка WEB-приложения или создание новой сессии Java класс реализующий определенный интерфейс. Интерфейс сообщает контейнеру обработчиком какого события класс является. 29
ServletContextListener [1] Класс реализующий интерфейс ServletContextListener является обработчиком событий создания и уничтожения контекста приложения public void contextInitialized(ServletContextEvent) вызывается, когда веб-приложение готово к обработке public void contextDestroyed(ServletContextEvent) вызывается, когда веб-приложени готовится к закрытию 30
ServletContextListener [2] 31
ServletContextListener [3] 32
Hometask ServletFilter? FrontController? 33
References Head First: Servlets & JSP (2 nd edition). OReilly