Re: .. Struts, .. !
- From
- Aleksei Valikov ()
- To
- Oleg Vershinin ()
- Date
- 2002-10-02T20:05:38Z
- Area
- RU.JAVA
1iru$1@news.gamma.ru> <an8vfn$f3$1@host.talk.ru> <an99ob$1tc2$1@news.gamma.ru>
From: "Aleksei Valikov" <valikov@fzi.de>
Hi.
> > Ну, это очень частная проблема.
> > Во-первых, можно конфигурировать, что позволять вызывать, а что нет.
> > Во-вторых родное security в Java многого стоит.
> > В-третьих, клиент может манипулировать только атрибутами своей сессии.
Мне
> > представляется весьма сомнительным опасность этого. На 100% я, правда,
не
> > уверен.
>
> Очень это скользкая область: многое зависит от выбранного подхода.
> В данном случае мне предпочтителен дизайн, ведомый данными,
Что именно ты имеешь ввиду? Слишком зыбкое определение.
> и не нравится _настолько_ явное вынесение имен методов.
Чем не нравится? Security?
> Налицо более тесное связывание между уровнями приложения,
> чем это можно достигнуть.
Я так не думаю. Грамотное использование интерфейсов наоборот позволяет
достичь еще больший decoupling.
> > Видел. Это _сильное_ упрощение того, что я использую. Параметр равно имя
> > метода.
>
> Угу. А аргументы метода - ActionForm accessors.
> И еще метод может быть не один, как может быть не один submit
> внутри одной form. И передаваться он(о) (имя метода) еще может не только
> через http-forms, но и еще через простые hyperlinks (see <html:link>),
> правда href там будет получаться недетский, но для некоторых применений
> вполне себе годится.
> Например сгенерированный
> <a href="/catalog.do?action=remove&id=1234">Удалить</a>
> чем не вариант?
Давай я обрисую задачу, а ты подскажешь, какими средствами подобное можно
сделать на Struts.
Положим, у нас есть компонент, выполняющий определенные функции - например
модификацию XML-документов. Компонент определяется интерфейсом
DocumentEditorComponent, используется реализация PrimitiveDocumentEditorImpl
(авалоновская методология, но это не суть важно). Для добавления элементов
служит метод
public String addElement(String documentID, String parentID, String
followingID, String name);
Семантика аргументов очевидна.
Теперь хочется следующего: чтобы при нажатии на кнопочку в браузере в
экземпляре PrimitiveDocumentEditorImpl вызвался метод с соответствующими
параметрами.
В текущим решении в случае JSP на страницу добавляется custom tag
<mt:instruct/> и параметр вида
documentEditor.addElement=did=pid=fid=element:name.x = Add element
автоматически маппируется в вызов addElement("did", "pid", "fid",
"element:name") атрибута сессии documentEditor.
Какого-либо программирования при этом не требуется. Параметры реквеста
руками не обрабатываются, о каких-либо реквестах и респонсах редактор
документа и знать не знает.
Как будет выглядеть решение на Struts?
> > А смысл как раз в том, чтобы в методах с реквестами/респонсами не
возиться.
>
> Ну, с request'ом возиться не надо - на то есть ActionForm,
То есть параметры, пришедшие в реквесте разбирать не нужно?
> а вот, напимер, результат отработки метода как ты собираешься
обрабатывать?
> org.apache.struts.action.Action возвращает ActionForward, а ты
> планируешь как?
Вагон и маленькая тележка способов, начиная простым сохранением результата
вызова метода method1 в контексте сессии или в конетексте страницы в Map с
ключом "method1" (sessionScope.instruct.method1/instruct.method1 в JSTL),
заканчивая обработкой конструкций вида
attr2=sessionScope.attr1.property2.method3("a",attr3).
Последнее вызовет метод method3 атрибута сессии attr1 с параметрами "a" и
значением атрибута страницы attr3 и результат присвоит атрибуту страницы
attr2.
>
> PS1: Изучение Struts - как Cocoon в свое время. Сначала за деревьями
> не видно леса, неясны ни принципы, ни задачи, ни цели построения
> изучаемого программного продукта, потом ситуация начинает
проясняться,
> а вот потом наступает просветление.Сеячас я на пути прояснения.
> PS2: IMHO Кончается время, когда программисты пишут себе инструменты.
IMHO.
> --
> Oleg E. Vershinin, Brainbench ID 47980, ВС РФ # У-819111/58А СКВО
>
>
--
Все об XSLT в книге "Технология XSLT".
Сайт издательства http://www.bhv.ru/cgi-bin/bhv.exe/card?isbn=5-94157-129-1
Books.ru http://www.books.ru/shop/books/22090
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
--- ifmail v.2.15dev5
* Origin: Talk.Mail.Ru (2:5020/400)