Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Java EE 6 и шаблон MVC / 7 сообщений из 7, страница 1 из 1
08.02.2013, 02:31:30
    #38142746
c3p0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java EE 6 и шаблон MVC
Всем доброй ночи.

Прошу прощения, если похожий вопрос уже задавался на этом форуме и тем не менее, я в свободное от безделья время занимаюсь изучением технологий 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-приложения от людей, съевших на этом не одну собаку.

Заранее спасибо за ответ.
...
Рейтинг: 0 / 0
08.02.2013, 10:46:25
    #38142961
Tensai
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java EE 6 и шаблон MVC
Бизнес логика помещается в ejb
...
Рейтинг: 0 / 0
08.02.2013, 11:12:56
    #38143015
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java EE 6 и шаблон MVC
managed bean это не контроллер.
http://stackoverflow.com/questions/5104094/what-components-are-mvc-in-jsf-mvc-framework
managed bean содержит бизнес-логику. Роль контроллера в MVC иная.

Кстати, в новых версиях JEE рекомендуют отказаться от managed bean в пользу session bean.
...
Рейтинг: 0 / 0
08.02.2013, 11:19:49
    #38143026
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java EE 6 и шаблон MVC
На самом деле однозначного ответа нет. У меня даже в одной организации было собеседование, на котором просили описать набор контроллеров, которые будут управлять логикой приложения. Я спросил - это контроллеры из MVC? - мне сказали угу, ведь модель это фактически база данных, представление - это страницы, ну а следовательно вся логика приложения - в контроллерах. Я убежал.
Применяя шаблоны, следует понимать, для чего они придуманы. Одна из целей - отделить изменяемое от неизменяемого, и вот простой пример, как это можно сделать.
Представьте себе, что ваше приложение должно работать не только через браузер, но и через телефонное меню: вам зачитывают пункты, вы выбираете цифру, переходите в следующее меню, и т.д. Ну или общаемся с приложением с помощью смс.
Очевидно, что в данной ситуации у приложения сменится представление и контроллер, но вот все, что останется неизменным - и есть модель.
В каждой из приведенных 3 ситуаций - разный протокол взаимодействия с пользователем. Протокол реализуется контроллером.
Зачитанные фразы меню, присланные смс-ки, ваша html - страница-это представление.

Так должно быть. Но на практике, например, вы знаете, что ваше приложение будет работать только в браузере, плюете на всё и часть логики реализуете в контроллере. И это тоже правильно, если вам не надо отделять изменяемое от неизменяемого, поскольку паттерны - не самоцель. Если в результате получается прозрачный, легко изменяемый и сопровождаемый код, остается только снять шляпу.
Тем более, что на самом деле такое разделение всё равно есть, если принять во внимание то, что неизменяемая часть на самом деле имеется (фронт контроллер javax.faces.FacesServlet или что там у вас), а ваш как-бы контроллер незаметно стал моделью
...
Рейтинг: 0 / 0
08.02.2013, 11:47:10
    #38143078
c3p0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java EE 6 и шаблон MVC
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. Смутило, что сессионные бины там предельно просты.
...
Рейтинг: 0 / 0
08.02.2013, 11:47:31
    #38143079
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java EE 6 и шаблон MVC
ivanraОчевидно, что в данной ситуации у приложения сменится представление и контроллер, но вот все, что останется неизменным - и есть модель.
а я вот согласен, именно так определяю модель, а БЛ вне модели это от лукавого)))
...
Рейтинг: 0 / 0
08.02.2013, 11:52:59
    #38143085
c3p0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java EE 6 и шаблон MVC
ivanra,

Понимаю, что многие пишут, как бог на душу положит. Хотелось как раз узнать, как всё же правильно организовать логику приложения на простом примере. Спасибо за подробное объяснение.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Java EE 6 и шаблон MVC / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]