Основные системные объекты (контекст, сессия, запрос, ответ). Назначение и жизненный цикл объектов

Контекст

Для web-программиста контекст приложения – это, прежде всего, информация, характеризующая само web-приложение и среду в которой оно работает. Эту информацию можно разделить на две части: статическую и динамическую. Статическая часть описывается в дескрипторе развертывания и в других конфигурационных файлах web-контейнера, и называется параметрами инициализации. Эта информация не чувствительна к перезагрузке сервера. Динамическая часть информации может быть добавлена, изменена или удалена с помощью специальных методов контекста и перезагрузка web-сервера приводит к ее разрушению, и называется атрибуты контекста.

Сеанс связи (сессия)

Объект Session создается контейнером при получении первого запроса клиента. Объект существует до тех пор, пока интервал времени между последовательными запросами клиента не превысит установленное пороговое значение. Для обозначения каждой сессии используется специальный уникальный идентификатор, позволяющий разделить запросы разных клиентов. Объект сессии может разрушить и изнутри, выполнив метод invalidate интерфейса HttpSession. Во время сеанса связи любой объект, связанный с сеансом связи доступен любому сервлету или JSP, находящемуся в этом же контексте и недоступен для сервлетов и JSP другого контекста. Состояние сеанса позволяют отследить два специальных механизма: cookies и URL rewriting.

Запрос

Объект Request создается контейнером при получении http-запроса к компоненте webприложения и инкапсулирует всю необходимую информацию о запросе клиента. Этот объект существует и доступен только в рамках обработчика запроса (в нашем случае сервлета или jsp-страницы).

Ответ

Объект Response создается контейнером тоже при получении запроса, но поначалу он будет пуст. Методы этого объекта позволяют инкапсулировать всю информацию необходимую контейнеру, для того чтобы сформировать и передать ответ клиенту. Этот объект существует и доступен только в рамках обработчика запроса.


21. Дескриптор развертывания web-приложения. Параметры инициализации web-приложения: назначение, принципы применения.

Дескриптор развертывания является важной частью web-приложения, предназначенный для хранения его основных параметров.

Дескриптор развертывания приложения представляет собой xml-файл, корневым элементом которого является тег <web-app>. Дескриптор приложения может содержать достаточно много различных и повторяющихся элементов. Порядок элементов внутри <web-app> и их синтаксис определяется схемой XML.

В самом простом случае дескриптор развертывания состоит только из одного тега

<web-app>, внутри которого ничего нет. В нашем случае, имеется еще три тега: <displayname>, <welcome-file-list> и <welcome-file>.

Тег <display-name> не является обязательным, но если есть, то не может повторяться более одного раза. Этот тег предназначен для указания имени webприложения, которое потом может быть использовано в графическом интерфейсе. Для этого имени не требуется уникальность и его значение не оказывает влияния на работу приложения.

Тег <welcome-file-list> тоже не является обязательным и предназначен для указания списка стартовых страниц web-приложения. Имена файлов странниц указываются внутри тега <welcome-file-list> с помощью одного или более тегов <welcome-file>.

Может быть указано несколько стартовых страниц для одного webприложения. В этом случае поиск их осуществляется в указанном порядке.

Дескриптор развертывания web-приложения содержит информацию необходимую web-контейнеру для взаимодействия с приложением.

Параметры инициализации сервлета и их значения описываются в теле соответствующего тега <servlet> дескриптора развертывания приложения. На примере фрагмента дескриптора развертывания приложения, описывающего сервлет Hhh с одним па-раметром инициализации.

<servlet>

<servlet-name>Hhh</servlet-name>

<servlet-class>Hhh</servlet-class>

<init-param>

<param-name>fhtml</param-name>

<param-value>male.html</param-value>

</init-param>

</servlet>

Единственный параметр инициализации в примере имеет имя fhtml и значение male.html. Значение параметров инициализации всегда имеют строкой тип. В общем случае параметров инициализации может быть больше, чем один.

Получить значение параметра инициализации в сервлете можно с помощью метода getInitParameter интерфейса Servlet. На примере фрагмент сервлета, считывающего значение параметра fhtml.

public class Hhh extends HttpServlet implements Servlet {

protected void doGet(HttpServletRequest rq, HttpServletResponse rs)

throws ServletException, IOException {

String fhml = getInitParameter ("fhtml");

rq.getRequestDispatcher("/" + fhml).forward(rq, rs);

}

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: