Re: .. Struts, .. !

From
Oleg Vershinin ()
To
Aleksei Valikov ()
Date
2002-09-30T14:41:37Z
Area
RU.JAVA
1iru$1@news.gamma.ru> <an8vfn$f3$1@host.talk.ru>
From: Oleg Vershinin <summit@infolada.com>

Aleksei Valikov wrote:
>>>Я тут сегодня написал custom tag, который делает довольно интересную и
>>>приятную вещь. Если кого заинтересует - напишите, можно развивать. Или
>>Я бы ограничил область применимости этой штуки приложениями,
>>которые не будут исполняться во враждебном окружении.
>>Насколько мне видится, показ прикладных методов ухудшает security приложения.
> 
> Ну, это очень частная проблема.
> Во-первых, можно конфигурировать, что позволять вызывать, а что нет.
> Во-вторых родное security в Java многого стоит.
> В-третьих, клиент может манипулировать только атрибутами своей сессии. Мне
> представляется весьма сомнительным опасность этого. На 100% я, правда, не
> уверен.
> 

Очень это скользкая область: многое зависит от выбранного подхода.
В данном случае мне предпочтителен дизайн, ведомый данными,
и не нравится _настолько_ явное вынесение имен методов.
Налицо более тесное связывание между уровнями приложения,
чем это можно достигнуть.
(Ну я и прогнал ;-)

>>>Суть этой штуки - позволить вызывать методы атрибутов сессии по
>>
> полученным
> 
>>>параметрам реквеста автоматически. Чтобы руками обработку параметров не
>>>писать
>>
>>А ты видел org.apache.struts.actions.DispatchAction ?
> 
> 
> Видел. Это _сильное_ упрощение того, что я использую. Параметр равно имя
> метода.

Угу. А аргументы метода - ActionForm accessors.
И еще метод может быть не один, как может быть не один submit
внутри одной form. И передаваться он(о) (имя метода) еще может не только
через http-forms, но и еще через простые hyperlinks (see <html:link>),
правда href там будет получаться недетский, но для некоторых применений
вполне себе годится.
Например сгенерированный
<a href="/catalog.do?action=remove&id=1234">Удалить</a>
чем не вариант?

> В реальных сценариях нужно бывает и несколько параметров в один метод
> маппировать, и один параметр на несколько методов, и статические аргументы
> передавать, и много еще чего.
> 
> DispatchAction вызывает вот что:
> Object args[] = { mapping, form, request, response };
> forward = (ActionForward) method.invoke(this, args);
Да, исходники я тоже читал ;-))

> А смысл как раз в том, чтобы в методах с реквестами/респонсами не возиться.

Ну, с request'ом возиться не надо - на то есть ActionForm,
а вот, напимер, результат отработки метода как ты собираешься обрабатывать?
org.apache.struts.action.Action возвращает ActionForward, а ты
планируешь как?

PS1: Изучение Struts - как Cocoon в свое время. Сначала за деревьями
      не видно леса, неясны ни принципы, ни задачи, ни цели построения
      изучаемого программного продукта, потом ситуация начинает проясняться,
      а вот потом наступает просветление.Сеячас я на пути прояснения.
PS2: IMHO Кончается время, когда программисты пишут себе инструменты. IMHO.
-- 
Oleg E. Vershinin, Brainbench ID 47980, ВС РФ # У-819111/58А СКВО


--- ifmail v.2.15dev5
 * Origin: Gamma NNTP server Moscow Russia (2:5020/400)