Зачем нужен Struts

User avatar
webdeveloper
Уже с Приветом
Posts: 2049
Joined: 12 Jul 2000 09:01
Location: Madison, Wisconsin USA

Зачем нужен Struts

Post by webdeveloper »

Коллеги, вот сижу и думаю, для чего нужны framworks типа Struts?

Что в нем есть конкретно такого, чего нет в том же самом Java Servlet? Ну кроме tag libs, без которых можно прекрастно обойтись если использовать XML/XSLT

Берем сервлет, обрабатываем запрос (обращаемся к bean'ам, делаем все что нам нужно) и потом

Code: Select all

RequestDispatcher dispatcher = ctx.getRequestDispatcher(jspFielName);
dispatcher.forward(request, response);



Создается такое ощущение, что Struts написан просто от того, что у кого то было слишком много времени. Или там вся соль в этих custom tags?

Пожалуйста, расскажите чем имено он хорош, и зачем его нужно использовать.
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Post by WildVlad »

Вот как раз для custom tags можно обойтись JSP'шкой, а именно, засунуть всю логику в тэги, а на странице оставить чистый html + вызовы custom tags. Получается типа разделение логики и оформления (при желании можно добиться полного отсутсвия java-кода в JSPшке).

Struts же нужен для двух вещей:
1) Есть набор библиотек тэгов (правда они пишутся за пару недель самому, если надо).

2) MVC2-архитектура. Типа явно разделяем бизнесс-логику, отображение и обработку событий. На самом деле и это всё пишется за примерно месяц.

Итого, для написания своего framework'а нужно "дать в down" :mrgreen: примерно пару месяцев или воспользоваться готовым. Тем более нормальные IDE поддерживают разработку под энтот Struts очень сильно минимизируя телодивжения разработчиков.

Правда надо отметить, что Struts сделан в исконно индуском стиле программирования :)
I hated LA
User avatar
webdeveloper
Уже с Приветом
Posts: 2049
Joined: 12 Jul 2000 09:01
Location: Madison, Wisconsin USA

Post by webdeveloper »

Вот это то меня и смущает. Те теги которые там есть, они как бы дурацкие что ли. Тоесть я понимаю саму идею разделения дизайна от данных, но наличие <text:sometag .... /> не сильно помогает. И вот почему: дизайнеры пользуются визуальными средствами типа DW, и эти теги просто не будут там показыватся. Вывод - они не помогают. Кроме того, ну какая разница между

Code: Select all

<lable:text="SomeText"/>


и

Code: Select all

<%="SomeText"%>


Не поверю, что первый вариант для дизайнера проще.

Опять же про MVC - а в чем разница между простым сервлетом и тем что делает Struts? Теже request и response, все тоже самое, в конце происходит форвард на JSP.

Что то я не понимаю, для чего нужно городить этот огород. Длдя того, что бы растопырить пальцы пошире? :(
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Post by WildVlad »

1. Читайте спеки дальше, там всё написано :mrgreen:

webdeveloper wrote:Вот это то меня и смущает. Те теги которые там есть, они как бы дурацкие что ли. Тоесть я понимаю саму идею разделения дизайна от данных, но наличие <text:sometag .... /> не сильно помогает.


Есть там еще и другие тэги, включая bean access, логику и так далее. Более того, если пользоваться их тэгами для HTML-форм, то IDE (по крайней мере WSAD) умеют сгенерить по стратсовым JSP'шкам соответсвующие action forms.

webdeveloper wrote: И вот почему: дизайнеры пользуются визуальными средствами типа DW, и эти теги просто не будут там показыватся.


Во WSAD'е (WebSphere Studio Applicaton Developer) они показываются :mrgreen:

webdeveloper wrote:Кроме того, ну какая разница между

Code: Select all

<lable:text="SomeText"/>

и

Code: Select all

<%="SomeText"%>

Не поверю, что первый вариант для дизайнера проще.

Разница такая:
в первом случае дизайнер (если он толковый) гарантированно ожидает появления метки в данном месте. Просто по названию тэга. Во втором случае, он должен разбираться с java-вставкой на предмет того, что ваш скриптлет не выводит, например, комбобокс в этом месте :mrgreen:

webdeveloper wrote:Опять же про MVC - а в чем разница между простым сервлетом и тем что делает Struts? Теже request и response, все тоже самое, в конце происходит форвард на JSP.


То есть Вы еще не дочитали до самого важного места :)
Сервлет в Struts'e "разделён" на функциональные составляющие:

1. FormBean умеет считывать себя (почти сама!) из запроса, Вам остаётся написать в ней правила для проверки, если они нужны.

2. ActionForm содержит контроллер - логику. (Это основная часть сервлета, который мы делили на части). При этом те же редиректы рекомендуется делать не напрямую, а через mappings, которые конфигурятся отдельно (при переименовании какой-нибудь страницы надо проверить только mappings, а не кучу java-кода где могло использоваться старое имя).

Не будем забывать про то, что IDE (опять тот же WSAD) умеют проверять правильность Struts приложения, например на предмет "висячих" ссылок (ссылки в никуда после рефакторинга).

webdeveloper wrote:Что то я не понимаю, для чего нужно городить этот огород. Для того, что бы растопырить пальцы пошире? :(

Частично я согласен. Более того, я вижу ограничения применимости Стратса и его слабые места, но они далеко не те, что видите Вы. Если точнее, я вижу функциональные ограничения, то есть некоторые вещи если сделать в стратсе, то от стратса ничего не останется :mrgreen: :mrgreen:

Но с другой стороны, область применимости его тоже понятна (OR-список):
1. приложения, для которых недопустимо тратить время на разработку своего framework'а.
2. Осутствие в списке требований фич не поддерживаемых Стратсом.
3. Любовь начальства
I hated LA
User avatar
Chelya
Уже с Приветом
Posts: 694
Joined: 05 Jul 2002 15:29
Location: NJ

Post by Chelya »

WildVlad wrote:Но с другой стороны, область применимости его тоже понятна (OR-список):
1. приложения, для которых недопустимо тратить время на разработку своего framework'а.
2. Осутствие в списке требований фич не поддерживаемых Стратсом.
3. Любовь начальства

Писать свой generic web framework в наше время просто глупо. Не нравится Struts - пожалуйста вам spring или webwork.
Не использовать web framework тоже глупо. Web framework is much more then include().
Wisdom has two parts: 1. Having a lot to say. 2. Not saying it.
User avatar
webdeveloper
Уже с Приветом
Posts: 2049
Joined: 12 Jul 2000 09:01
Location: Madison, Wisconsin USA

Post by webdeveloper »

ОК, убедили, буду дальше читать :)

любовь начальства того стоит :mrgreen:
Бродяга
Уже с Приветом
Posts: 16086
Joined: 22 Apr 2003 17:57
Location: Колыбель

Post by Бродяга »

WildVlad wrote:Правда надо отметить, что Struts сделан в исконно индуском стиле программирования :)

Вот с этим я согласен. Идея классная, реализация через попу сделанна
Бог создал людей разными, Линкольн дал людям свободу, а Кольт всех уравнял.
User avatar
Chelya
Уже с Приветом
Posts: 694
Joined: 05 Jul 2002 15:29
Location: NJ

Post by Chelya »

Spring сделан правильно. Рекомендую. Хотя у меня руки до него еше не дошли.
Wisdom has two parts: 1. Having a lot to say. 2. Not saying it.
User avatar
webdeveloper
Уже с Приветом
Posts: 2049
Joined: 12 Jul 2000 09:01
Location: Madison, Wisconsin USA

Post by webdeveloper »

Chelya wrote:Spring сделан правильно. Рекомендую. Хотя у меня руки до него еше не дошли.


ссылку в студию :)
User avatar
webdeveloper
Уже с Приветом
Posts: 2049
Joined: 12 Jul 2000 09:01
Location: Madison, Wisconsin USA

Post by webdeveloper »

Бродяга wrote:
WildVlad wrote:Правда надо отметить, что Struts сделан в исконно индуском стиле программирования :)

Вот с этим я согласен. Идея классная, реализация через попу сделанна


Сосед пришел!!! :mrgreen:

кстати, завтра буду в ваших краях весь день.
User avatar
Chelya
Уже с Приветом
Posts: 694
Joined: 05 Jul 2002 15:29
Location: NJ

Post by Chelya »

webdeveloper wrote:
Chelya wrote:Spring сделан правильно. Рекомендую. Хотя у меня руки до него еше не дошли.


ссылку в студию :)


http://www.springframework.org
Wisdom has two parts: 1. Having a lot to say. 2. Not saying it.
User avatar
Gennadiy
Уже с Приветом
Posts: 11332
Joined: 30 Mar 2000 10:01
Location: Ice Storm Town

Post by Gennadiy »

Это что же - нечто подобное ASP.NET только для Жабы (или наоборот)?
User avatar
Chelya
Уже с Приветом
Posts: 694
Joined: 05 Jul 2002 15:29
Location: NJ

Post by Chelya »

Gennadiy wrote:Это что же - нечто подобное ASP.NET только для Жабы (или наоборот)?

За ASP.NET не скажу - потому как ничего о ней не знаю. А в Spring много всего хорошего. Все написано на первой странице. Основной момент для меня кроме того, что она сделана идеально с точки зрения архитектуры - You can AOP-enable any object managed by Spring, adding aspects such as declarative transaction management. With Spring, you can have declarative transaction management without EJB.
Hibernate/JDO/JDBC integration тоже занимает не последнюю очередь.
Я к сожалению не попал на baseBeans семинар в NY - Rod Johnson выступал "J2EE without EJB". Поездку в Вегас на TSS симпозиум мне не оплатят :(
Wisdom has two parts: 1. Having a lot to say. 2. Not saying it.
User avatar
fruit6
Уже с Приветом
Posts: 4207
Joined: 10 Jan 2004 01:22
Location: n-sk -> MD -> VA

Post by fruit6 »

WildVlad wrote:Правда надо отметить, что Struts сделан в исконно индуском стиле программирования :)


Весьма удивильно упоминание индусов. После беглого взгляда на http://jakarta.apache.org/struts/volunteers.html возникает некоторое недоумение. Я не придираюсь, просто думаю что этот framework сделан достаточно хорошо, для чего он позиционируется, а индусский код обычно выглядит совсем не так. гораздо хуже. хотя если судя по тендециям в IT скоро он таким (индусским) будет весь...
User avatar
Chelya
Уже с Приветом
Posts: 694
Joined: 05 Jul 2002 15:29
Location: NJ

Post by Chelya »

Craig R. McClanahan сам сказал, что сейчас если бы он писал Struts с нуля, то написал бы его по другому. Ближе по концепции к WebWork.
Wisdom has two parts: 1. Having a lot to say. 2. Not saying it.

Return to “Вопросы и новости IT”