Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемЕгор Самокрутов
1 Веб - сервер Apache Tomcat 6
2 Содержание лекции 1. Ключевые вопросы организации веб - сервера 1.Понятие веб - сервера и его функции 2.Протокол HTTP 3.Аутентификация и авторизация пользователей 4.Управление сессиями и Cookies 5.Постоянное HTTP - соединение 2. Веб - сервер Apache Tomcat 6 1.Структура каталогов сервера 2.Структура J2EE веб - приложения 3.Введение в сервлеты 4.Основные классы Servlet API 5.Использование Comet Servlet 6.JSP – Java Server Pages 3. Конфигурация веб - приложения для Tomcat 1.Дескриптор контекста веб - приложения 2.Дескриптор развёртывания веб - приложения
3 1.1 Понятие веб - сервера и его функции Веб - сервер – это программное обеспечение, обеспечивающее доставку контента конечному пользователю по сети. Веб - сервер реализует серверную часть протокола HTTP.
4 Функции и особенности веб - серверов : передача контента пользователю ; получение контента от пользователей ; поддержка динамически генерируемых страниц ; аутентификация и авторизация пользователей ; ведение журнала обращений пользователей к ресурсам ; поддержка HTTPS для защищённых соединений с клиентами.
5 Реализации веб - серверов : исторически первым считается веб - сервер CERN httpd (1991 год ) java: Apache Tomcat Jetty другие : Apache IIS Nginx Lighttpd
6 1.2 Протокол HTTP HyperText Transfer Protocol - текстовый протокол передачи данных прикладного уровня Текущая версия – 1.1. Принята в 1999 году. В этой версии добавлен режим « постоянного соединения » с сервером.
7 HTTP-пакет состоит из : Стартовая строка GET /page.php HTTP/1.1 – запрос HTTP/ Not Found – ответ Заголовки - разделённые двоеточием пары параметр - значение Content-Type: text/plain; charset=utf8 Тело сообщения – любой текст, в том числе закодированный или сжатый HTTP-методы : HEAD, GET, OPTIONS, TRACE - безопасные POST, PUT, DELETE - небезопасные
9 1. 3 Аутентификация и авторизация пользователей Basic access authentication - логин и пароль кодируются с помощью Base64, поддерживается всеми браузерами Digest access authentication - логин и пароль шифруются алгоритмом MD5 При доступе к защищённому контенту клиент получает ответ : HTTP/ Authorization Required WWW-Authenticate: Basic realm="Secure Area" либо WWW-Authenticate: Digest nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093" Авторизация не поддерживается протоколом HTTP и полностью возлагается на веб - сервер
10 1. 4 Управление сессиями и Cookies Веб - приложению бывает необходимо контролировать передвижения клиентов по сайту. HTTP не отслеживает состояние своих клиентов ( stateless протокол ). Возможные решения данной проблемы : 1. Добавление параметра session _ id в URL : функции по контролю времени жизни сессии возлагаются на веб - сервер сессия не сохраняется после перезапуска браузера 2. Хранение session_id в cookies браузера. Cookies – небольшой фрагмент данных, созданный веб - сервером и хранимый на компьютере пользователя в виде файла, который браузер может пересылать веб - серверу в HTTP- запросе : функции по контролю времени жизни сессии возлагаются на браузер сессия сохраняется после перезапуска браузера
11 1.5 Постоянное HTTP- соединение Протокол HTTP поддерживает возможность отправки нескольких запросов веб - серверу сразу, не создавая при этом новых TCP- соединений. Для этого в первом запросе в заголовке передаётся параметр Connection: Keep- Alive. По умолчанию все соединения являются постоянными.
12 Преимущества постоянного соединения : меньшая нагрузка на память, сеть и процессор, т. к. создаётся меньше TCP- соединений возможность отправки сразу нескольких запросов, не дожидаясь ответов (http-pipeline) возможность ожидания ответа в течении длительного промежутка времени (server-push)
13 2. Apache Tomcat 6 Apache Tomcat 6 является одним из наиболее популярных Web - серверов, реализующих спецификацию JEE 5 ( Java Enterprise Edition). Он бесплатно распространяется для коммерческого и некоммерческого использования под лицензией Apache Software License с открытыми исходными кодами. Сам продукт, документацию и исходные коды можно найти на
14 1. Web Connector Coyote, реализующий протокол HTTP /1.1, с помощью которого пользователь, используя Интернет - браузер, может отправлять запросы к серверу и получать ответ. 2. Web Container Catalina реализует спецификацию Servlet API 2.5 из JEE 5. Servlet API является основой для всех остальных технологий Java касающихся Web и дает возможность динамически генерировать любой Web - контент, используя любые библиотеки, доступные для java. 3. Jasper Compiler – компилятор JSP - страниц ( поддерживает спецификацию JSP 2. 1 ). JSP страница является наиболее популярным ( но не единственным ) средством создания динамически - генерируемых HTML, XML и других документов, имеющих текстовое представление. Apache Tomcat состоит из следующих компонентов:
15 2.1 Структура каталогов сервера /bin/ - скрипты запуска, остановки и пр. /startup.bat (startup.sh) – запуск /shutdown.bat (shutdown.sh) – остановка /catalina.bat (catalina.sh) – скрипт запуска и настройки параметров ( вызывается из startup.bat) /conf/ - конфигурационные файлы /server.xml – основной конфигурационный файл, тут задаются порты, коннекторы и пр. /web.xml – включается во все web.xml файлы приложений по - умолчанию /lib – библиотеки сервера, все библиотеки из этой папки доступны всем приложениям. Сюда необходимо положить JDBC- драйвер, если приложение использует БД /log – логи ( протоколы ) сервера. Используются для статистики, диагностики и отладки /temp – папка для временных файлов сервера и приложений /webapps – папка для приложений. Все, что здесь лежит будет развернуто и запущено при старте сервера, а так же во время его работы (hot-deploy) /ROOT – специальное имя для корневого контекста. Приложение в этой папке будет привязано к контексту /, т. е. доступно через /docs, examples, host-manager, manager, ROOT – примеры приложений, документация и административная консоль, входящие в поставку сервера. Их можно без ущерба удалить. /work – рабочая папка сервера. Сюда будут складываться скомпилированные на лету JSP файлы, сериализованные сессии пользователей ( чтобы рестарт сервера не выкинул пользователей из системы ) и пр. Содержимое можно ( и, иногда, нужно ) без ущерба удалять.
16 2.2 Структура J2EE веб - приложения
17 2.3 Введение в сервлеты Сервлет – Java-класс, наследуемый от javax.servlet.http.HttpServlet : doGet (), обработка http-метода GET doPost (), обработка http-метода POST doPut (), обработка http-метода PUT doDelete (), обработка http-метода DELETE init () and destroy(), управление жизненным циклом сервлета getServletInfo(), возвращает описание сервлета
18 Жизненный цикл сервлета состоит из следующих шагов : 1. В случае отсутствия сервлета в контейнере. 1.Класс сервлета загружается контейнером. 2.Контейнер создает экземпляр класса сервлета. 3.Контейнер вызывает метод init(). Этот метод инициализирует сервлет и вызывается в первую очередь, до того, как сервлет сможет обслуживать запросы. За весь жизненный цикл метод init() вызывается только однажды. 2. Обслуживание клиентского запроса. Каждый запрос обрабатывается в своем отдельном потоке. Контейнер вызывает метод service() для каждого запроса. Этот метод определяет тип пришедшего запроса и распределяет его в соответствующий этому типу метод для обработки запроса. Разработчик сервлета должен предоставить реализацию для этих методов. Если поступил запрос, метод для которого не реализован, вызывается метод родительского класса и обычно завершается возвращением ошибки инициатору запроса. 3. В случае если контейнеру необходимо удалить сервлет, он вызывает метод destroy(), который снимает сервлет из эксплуатации. Подобно методу init(), этот метод тоже вызывается единожды за весь цикл сервлета.
19 Жизненный цикл сервлета:
20 Пример сервлета : public class SimpleServlet extends HttpServlet protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { out.println(" Заголовок Пример сервлета "); out.println(" "); } finally { out.close(); public String getServletInfo() { return "Пример сервлета "; }
21 2.4 Основные классы Servlet API (javax.servlet.http.*) HttpServletRequest – класс, экземпляры кот. представляют запрос от браузера String getContextPath() – возвращает путь к контексту приложения String getServletPath() – URL вызванного сервлета (JSP) HttpSession getSession() – Сессия пользователя Object getAttribute() / void setAttribute(String name, Object value) – Хранение пользовательских атрибутов, связанных с запросом String getParameter(String value) – Параметр запроса ( и для GET и для POST) void setCharacterEncoding(String enc) – Кодировка значений параметров запроса (windows-1251, UTF-8) HttpServletResponse – класс, экземпляры кот. представляют ответ браузеру void setContentType(String contentType) – MIME- тип ответа браузеру java.io.PrintWriter getWriter() – поток вывода для ответа браузеру void sendRedirect(String location) – перенаправление на другую страницу HttpSession – класс, экземпляры кот. хранят состояние сессии клиента Object getAttribute() / void setAttribute(String key, Object value) – Атрибуты сессии ( сохраняются между запросами одного клиента ) HttpServletContext – класс, экземпляры кот. представляют все web- приложение Object getAttribute() / void setAttribute(String key, Object value) – Атрибуты контекста ( общие для всех пользователей и запросов к web- приложению )
22 2.5 Использование Comet Servlet Comet - модель работы веб - приложения, при которой постоянное HTTP- соединение позволяет веб - серверу отправлять (push) данные браузеру, без дополнительного запроса со стороны браузера. Примеры : различные чаты, vkontate.ru, GWT- декларант
23 Сравнение классического подхода к построению веб - приложений с Comet Классический подход Comet подход ( он же long polling) Streaming ( он же server-push)
24 Для использования Comet сервлет должен реализовать интерфейс org.apache.catalina.CometProcessor с единственным методом event(CometEvent event), вызываемым при поступлении следующих событий : EventType.BEGIN – при создании соединения с веб - сервером EventType.READ – при получении данных для сервлета EventType.END – при завершении соединения с веб - сервером EventType.ERROR – при возникновении ошибки
25 Клиентский код для соединения с Comet сервлетом : function go(){ var url = " var request = new XMLHttpRequest(); request.open("GET", url, true); request.setRequestHeader("Content-Type","application/x-javascript;"); request.onreadystatechange = function() { if (request.readyState == 4) { if (request.status == 200){ if (request.responseText) { document.getElementById(cometresult").innerHTML = request.responseText; } go(); } }; request.send(null); }
26 Клиентский код для соединения с Streaming сервлетом : 1) На страницу вставляется скрытый iframe, загружающий данные с Streaming сервлета 2) Данные от сервера должны поступать в виде кусков javascript: function go(){ doSomething(); } 3) Соединение не будет закрываться до тех пор, пока не закроется браузер.
27 2.6 JSP – Java Server Pages Жизненный цикл 1. Жизненный цикл класса страницы2. Жизненный цикл объекта страницы Элемент JSP Представление в JSP-файлеПреобразуется в java- класс как Импорт пакета import java.util.*; Скриптлет: jsp_service() { … List items=new ArrayList(); //любой java-код … } Вывод на страницу out.write(new Date());
28 import java.util.*; public final class hello_jsp extends org.apache.jasper.runtime.HttpJspBase { // Объявляется поле в классе страницы int my_integer_field = 777; // Объявляется метод в классе страницы private String make_greeting(String name) { return "Hello, "+name + "!"; } public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException { PageContext pageContext = null; HttpSession session = null; JspWriter out = null; Object page = this; response.setContentType("text/html; charset=UTF- 8"); session = pageContext.getSession(); out = pageContext.getOut(); out.write(" \n"); out.write("\t Sample Hello world page \n"); out.write(" \n"); out.write(" \r\n"); // Скриптлет 1 for (int i=0; i
29 3. Конфигурация веб - приложения Глобальные файлы конфигурации : Конфигурационный файл сервера conf/server.xml Дескриптор развёртывания web- приложения по - умолчанию conf/web.xml Относящиеся к конкретному приложению : Дескриптор контекста web- приложения META-INF/context.xml Дескриптор развёртывания web- приложения WEB-INF/web.xml
30 3.1 Дескриптор контекста web- приложения context.xml Контекст web- приложения – это совокупность следующих параметров URL: Виртуальное имя хоста ( Относительный путь к web- приложению (/myapplication) Таким образом, при запросе от клиента страницы по адресу веб - сервер отправит запрос на обработку нужному сервлету, описанному в файле web.xml приложения myapplication
31 … Resource – подключение ресурсов, например, исчтоников данных ( БД ) Valve – подключение фильтров, например, блокирование запросов по IP- адресу Manager – использовать собственный менеджер сессий Realm – подключение источника данных, хранящий логины и пароли пользователей для их аутентификации в приложении Listener – отслеживание жизненного цикла контекста
32 Настройка источника данных (подключение к БД): Файл /META-INF/context.xml
33 3.2 Дескриптор развёртывания web- приложения web.xml Веб - приложения Java используют файл дескриптора развертывания для определения способа сопоставления URL с сервлетами, URL, для которых необходима аутентификация, и других сведений. Этот файл называется web.xml и находится в каталоге WEB- INF/web.xml и является частью стандарта Servlet для веб - приложений.
34 Сервлеты и пути URL Send Service mycompany. Send Servlet AbcServlet mycompany.AbcServlet Send Service /Send AbcServlet /*.abc
35 Безопасность и аутентификация SecurePages /admin/* GET POST Only authenticated users may pass admin Administrator role admin BASIC MySite Admin Security Check
36 Список приветственных файлов index.jsp index.html Обработчики ошибок 500 /errors/servererror.jsp Кодировка и локаль ru UTF-8 Время жизни сессии 30
37 Контрольные вопросы 1. Из каких частей состоит HTTP- пакет ? 2. Что такое Cookies? Как реализовано управление сессией с помощью Cookies? 3. Из каких основных компонентов состоит Apache Tomcat? 4. Что такое сервлет ? Что такое Comet- сервлет ? 5. Перечислите файлы конфигурации веб - приложения. Какие параметры в них можно задавать ?
38 Практика Написать веб - приложение, которое по GET- запросу выводит на страницу сумму a и b Создать сервлет SumServlet. 2. В нём переопределить метод doGet(). Используя метод getParameter() объекта request получить значения a и b 3. Используя объект response вывести результат на страницу : PrintWriter out = response.getWriter(); try { out.println(…); } finally { out.close(); } 4. Прописать созданный сервлет в дескрипторе развёртывания web.xml : SumServlet mycompany.SumServlet SumService /sum
39 Полезные ссылки b/library/wa-cometjava/ b/library/wa-cometjava/ 4. ning/Servlets/Fundamentals/servlets.html ning/Servlets/Fundamentals/servlets.html
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.