Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к экзамену по ПИИ.docx
Скачиваний:
107
Добавлен:
26.03.2015
Размер:
207.29 Кб
Скачать

Заголовки ответа

Как и http-запрос http-ответ всегда можно дополнить собственными заголовками, которые потом могут быть получены и обработаны на стороне клиента.

protected void service(HttpServletRequest rq, HttpServletResponse rs)

throws ServletException, IOException {

rs.setContentType("text/html");

rs.addHeader("Jjj-Header1", "Jjj-HeaderValue1");

rs.addHeader("Jjj-Header2", "Jjj-HeaderValue2");

}

  1. Фильтры (JavaFilter). Назначение. Принципы применения.

Фильтр– это класс Java, реализующий интерфейсFilter,и выполняющий роль препроцессора запроса. С помощью фильтра можно осуществить доступ к ресурсу непосредственно перед запросом, блокировать, предварительно обработать или модифицировать запрос, изменить ответ и т. п.

Фильтры могут быть использованы для различных ресурсов: сервлетов, jspстраниц, html-страниц и др. Один и тот же фильтр может быть назначен разным ресурсам. С другой стороны одному ресурсу может быть назначено несколько фильтров – в этом случае они образуют цепочкуфильтров.

Технология фильтров основывается на использовании трех основных интерфейсов: Filter,FilterChainиFilterConfig.

  • Интерфейс Filter является важнейшим интерфейсом и предназначен для фильтрации запросов и ответов.

  • Интерфейс FilterChain реализуется web-контейнером и используется для организации цепочки фильтров. С помощью этого интерфейса можно заблокировать доступ к ресурсу.

  • Интерфейс FilterConfig тоже реализуется web-контейнером и предназначен для информирования фильтра о его окружении.

Любой фильтр должен реализовать три обязательных метода: init,destroyиdoFilter. Все методы вызываются web-контейнером, а последовательность их вызова определяет жизненный цикл фильтра.

package flt;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class Flt1 implements Filter {

public void init(FilterConfig cfg) throws ServletException {

System.out.println("Flt1:init");

}

public void destroy() {

System.out.println("Flt1:destroy");

}

public void doFilter(ServletRequest rq, ServletResponse rs, FilterChain ch)

throws IOException, ServletException {

}

}

<filter>

<filter-name>Flt1</filter-name>

<filter-class>flt.Flt1</filter-class>

</filter>

<filter-mapping>

<filter-name>Flt1</filter-name>

<url-pattern>/Sss</url-pattern>

</filter-mapping>

  1. Слушатели (JavaEventListener). Назначение. Принципы применения.

Слушатель событий– это класс Java, реализующий один или более интерфейсов слушателей событий интерфейсов.

Перечень интерфейсов слушателей и их назначение приведен в табл. 5.1

Идентификатор интерфейса

Обрабатываемые события

ServletContextListener

Создание и разрушение контекста

ServletContextAttributeListener

Добавление, удаление, модификация атрибута

контекста

HttpSessionListener

Создание и уничтожение сеанса

HttpSessionAttributeListener

Добавление, удаление, модификация атрибута сессии

Как и фильтры, слушатели создаются и инициализируются web-контейнером при загрузке web-сервера.

Слушатель может реализовывать интерфейс HttpSessionListenerи обрабатывать события двух типов: создание ( методsessionCreated ) и уничтожение сеанса (sessionDestroyed).

HttpSessionAttributeListener обрабатывает события добавления (attributeAdded), удаления (attributeRemoved), модификации(attributeReplaced) атрибута сессии. Слушатель может реализовывать интерфейсServletContextListenerи обрабатывать события двух типов: создание (методcontextCreated) и уничтожение контектса (contextDestroyed).

ServletContextAttributeListener обрабатывает события добавления (attributeAdded), удаления (attributeRemoved), модификации(attributeReplaced) атрибута сессии.

package lst;

import javax.servlet.http.HttpSession;

import javax.servlet.http.HttpSessionEvent;

import javax.servlet.http.HttpSessionListener;

public class Lst1 implements HttpSessionListener {

public void sessionCreated(HttpSessionEvent se) {

HttpSession ss = se.getSession();

System.out.println("Lst1:sessionCreated:Id="

+ ss.getMaxInactiveInterval());

ss.setMaxInactiveInterval(10);

System.out.println("Lst1:sessionCreated:Id=" + ss.getId());

}

public void sessionDestroyed(HttpSessionEvent se) {

System.out.println("Lst1:sessionDestroyed:Id="

}

}

<listener>

<listener-class>lst.Lst1</listener-class>

</listener>

<listener>

<listener-class>lst.Lst2</listener-class>

</listener>