АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Request уничтожен

Читайте также:
  1. В нашей организации не утверждена номенклатура дел. Как мы должны отбирать документы к уничтожению?
  2. Вопрос об уничтожении противоположности между городом и деревней, между умственным и физическим трудом, а также вопрос о ликвидации различий между ними
  3. Г. – проведена очередная чистка издательств, библиотек, прочего на предмет выявления украинско-язычной литературы. Проведение операций по уничтожению украинской интеллигенции.
  4. Г. – разграблена св. София Киевская, уничтожен иконостас.
  5. Г. – уничтожен дом и библиотека М. Грушевского, в которой было множество материалов, указывающих на нынешнюю Украину, как первоначального основателя Руси.
  6. Дегазация — комплекс мероприятий, направленных на уничтожение (нейтрализацию) боевых отравляющих веществ или удаление их с зараженной поверхности.
  7. Задание 2. Уничтожение огневой точки условного противника ружейным огнём.
  8. Ловушка третья: уничтожение сокровища, hambre del alma, душевный голод
  9. Методика проведения экспертного исследования по восстановлению измененных и уничтоженных маркировочных обозначений на изделиях из дерева
  10. Методы, способы, средства защиты информации от утечки по материально-вещественному каналу. Способы и средства уничтожения документов
  11. Окончание Потопа и уничтожение неверующих

При этом класс «обработчик событий» должен быть зарегистрирован в файле web.xml следующим образом:

<listener>

<listener-name>MyRequestListener</listener-name>

<listener-class>chapt21.MyRequestListener</listener-class>

</listener>

Фильтры

Реализация интерфейса Filter позволяет создать объект, который может трансформировать заголовок и содержимое запроса клиента или ответа сервера. Фильтры не создают запрос или ответ, а только модифицируют его. Фильтр выполняет предварительную обработку запроса, прежде чем тот попадает в сервлет, с последующей (если необходимо) обработкой ответа, исходящего из сервлета. Фильтр может взаимодействовать с разными типами ресурсов, в частности
и с сервлетами, и с JSP-страницами.

Основные действия, которые может выполнить фильтр:

· перехват инициализации сервлета и определение содержания запроса, прежде чем сервлет будет инициализирован;

· блокировка дальнейшего прохождения пары request-response;

· изменение заголовка и данных запроса и ответа;

· взаимодействие с внешними ресурсами;

· построение цепочек фильтров;

· фильтрация более одного сервлета.

При программировании фильтров следует обратить внимание на интерфейсы Filter, FilterChain и FilterConfig из пакета javax.servlet. Сам фильтр определяется реализацией интерфейса Filter. Основным методом этого интерфейса является метод

void doFilter(ServletRequest req, ServletResponse res, FilterChain chain),

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

Кроме того, необходимо реализовать метод void init(FilterConfig config), который принимает параметры инициализации и настраивает конфигурационный объект фильтра FilterConfig. Метод destroy() вызывается при завершении работы фильтра, в тело которого помещаются команды освобождения используемых ресурсов.

Жизненный цикл фильтра начинается с однократного вызова метода init(), затем контейнер вызывает метод doFilter() столько раз, сколько запросов будет сделано непосредственно к данному фильтру. При отключении фильтра вызывается метод destroy().

С помощью метода doFilter() каждый фильтр получает текущий запрос и ответ, а также список фильтров FilterChain, предназначенных для обработки. Если в FilterChain не осталось необработанных фильтров, то продолжается передача запроса/ответа. Затем фильтр вызывает chain.doFilter() для передачи управления следующему фильтру.

В следующем примере рассматривается обращение к объекту request JSP-страницы demofilter.jsp и изменение значения атрибута запроса testName.

<!--пример # 7: обращение к атрибуту: demofilter.jsp -->

<%@ page language="java" contentType="text/html;

charset=ISO-8859-5" pageEncoding="ISO-8859-5"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<html><head><title>Demo Filter</title></head>

<body>

<c:out value="Info from filter: ${info}"/> <br>

<P>Дублирование действий фильтра смотреть в консоли</P>

</body></html>

Если фильтр не подключать, то переменная info значения не получит.

Реализация интерфейса Filter для поставленной задачи выглялит следующим образом:

/* пример # 8: простая фильтрация значения атрибута: MyFilter.java */

package chapt21;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

 

public class MyFilter implements Filter {

private FilterConfig filterConfig;

 

public void init(final FilterConfig filterConfig) {

this. filterConfig = filterConfig;

}

public void doFilter(final ServletRequest request,

final ServletResponse response, FilterChain chain)

throws java.io.IOException,

javax.servlet.ServletException {

System. out. println("Вход в фильтр");

String value = "Simple Filter";

 

request.setAttribute("info", value);

 

chain.doFilter(request, response);

System. out. println("info = " + value);

System. out. println("Окончание фильтрa");

}

public void destroy() {

System. out. println("Уничтожение фильтрa");

}

}

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

<filter>

<filter-name>simplefilter</filter-name>

<filter-class>chapt21.MyFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>simplefilter</filter-name>

<url-pattern>/demofilter.jsp</url-pattern>

</filter-mapping>

Фильтр может модифицировать ответ сервера клиенту. Одним из распространенных приемов использования фильтра является модификация коди­ровки ответа. Когда сервлет посылает ответ клиенту через поток PrintWriter, используется установленная в сервлете кодировка. В следующем примере рассматривается фильтр, изменяющий кодировку ответа на кириллицу UTF-8.

// пример # 9: фильтр, устанавливающий кодировку запроса: SetCharFilter.java

package chapt21;

import java.io.IOException;

import javax.servlet.*;

 

public class SetCharFilter implements Filter {

private FilterConfig filterConfig = null;

 

public void init(FilterConfig config)

throws ServletException {

this. filterConfig = config;

 

}

public void doFilter(ServletRequest request,

ServletResponse response, FilterChain next)

throws IOException, ServletException {

// чтение кодировки из запроса

String encoding = request.getCharacterEncoding();

System. out. println(encoding);

// установка UTF-8, если не установлена

if (!"UTF-8".equalsIgnorCase(encoding))

response.setCharacterEncoding("UTF-8");

next.doFilter(request, response);

}

public void destroy() {

}

}

И его конфигурации в web.xml:

<filter>

<filter-name>setCharFilter</filter-name>

<filter-class>chapt21. SetCharFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>setCharFilter</filter-name>

<url-pattern>/DemoCharServlet</url-pattern>

</filter-mapping>

Таким образом, ответ сервлета DemoCharServlet будет в необходимой кодировке.

/*пример # 10: без установки кодировки ответ сервлета будет нечитаем:
DemoCharServlet.java*/

package chapt21;

import java.io.*;

import java.util.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class DemoCharServlet extends HttpServlet {

public void init() throws ServletException {

}

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.print("Кодировка установлена успешно!");

}

public void destroy() {

super. destroy();

}

}

В результате в браузер будет выведено:

Кодировка установлена успешно!

Задания к главе 21

Вариант А

Для всех заданий использовать авторизованный вход в приложение. Пара­метры авторизации, дату входа в приложение и время работы сохранять в сессии.

1. В тексте, хранящемся в файле, определить длину содержащейся в нем максимальной серии символов, отличных от букв. Все такие серии символов с найденной длиной сохранить в cookie.

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

3. В файле хранится несколько стихотворений, которые разделяются стро­кой, состоящей из одних звездочек. В каком из стихотворений больше всего восклицательных предложений? Результат сохранить в файле cookie.

4. Записать в файл cookie все вопросительные предложения текста, которые хранятся в текстовом файле.

5. Код программы хранится в файле. Подсчитать количество операторов этой программы и записать результаты поиска в файл cookie, перечислив при этом все найденные операторы.

6. Код программы хранится в файле. Сформировать файл cookie, записи которого дополнительно слева содержат уровень вложенности циклов. Ограничения на входные данные:

а) ключевые слова используются только для обозначения операторов;

б) операторы цикла записываются первыми в строке.

7. Подсчитать, сколько раз в исходном тексте программы, хранящейся на диске, встречается оператор, который вводится с тер­минала. Сохранить в файле cookie также номера строк, в которых этот опе­ратор записан. Ограничения: ключевые слова используются только для обозначения операторов.

8. Сохранить в cookie информацию, введенную пользователем, и восстановить ее при следующем обращении к странице.

9. Выбрать из текстового файла все числа-полиндромы и их количество. Результат сохранить в файле cookie.

10. В файле хранится текст. Найти три предложения, содержащие наибольшее количество знаков препинания, и сохранить их в файле cookie.

11. Подсчитать количество различных слов в файле и сохранить информацию в файл cookie.

12. В файле хранится код программы. Удалить из текста все комментарии
и записать измененный файл в файл cookie.

13. В файле хранится HTML-документ. Проверить его на правильность
и записать в файл cookie первую строку и позицию (если они есть), нарушающую правильность документа.

14. В файле хранится HTML-документ. Найти и вывести все незакрытые теги с указанием строки и позиции начала в файл cookie. При выполнении задания учесть возможность присутствия тегов, которые не требуется закрывать. Например: <BR>.

15. В файле хранится HTML-документ с незакрытыми тегами. Закрыть все незакрытые теги так, чтобы документ HTML стал правильным, и записать измененный файл в файл cookie. При выполнении задания учесть возможность присутствия тегов, которые не требуется закрывать. Например: <BR>.

16. В файле хранятся слова русского языка и их эквивалент на английском языке. Осуществить перевод введенного пользователем текста и записать его в файл cookie.

17. Выбрать из файла все адреса электронной почты и сохранить их в файле cookie.

18. Выбрать из файла имена зон (*.by, *.ru и т.д.), вводимые пользователем, и сохранить их в файле cookie.

19. Выбрать из файла все заголовки разделов и подразделов (оглавление)
и записать их в файл cookie.

20. При работе приложения сохранять в сессии имена всех файлов, к которым обращался пользователь.

Вариант B

Для заданий варианта В главы 4 каждому пользователю должен быть поставлен в соответствие объект сессии. В файл cookie должна быть занесена информация
о времени и дате последнего сеанса пользователя и информация о количестве посещений ресурса и роли пользователя.

Тестовые задания к главе 21


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.013 сек.)