Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вопросы по паттерну InterceptingFilte 
:(
    Опции темы
x4444
Дата 22.1.2007, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 7.2.2006

Репутация: 1
Всего: 1



Читаю статью про паттрен Intercepting Filter   и не пойму что за интерфейс такой Processor и что за класс AuthenticationFilter?

статья: http://java.sun.com/blueprints/corej2eepat...tingFilter.html
по-русски: http://javagu.ru/portal/dt?last=false&...U_SECTION_80703


Это сообщение отредактировал(а) x4444 - 22.1.2007, 14:30
PM MAIL   Вверх
chief39
Дата 22.1.2007, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 11
Всего: 77



"Бибигон и Брундуляк... всё просто. Не было никакого индюка, это такая красивая легенда. Был петух!"(с)камеди клаб

Смотри.
Есть у тебя 10 страничек: "купить", "заказать", "продать", "перевести деньги", "просмотреть эксклюзивный список своих любовниц" и проч.

Понятно что для каждого - своё.
Но! Каждый из этих страничек может быть доступна. Другое дело, что когда простой гражданин попадает на неё - неясно, можно ли показывать ему список чьих-то любовниц? Да и вообще - чьих именно???
Выходит, надо залогиниться?
Но если всё-таки не залогинился - на каждой из этих страничек надо вставлять проверку "залогинился ли он" и сообщение "залогинься, скотина беспардонная!" если он внаглую лезет.

Как добьёмся такого? - прально, копипэйстом!
Но копипэйст - неправильно. Вдруг вместо "скотина беспардонная" захочешь писать "уважаемый". Придётся везде править(а где-то забудешь - обидятся).
Можно проверялку какую-то вставить. Но её вызывать тоже отовсюду надо....

А тут можно решить как... все запросы ко всем твоим страничкам сначала попадают на фильтр. Там можно реализовать всё общее, что нужно для проверки залогинености и сообщению "скотине" этого нелицеприятного факта его биографии. 
То есть пришёл запрос - вперёд, в чистилище фильтр - залогинен? - пжалте - ваши любовницы! 
Не залогинен??? - "залогинься, скотина беспардонная!"

И странице списка любовниц или распоряжения твоим счётом пофик что да как - она уверенна что ты уже успешно прошёл "чистилище", иначе к ней порсто не попал бы

Ну, конечно, этотолько приём программирования. Можно туда впихнуть всё общее для набора страницчто считаешь нужным, примеры на джавагуре есть. smile





--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
batigoal
Дата 23.1.2007, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



chief39, это 5+ !!!


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
chief39
Дата 23.1.2007, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 11
Всего: 77



Цитата(x4444 @  22.1.2007,  14:29 Найти цитируемый пост)
Читаю статью про паттрен Intercepting Filter   и не пойму что за интерфейс такой Processor и что за класс AuthenticationFilter?

Ай-яй! Пардон! Совсем перестал в детали вникать - слона-то я и не приметил!


Цитата(x4444 @  22.1.2007,  14:29 Найти цитируемый пост)
что за интерфейс такой Processor и что за класс AuthenticationFilter?

"Крокодил и солнце...  Оооо... Это самый страшный день в моей жизни! Просыпаюсь я как-то под чудо-деревом.... В ХЛАМ!!! Смотрю! - на небе два солнца! Одно такое.. с загнутыми лучами... немецкое!"(с)
С него и начнём:
Processor. В статье он не описан, но. Скорее всего, исходя просто из логики примера - это должен быть просто интерфейс-маркер. Который показывает, что данный класс у нас тоже может являтся процессором входящего запроса.
Но, судя по логике и назначению, в интерфейсе должен быть один важный метод, который делает его не только маркером, но и, собббсно, процессором:
public void execute(ServletRequest req, ServletResponse res) throws IOException, ServletException 
Кто бы у нас там не был процессором и что бы он не делал - мы знаем, что если кто-то у нас является процессором(имплементит интерфейс) - то мы зовём его execute() - и пусть себе "процессит" наш запрос. То есть процессор - это звено в цепи обработки - все они одинаковые снаружи - можем добавить новое или убрать парочку.

В примере так и пишут:
Цитата

Example 7.2 Implementing a Filter - Core Processor


И погнали реализацию конкретного фильтра(процессора):
Код

public class CoreProcessor implements Processor {
......


Ну и, кроме того, ещё у них всех есть конструктор, который может принимать в качестве аргумента другой фильтр
(не обязательно такой же класс, а класс с таким же интерфейсом processor)



"А второе - наше!.... В виде звезды! Звезда.. по имени Солнце! всё просто... даа.... вот"(с)
AuthenticationFilter - это, ещё одно звено. Один из процессоров. Авторы, очевидно, посчитали что название говорит самоза себя. То есть, это очередное звено в цепи, как пример - функциональностью его является - аутентификация.
Показывать нюансы аутентификации и кучу всякой специфики некой абстрактной системы посчитали ненужным. Да оно и вправду перегрузило бы пример.
Сделали по принципу: что делает - из названия ясно, необходимо будет - читатель сам реализует мелочи аутентификации при необходимости. Тем более, у каждого может быть по-разному оформлена.


Цитата(batigoal @  23.1.2007,  09:30 Найти цитируемый пост)
chief39, это 5+ !!! 

"Всё началось с ЧУДО-дерева. Иду я как-то по просёлку - ГЛЯ! - чудоо.... ну, тогда это ещё был куст... но потооом.. всё выыыросло.. плодов стало бооольше - ЧУДО-ДЕРЕВО. Так я стал детским... ПИИИ-сателем!"(с)
smile

Это сообщение отредактировал(а) chief39 - 23.1.2007, 16:06


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0661 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.