Сервлеты: возможности, виды. Жизненный цикл сервлета — КиберПедия 

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Сервлеты: возможности, виды. Жизненный цикл сервлета

2020-11-03 232
Сервлеты: возможности, виды. Жизненный цикл сервлета 0.00 из 5.00 0 оценок
Заказать работу

Сервлеты (Servlets)

java-программы, которые выполняются на серверной стороне Web-приложения.

Функции:

• обрабатывает клиентские запросы;

• динамически генерирует ответы на запросы;

• находится в состоянии ожидания, если запросы отсутствуют;

• принимает запросы от других сервлетов (Servlet chaining);

• поддерживает соединения с ресурсами.

Работу сервлета можно описать следующим образом.

1. При поступлении запроса от клиента Web-сервер определяет, какой сервлет необходимо выполнить.

2. Web-сервер запускает JAVA-машину, которая выполняет сервлет.

3. Сервлет создает HTML-страницу и передает содержимое Web-серверу.

4. Web-сервер отправляет клиенту сформированную HTML-страницу

Контейнер сервлетов

ПО для системной поддержки сервлетов.

Может работать как веб-сервер, или интегрироваться в Java EE сервер приложений. Apache Tomcat, Jetty, JBoss, GlassFish, IBM WebSphere, Oracle Weblogic

Обеспечивает:

§ жизненный цикл,

§ обмен данными между сервлетом и клиентами,

§ создание программной среды для функционирующего сервлета,

§ идентификацию и авторизацию клиентов, организацию сессии.

Виды сервлетов

Временные сервлеты загружаются по требованию.

Постоянные сервлеты загружаются при старте Web-сервера и существуют до его остановки.

Когда их используют:

§ если затраты по их запуску очень велики (например, установка соединения с базой данных),

§ если они предлагают постоянную функциональность на стороне сервера (например, служба RMI),

§ они должны отвечать на запросы клиента как можно быстрее.

Интерфейс Servlet

Интерфейс Servlet

Web-сервер взаимодействует с сервлетом через интерфейс: j avax.servlet.Servlet.

public void init(ServletConfig config) – вызывается при первой загрузке сервлета.

  ServletConfig имеет метод getServletContext (), возвращающий объект ServletContext, который содержит информацию об окружении сервлета.

public void service (ServletRequest request, ServletResponse response). Каждый запрос клиента приводит к одному вызову метода. Этот метод читает запрос и формирует ответное сообщение:

ServletRequest содержит данные от клиента.

String getRemoteAddr () – адрес запросившего.

String getCharacterEncoding () – кодировка тела ответа.

ServletInputStream g etInputStream () – запрос в двоичном виде.

BufferedReader getReader () – запрос в видесимвольных данных.

Map < String, String []> getParameterMap () – параметры запроса в виде отображения (ключ - значение).

ServletResponse содержит ответ сервлета клиенту.

setContentType(String type) для установки типа MIME (спецификация для кодирования информации и форматирования сообщений таким образом, чтобы их можно было пересылать по Интернету) ответа (например “text/html;charset=UTF-8”).

ServletOutputStream getOutputStream() – для записи в двоичном виде.

PrintWriter getWriter() – для записи в символьном виде.

destroy() вызывается для освобождения всех ресурсов перед выгрузкой сервлета. Перед вызовом метода сервер ждет либо завершения всех обслуживающих операций, либо истечения определенного времени.

Интерфейс HttpServlet

Класс HttpServlet

Сервлеты, обрабатывающие клиентские запросы по протоколу HTTP

Базовый абстрактный класс HttpServlet из пакета javax.servlet.http.

void service (HttpServletRequest request, HttpServletResponse response) – обслуживание запрос, вызывается контейнером.

В задачу метода service входит анализ полученного через запрос метода доступа HTTP (GET, HEAD, POST, PUT, DELETE, OPTIONS и TRACE) и вызов соответствующего метода: doGet, doPost, и т.д. содержащих логику обработки.

для реакции на запросы типа get:

protected void doGet (HttpServletRequest req, HttpServletResponse resp)

для реакции на запросы типа post:

protected void doPost (HttpServletRequest req, HttpServletResponse resp)

Регистрация и инициализация сервлетов в контейнере. Файл WAR.

Регистрация сервлетов

1. с помощью аннотации @ WebServlet

Обязательный атрибут urlPatterns, определяет шаблон URL запросов, вызывающих этот сервлет.

@WebServlet(name="hw", urlPatterns = "/hello_world")
public class HelloWorld extends HttpServlet

2. в файле-дескрипторе web.xml.

корневой элемент:

< web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">

раздел описания сервлета:

< servlet >

< servlet - name > внутреннее имя сервлета</servlet-name>

< servlet - class > полное.имя.КлассаСервлета </servlet-class>

<load-on-startup> 1</load-on-startup>

</servlet>

настройка вызова сервлета:

<servlet-mapping>

<servlet-name> внутреннее имя сервлета</servlet-name>

<url-pattern>/* </url-pattern>

</servlet-mapping>

WAR-файл

Web Application Archive — формат файла, описывающий, упаковку веб-приложения по спецификации Java-сервлетов в JAR или ZIP.

Пример структуры:

/ index. html

/ guestbook. jsp

/ images / logo. png

/ WEB - INF / web. xml - дескриптор развёртывания

/WEB-INF/classes/org/wikipedia/Util.class

/WEB-INF/classes/org/wikipedia/MainServlet.class

/WEB-INF/lib/util.jar

/META-INF/MANIFEST.MF – содержит информацию о файлах, собранных в JAR-файл (classpath, mainclass).

Чтобы веб-контейнер (веб-сервер) смог прочитать дескриптор развертывания и начал перенаправлять запросы на данное приложение, необходимо развернуть (deploy) WAR-файл в контейнер. Одним из вариантов выполнения развёртывания является копирование WAR-файла в autodeploy-каталог веб-контейнера.

Контекст сервлета, сессия.

Интерфейс ServletContext

Контекст выполнения сервлета предоставляет средства для общения с application-сервером и позволяет получать информацию о среде выполнения.

Метод класса сервлета getServletContext () – получить ссылку на объект ServletContext.

String getServerInfo () – название и версия контейнера.

Сессия

HttpSession getSession (boolean create) – возвращает HttpSession текущего сеанса клиента. create равен true создаёт новый HttpSession, если его не существовало.

§ Данные, присланные пользователем, сервер сохраняет в файле сессии.

§ Клиенту же выдаётся "ключ сессии" (Session key, Sesseion ID) - уникальный указатель на файл, содержащий данные конкретно для этого пользователя.

§ Теперь для того, чтобы получить все данные, касающиеся этого клиента, серверу необходимо знать лишь ключ сессии.


Поделиться с друзьями:

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.011 с.