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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пытаюсь понять принцыпы и средства разработки, velocity, struts, jsf, jsp 
V
    Опции темы
DimW
  Дата 7.6.2007, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

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



Привет всем!
Сразу извиняюсь за душуизлияние но...
История моего знакомства с языком java началась так:
В один прекрасный день нам сказали что наша контора покупает web проект, который написан на java + jsp + struts индускими девелоперами. И нам в кратчайшие сроки необходимо освоить присутствующии технологии.
Тут все и началось, начали с малого - с языка java smile. Такова аргазма я не испытывал давно, наверное в последнираз это было когда я начал осваивать Oracle. Вобщем язык и идеи явы мне очень понравились! 
Дальше  начал юзать jsp. Первые впечатления и имоции давольно положительные - "вау! я могу динамически генерить хтмл."
Эти положительные имоции продолжились не долго... Вот вроди когда сам пишешь подобную страницу все понятно все зашибись, но когда дело дошло до разбора индийского творения, то наступил "пипец". Это реальная каша (struts и jsp), но только не из одной крупы, а такое ощущение что все возможные крупы высыпали в одну кастрюлю. Я не мог поверить, неужели действительно это и есть разработка web приложения, в том виде в каком ее представили индуские девелоперы!  smile 
После увиденного я решил ознакомится с самой технологией j2ee, набрал книг, начинаю читать и вижу все тот же самый jsp, ejb и остальное... Да думаю, действительно судя по книге все верно организовано. И начал постепенно смиряться с этой мыслью.
Ну так вот писали мы писали, плевались, матерились, легче от этого не становилось. И как то мне довелось прочитать топ: http://forum.vingrad.ru/forum/topic-44988/...ry346919/0.html.
в котором знающие люди утверждают, что то что написано в книгах это ни что иное, как наглое навязывание технологий.
Ура подумал я! velocity!
Несколько раз перечитал топик и решил попробывать. Но есть несколько вещей которые я не могу понять:

1) struts, jsf, velocity - это взаимо заминяемые средства?
т.е. все ли они отделяют бизнес логику от создания пользовательского интерфейса? На сколько я понял velocity однозначно, а остальные?

2) по прежнему не понятно как использовать velocity при создании пользовательского интерфейса. Я выполнил примет из вышеуказанного топа, автором которого является Domestic Cat. Все заработало, но что дальше как его применить в хтмл?

Буду очень признателен если вы наведете порядок в моей бошке и направите на путь истинный! smile

PM MAIL ICQ   Вверх
Hidrag
Дата 7.6.2007, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Присоединяюсь к вопросам smile


--------------------
user posted image
PM WWW ICQ   Вверх
stup
Дата 7.6.2007, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



В большинстве случаев для обычного веб проекта velocity заменяет jsp. Просто вместо скриплетов 
(в лучшем случае собственных тегов) пишешь маленькие и изящные конструкции VTL. В принципе и JSP позволяет качественно разделить работу веб дизайнера и программиста (если следовать рекомендациям по использованию  smile  ), но на практике на этапе поддержки проекта на jsp страницах появляется каша, даже если класс программистов очень высок. На velocity же особой каши сделать не получится. Кроме этого, velocity намного приятней в использовании по сравнению с обычно длиннющими jsp custom tags.
P.S. Все вышесказанное - исключительно мое мнение начинающего  smile 
PM MAIL   Вверх
DimW
Дата 7.6.2007, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

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



Цитата(stup @  7.6.2007,  14:42 Найти цитируемый пост)
В большинстве случаев для обычного веб проекта velocity заменяет jsp



stup, что вы имеете ввиду, что для серьезных проектов velocity не пригоден или что для написания серьезных проектов jsp дает какую либо гибкость?
Из личного опыта знаю что любой простенький проек часто перерастает в более серьезный и если технология была выбрана "не верно", то более серьезный проек зачастую не дописывается, а переписывается с нуля.
Давайте в этой теме не будем разделять "простой" проек от "сложного", будем считать что выбор технологии осущетвляется для написания проекта, который в последствии будет расширяться и расширяться.

stup, спасибо за мнение smile , но затронутые вопросы(1, 2) попрежнему не освящены. Пжалуйста пролейте свет!


Это сообщение отредактировал(а) DimW - 7.6.2007, 15:57
PM MAIL ICQ   Вверх
tux
Дата 7.6.2007, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

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



Цитата(DimW @  7.6.2007,  12:15 Найти цитируемый пост)
struts, jsf, velocity - это взаимо заминяемые средства?

Нет. Struts и JSF - это веб-фреймворки, упрощающие разработку веб-приложений, Velocity - это язык разметки текста, с помощью которого можно вообще любой текст генерировать, не только HTML. По назначению они никак не пересекаются. Struts и Velocity можно использовать совместно. JSF и Velocity - не знаю, скорее всего нет.

Цитата(DimW @  7.6.2007,  12:15 Найти цитируемый пост)
2) по прежнему не понятно как использовать velocity при создании пользовательского интерфейса. Я выполнил примет из вышеуказанного топа, автором которого является Domestic Cat. Все заработало, но что дальше как его применить в хтмл?

В дистрибутиве Velocity есть примеры веб-приложений, показывающие как его использовать. Однако, лучше взять какой-то фреймворк (Struts, Spring, Turbine), который работает с Velocity. Последние два поддерживают Velocity, как говорится, из коробки. 

Цитата(DimW @  7.6.2007,  15:56 Найти цитируемый пост)
что для серьезных проектов velocity не пригоден или что для написания серьезных проектов jsp дает какую либо гибкость?

Velocity для любых проектов подходит - и больших и маленьких.
PM MAIL Skype GTalk Jabber YIM   Вверх
stup
Дата 7.6.2007, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

что для серьезных проектов velocity не пригоден или что для написания серьезных проектов jsp дает какую либо гибкость?

Конечно же я совсем не это имел ввиду  smile Как раз наоборот, для написания серьезных больших проектов velocity намного более удобен, чем jsp. Я всего лишь хотел указать наиболее удачное и стоящее применение velocity (по моему скромному мнению). И, как уже сказал тов. Tux, не нужно путать теплое с мягким. Есть фреймворки, которые позволяют значительно упростить процесс общения клиент-сервер (struts, jsf), а есть шаболнные движки, которые позволяют разделить логику и визуализацию (velocity&java custom tags library). Кстати, давно хотел спросить знающих людей. Стратс довольно не удобен тем, что при его использовании в серьезных проектах плодится множество action-классов. Даже если хорошо продумать иерархию пакетов, все равно поиск чего то нужного будет затруднен. В моем опыте эта проблема была решена путем дописывания к struts "распределенных" action-классов. Из распределенного action-класса вызывается нужный в зависимости от параметра в запросе. У кого есть другой опыт решения этой проблемы?
PM MAIL   Вверх
DimW
Дата 7.6.2007, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

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



Цитата(tux @  7.6.2007,  16:15 Найти цитируемый пост)
 Velocity - это язык разметки текста, с помощью которого можно вообще любой текст генерировать, не только HTML.


то есть в место привычного мне xxx.jsp файла, я получаю xxx.vm?
правельно ли я понимаю что вся хтмл разметка теперь делается в xxx.vm + в нужные места вставляются вызов методов java средствами velocity?



tux, спасибо!

теперь в голове вабще все перемешалось :( 
посмотрю пока примеры...
PM MAIL ICQ   Вверх
stup
  Дата 7.6.2007, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

то есть в место привычного мне xxx.jsp файла, я получаю xxx.vm?
правельно ли я понимаю что вся хтмл разметка теперь делается в xxx.vm + в нужные места вставляются вызов методов java средствами velocity?


Код

<HTML>
<BODY>
Hello $customer.Name!
<table>
#foreach( $mud in $mudsOnSpecial )
   #if ( $customer.hasPurchased($mud) )
      <tr>
        <td>
          $flogger.getPromo( $mud )
        </td>
      </tr>
   #end
#end
</table>


Как видим, да 
PM MAIL   Вверх
DimW
Дата 8.6.2007, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

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



Цитата(stup @  7.6.2007,  16:53 Найти цитируемый пост)
Как видим, да


вобщем я еще в большем тупике. 
Раз velocity язык разметки, а его специфические термины позволяют использовать условия, циклы, вызов методов, то чем он отличается от того же html + jsp.
вот кусок кода на jsp:
Код

<HTML>
<BODY>
Hello <%=customer.Name%>!
<table>
<%while ( mud < mudsOnSpecial ){
   if ( customer.hasPurchased(mud) ){
      out.println("<tr>");
        out.println("<td>");
          flogger.getPromo(mud );
        out.println("</td>");
      out.println("</tr>");
   }
}%>
</table>


вот на velocity:
Код

<HTML>
<BODY>
Hello $customer.Name!
<table>
#foreach( $mud in $mudsOnSpecial )
   #if ( $customer.hasPurchased($mud) )
      <tr>
        <td>
          $flogger.getPromo( $mud )
        </td>
      </tr>
   #end
#end
</table>


Единственное приемущество которое я заметил это читабельность кода.
Так в чем же прелесть velocity только лишь в читабельности кода, на сколько я понял это лишь одно из преемуществ.
Пожалуйста "ткните пальцем" на что я должен обратить внимание!

З.Ы. stup, спасибо за ответ!
PM MAIL ICQ   Вверх
stup
Дата 8.6.2007, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

http://www.javenue.info/post/25

Как видим, очень удобно применять велосити для создания jsp custom tags. Мы имеем возможность очень здорово разделить тег и его реализацию (избавляемся от кучи append'ов строк html и javascript, которые так раздражают всех программистов библиотек тегов). Velocity несколько напоминает xsl, только он шире, т.к. не привязан к формату данных.

Если в двух словах: Синтаксис удобней, код лаконичней.  Но это применение велосити только к джсп. Не забывайте, что это просто шаблонный движок и применять его можно к чему угодно. Хотя лично я, кроме как к джсп, не применял  smile 
PM MAIL   Вверх
serious
Дата 8.6.2007, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Как я понимаю, при использовании Velocity дизайнер должен быть осведомлен о вызове различных методов, равно как и об их параметрах. Зачем это нужно знать дизайнеру?


--------------------
Я знаю то, что ничего не знаю, а некоторые не знают и этого.
PM MAIL   Вверх
jsa
Дата 8.6.2007, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(serious @ 8.6.2007,  11:16)
Как я понимаю, при использовании Velocity дизайнер должен быть осведомлен о вызове различных методов, равно как и об их параметрах. Зачем это нужно знать дизайнеру?

а где то это нет так ?  smile 
тем более практическе всегда (в большистве случаем) шаблоны пишет программист
поправте меня если я не прав


--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
Maksym
Дата 8.6.2007, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

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



Цитата(jsa @  8.6.2007,  11:44 Найти цитируемый пост)
тем более практическе всегда (в большистве случаем) шаблоны пишет программист
поправте меня если я не прав 

Думаю, прав. Обычно дизайнер верстает макеты и следит за тем чтобы результирующие динамически сформированные страницы соответствовали этим макетам. И все. А шабоны делает программист. Хотя очень хотелось бы взвалить и это на дизайнера, но на моем опыте ни к чему хорошему такие попытки еще не приводили -- слишком много дополнительной документации нужно подготовить для дизайнера, чтобы ему было  на что опираться при разработки шаблонов + слишком высокие требования к квалификации этого дизайнера.
PM MAIL   Вверх
DimW
Дата 8.6.2007, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

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



Цитата(stup @  8.6.2007,  08:59 Найти цитируемый пост)
В случае с jsp логику лучше спрятать в свой тэг

я не могу согласиться с этим утвеждением.
немного расскажу как мы упростили себе жизнь:
после токо как нам пришлось руками нацарапать по несколько страниц, нам стало плохо, и мы решили сделать следующее.
1) мы определили ряд компонентов которые нам потребуются для работы с БД.
2) определили уникальные типы для каждого.
3) определили как каждый компонент должен себя вести.
4) нарисовали css для каждого.
И каждый компонент запихнули в метод java, на выходе метод возвращает хтмл + java script для компонента. т.е. хтмл показывает компонент в браузере, а жава скрипт диктует его поведение.

К примеру компонент типа TDateTimePicker:
Этот компонент предназначен для выбора даты из календаря.
в хтмл это выглядит так:
<input type="text"> (дата попадает сюда после выбора из календаря)
<button>...</button> (по нажатию кнопки вызывается календарь)
вызов компонента осуществляется так:
<%=компонент(параметры компонента)%> 
Теперь нам не надо парится каждый раз когда нам требуется такой компонент, мы просто вызывает нужный метод!
Мы облегчели себе жизнь только тем, что нам не приходится тратить время на формирование пользовательского интерфейса, а все остальное попрежнему приходится делать руками на jsp:
а) заполнение компонентов данными из базы для редактирования;
б) вызов методов java для добавления, редактирования, удаления данных;
и т.д.
Вобщем то какой то чистоты кода мы добились, но не настолько насколько хотелось бы!
По прежнему нет четкой грани между бизнес логикой и интерфейсом системы.
По этому я и открыл эту тему для того что бы выяснить чем можно воспользоваться. На сколько я понял velocity это решает, но пока я этого не увидел, и что более выроятно просто не могу понять!

Это сообщение отредактировал(а) DimW - 8.6.2007, 13:45
PM MAIL ICQ   Вверх
tux
Дата 8.6.2007, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

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



Цитата(DimW @  8.6.2007,  13:43 Найти цитируемый пост)
На сколько я понял velocity это решает

Velocity - это генератор текста. И все. А отнюдь не чудодейственное средство. Velocity удобно использовать если знать что он умеет. А умеет он в общем-то немного. Боюсь, что если думать, что Velocity спасет проект, тебя постигнет жестокое разочарование. Зато он может заставить писать работу с базой данных в Java-коде поскольку в шаблоне Velocity это сделать нереально. Это несомненно положительно скажется на качестве кода.
PM MAIL Skype GTalk Jabber YIM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1081 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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