Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 10 лет назад пользователемГерасим Карпенко
1 1 Java J2EE. Servlet Технологии
2 2 Сервлеты Сервлеты – это компоненты приложений Java Enterprise Edition, выполняющиеся на стороне сервера, способные обрабатывать клиентские запросы и динамически генерировать ответы на них. интерфейс javax.servlet. Servlet абстрактный класс javax.servlet.http.HttpServlet
3 3 Архитектура servlet application Servlet Container Servlet Static Content HTTP Request HTTP Response web container or servlet/JSP container Browser
4 4 Архитектура servlet application + HTTP server HTTP Server Servlet Container Static Content HTTP Request HTTP Response Browser Servlet
5 5 Работа сервлета Получение запроса (request) Сервлет загружен? Текущий сервлет? Загрузка сервлета Обслуживание запроса Отсылка ответа (response)
6 6 Tomcat Servlet Container Один из наиболее популярных servlet/JSP контейнеров Написан на Java Представляет собой web-сервер
7 7 6 шагов для запуска первого сервлета 1. Создайте для своего приложения каталог в иерархии каталогов Tomcat. 2. Напишите код сервлета. You need to import the javax.servlet package and the javax.servlet.http package in your source file. 3. Скомпилируйте исходники. 4. Создайте deployment descriptor. 5. Запустите Tomcat. 6. Обратитесь к сервлету в адресной строке web browser.
8 8 1 каталог для своего приложения
9 9 2 Напишите код сервлета. import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloWorldServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter writer = response.getWriter(); writer.println("Hello, World!"); writer.close(); } HelloWorldServlet.java
10 10 4. Создайте deployment descriptor hello HelloWorldServlet hello /hello web.xml
11 11 6 Обратитесь к сервлету в адресной строке web browser – порт устанавливается в настройках Tomcat
12 12 Пакет javax.servlet Интерфейсы: RequestDispatcher Servlet ServletConfig ServletContext ServletRequest ServletResponse SingleThreadModel Классы: GenericServlet ServletInputStream ServletOutputStream Классы исключений: ServletException UnavailableException
13 13 Жизненный цикл сервлета определяется тремя методами: init() service() destroy()
14 14 Метод service() Запрос обслуживается методом service(HttpServletRequest req, HttpServletResponse res) req содержит все параметры запроса в res загружается информация для передачи клиенту. Для каждого нового клиента при обращении к сервлету создается независимый поток, в котором производится вызов метода service(). Метод service() предназначен для одновременной обработки множества запросов. ex01: PrimitiveServlet.java
15 15 Servlet Config Для каждого сервлета, зарегистрированного в файле web.xml можно определить параметры инициации admin Некоторые методы интерфейса ServletConfig : String getServletName() Enumeration getInitParameterNames() String getInitParameter(String name) ex02: ConfigDemoServlet.java
16 16 Servlet Context Контейнер создает объект ServletContext, используемый для доступа к информации об окружении сервлета. Методы интерфейса ServletContext : int getMajorVersion. int getMinorVersion. Enumeration getAttributeNames() Object getAttribute(String name) void setAttribute(String name, Object object) void removeAttribute(String name) String getMimeType(String filename) String getRealPath(String filename) String getServerInfo() ServletContext getContext(String uripath) String getServletContextName() Используя объект ServletContext, можно регистрировать события сервлета, сессии и запроса ex03
17 17 Интерфейс ServletRequest Информация от компьютера клиента отправляется серверу в виде объекта запроса типа HttpServletRequest. Данный интерфейс является производным от интерфейса ServletRequest. Используя методы интерфейса ServletRequest, можно получить много дополнительной информации, в том числе и о сервлете и деталях протокола HTTP, закодированной и упакованной в запрос. ex04: RequestDemoServlet.java firebug
18 18 методы ServletRequest String getCharacterEncoding() определение символьной кодировки запроса String getContentType() определение MIME-типа (Multipurpose Internet Mail Extension) пришедшего запроса String getProtocol() определение названия и версии протокола String getServerName() String getServerPort() определение имени сервера, принявшего запрос, и порта, на котором запрос был принят сервером соответственно String getRemoteAddr() String getRemoteHost() определение IP адреса клиента, от имени которого пришел запрос, и его имени соответственно String getRemoteUser() определение имени пользователя, выполнившего запрос
19 19 методы ServletRequest ServletInputStream getInputStream() BufferedReader getReader() получение ссылки на поток, ассоциированный с содержимым полученного запроса если оба методы вызваны последовательно, то генерируется исключение IllegalStateException String getParameter(String name) определение значения параметра по его имени или null, если параметр с таким именем не задан String[ ] getParameterValues(String name) определение всех значений параметра по его имени Enumeration getParameterNames() определение ссылки на список имен всех параметров
20 20 методы ServletRequest void setAttribute(String name, Object ob) установка значения атрибута компонента, являющегося внутренним параметром для передачи информации между компонентами приложения, например от сервлета к странице JSP или другому сервлету Enumeration getAttributeNames() извлечение перечисления имен атрибутов Object getAttribute(String name) извлечение значения переданного атрибута по имени
21 21 методы HttpServletRequest Cookie[ ] getCookies() извлечение массива cookie, полученного с запросом. Файл cookie – маленький файл, сохраняемый приложением на стороне клиента String getMethod() определение имени метода доступа к ресурсам, на основе которого построен запрос String getQueryString() извлечение строки HTTP-запроса
22 22 Интерфейс ServletResponse Генерируемые сервлетами данные пересылаются серверу- контейнеру с помощью объектов, реализующих интерфейс ServletResponse, а сервер, в свою очередь, пересылает ответ клиенту, инициировавшему запрос. Можно получить ссылки на потоки вывода одним из двух методов: ServletOutputStream getOutputStream() извлечение ссылки на поток ServletOutputStream для передачи бинарной информации; PrintWriter getWriter() извлечение ссылки на поток типа PrintWriter для передачи символьной информации; Если оба метода вызваны последовательно, то генерируется IllegalStateException void setContentType(String type) установка MIME-типа генерируемых документов ex04: ResponseDemoServlet.java firebug
23 23 методы HttpServletResponse void addCookie(Cookie c) добавление cookie к объекту ответа для последующей пересылки на клиентский компьютер void sendError(int sc, String msg) сообщение о возникших ошибках, где sc – код ошибки, msg – текстовое сообщение void setDateHeader(String name, long date) добавление даты в заголовок ответа void setHeader(String name, String value) добавление параметров в заголовок ответа если параметр с таким именем уже существует, то он будет заменен
24 24 класс HttpServlet Класс HttpServlet расширяет Servlet + реализует метод service(). Метод service() класса HttpServlet служит диспетчером для других методов (doМетод), каждый из которых обрабатывает методы доступа к ресурсам из спецификации HTTP: GET HEAD POST PUT DELETE OPTIONS TRACE ex01: простейший сервлет : MyServlet.java
25 25 doGet и doPost Когда клиент переходит по адресу URL, который обрабатывается сервлетом, контейнер сервлета перехватывает запрос и вызывает метод doGet() или doPost(). Эти методы вызываются после конфигурации объектов, наследующих интерфейсы HttpServletRequest, HttpServletResponse. Задача методов doGet() и doPost() – взаимодействие с HTTP- запросом клиента и создание HTTP-ответа, основанного на данных запроса. GET is the default method in HTTP If you use the GET method in a form, the parameter name/value pairs are appended to the URL. ex05: RegisterServlet.java
26 26 Получение параметров из HttpServletRequest Query String - is the string on the URL to the right of the path to the servlet Parameters Multi-Value Parameters ex06: QueryStringDemoServlet.java ParametersDemoServlet.java MultiValueDemoServlet.java
27 27 Многопоточность Контейнер сервлетов будет иметь несколько потоков выполнения, распределяемых согласно запросам клиентов. Любой доступ к разделяемым ресурсам, которыми могут быть файлы, объекты, необходимо синхронизировать. ex07: ServletSynchronization.java
28 28 Ключевые моменты
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.