|
|
|
Java EE 6 и шаблон MVC
|
|||
|---|---|---|---|
|
#18+
Всем доброй ночи. Прошу прощения, если похожий вопрос уже задавался на этом форуме и тем не менее, я в свободное от безделья время занимаюсь изучением технологий Java EE 6. Отображая шаблон MVC на типичное Java EE приложение, понятно, что M - это сущности JPA и управляющие этими сущностями EJB, V - Facelets и C - managed beans (поправьте, если ошибаюсь). Простой пример: web-приложение с аутентификацией и авторизацией пользователей. В этом приложении есть XHTML-страничка смены пароля пользователя, managed bean UserController (обрабатывает нажатие на кнопку "Изменить пароль"), stateless EJB UserService (позволяет создавать/обновлять/удалять пользователей, выполнять поиск по имени) и сущность User. Правильно ли я понимаю, что основная логика по проверке введенного текущего пароля пользователя, хешированию нового пароля, получением сущности нужного пользователя и обновлением пароля в этой сущности (путем вызова соответствующего метода UserService (например, UserService.updateUser(User user))) ляжет на плечи контроллера, т.е. класса UserController? Хотелось бы увидеть мнения о правильных вариантах распределения подобного функционала между уровнями web-приложения от людей, съевших на этом не одну собаку. Заранее спасибо за ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2013, 02:31:30 |
|
||
|
Java EE 6 и шаблон MVC
|
|||
|---|---|---|---|
|
#18+
Бизнес логика помещается в ejb ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2013, 10:46:25 |
|
||
|
Java EE 6 и шаблон MVC
|
|||
|---|---|---|---|
|
#18+
managed bean это не контроллер. http://stackoverflow.com/questions/5104094/what-components-are-mvc-in-jsf-mvc-framework managed bean содержит бизнес-логику. Роль контроллера в MVC иная. Кстати, в новых версиях JEE рекомендуют отказаться от managed bean в пользу session bean. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2013, 11:12:56 |
|
||
|
Java EE 6 и шаблон MVC
|
|||
|---|---|---|---|
|
#18+
На самом деле однозначного ответа нет. У меня даже в одной организации было собеседование, на котором просили описать набор контроллеров, которые будут управлять логикой приложения. Я спросил - это контроллеры из MVC? - мне сказали угу, ведь модель это фактически база данных, представление - это страницы, ну а следовательно вся логика приложения - в контроллерах. Я убежал. Применяя шаблоны, следует понимать, для чего они придуманы. Одна из целей - отделить изменяемое от неизменяемого, и вот простой пример, как это можно сделать. Представьте себе, что ваше приложение должно работать не только через браузер, но и через телефонное меню: вам зачитывают пункты, вы выбираете цифру, переходите в следующее меню, и т.д. Ну или общаемся с приложением с помощью смс. Очевидно, что в данной ситуации у приложения сменится представление и контроллер, но вот все, что останется неизменным - и есть модель. В каждой из приведенных 3 ситуаций - разный протокол взаимодействия с пользователем. Протокол реализуется контроллером. Зачитанные фразы меню, присланные смс-ки, ваша html - страница-это представление. Так должно быть. Но на практике, например, вы знаете, что ваше приложение будет работать только в браузере, плюете на всё и часть логики реализуете в контроллере. И это тоже правильно, если вам не надо отделять изменяемое от неизменяемого, поскольку паттерны - не самоцель. Если в результате получается прозрачный, легко изменяемый и сопровождаемый код, остается только снять шляпу. Тем более, что на самом деле такое разделение всё равно есть, если принять во внимание то, что неизменяемая часть на самом деле имеется (фронт контроллер javax.faces.FacesServlet или что там у вас), а ваш как-бы контроллер незаметно стал моделью ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2013, 11:19:49 |
|
||
|
Java EE 6 и шаблон MVC
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, По приведенной вами ссылке мне понятен случай "smaller developer picture". Понятно также, что FacesServlet - некий front controller, передающий в дальнейшем управление к managed beans. Немного непонятен только отказ от managed beans в пользу session beans (видимо это случай "big architectural picture"). Это же EJB, разве их можно вызвать из XHTML странички с помощью EL? P.S. Программирование для Java EE 6 начал с изучения приложения Petstore от Antonio Goncalves. В этом приложении, на мой взгляд, присутствует достаточно чёткое следование шаблону MVC. Смутило, что сессионные бины там предельно просты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2013, 11:47:10 |
|
||
|
Java EE 6 и шаблон MVC
|
|||
|---|---|---|---|
|
#18+
ivanraОчевидно, что в данной ситуации у приложения сменится представление и контроллер, но вот все, что останется неизменным - и есть модель. а я вот согласен, именно так определяю модель, а БЛ вне модели это от лукавого))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2013, 11:47:31 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=245&tid=2130017]: |
0ms |
get settings: |
16ms |
get forum list: |
24ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
47ms |
get topic data: |
21ms |
get forum data: |
4ms |
get page messages: |
98ms |
get tp. blocked users: |
3ms |
| others: | 291ms |
| total: | 518ms |

| 0 / 0 |
