Разница между запросом MVC и компонентом MVC
Я слышал, что JSF реализует MVC на основе компонентов, а Spring MVC реализует MVC на основе запросов. Я хотел бы знать, какова точная техническая разница между этими двумя типами.
1 ответ
В MVC, основанном на запросе (действии), один сервлет фронт-контроллера будет делегировать моделям действий на основе URL/ параметров запроса. Вы работаете напрямую с raw HttpServletRequest
а также HttpServletResponse
объекты в модели действия. Вы должны написать код самостоятельно, чтобы собрать, преобразовать и проверить параметры запроса и, при необходимости, обновить значения модели, прежде чем вы сможете вызвать бизнес-действие.
В MVC, основанном на компонентах, один фронт-контроллер будет собирать, преобразовывать и проверять параметры запроса и обновлять значения модели самостоятельно, так что вам нужно только самим беспокоиться о бизнес-действиях. То, как контроллер должен собирать / преобразовывать / проверять / обновлять значения, определяется в одном месте - представлении. Поскольку это невозможно с "простым" HTML, для достижения цели требуется специальный язык разметки. В случае JSF 2.0 это основано на XML (XHTML). Вы используете XML для определения компонентов пользовательского интерфейса, которые, в свою очередь, содержат информацию о том, как контроллер должен собирать / преобразовывать / проверять / обновлять значения модели и генерировать / отображать необходимое представление HTML.
Преимущества и недостатки должны быть понятны в этом пункте: с основанной на запросе средой MVC вам нужно написать больше (шаблонный) код самостоятельно для достижения цели. Однако в результате вы получаете гораздо более детальный контроль над процессом и выводом HTML/CSS/JS. С компонентной средой MVC вам не нужно писать много кода самостоятельно. Однако у вас менее детальный контроль над процессом и выводом HTML/CSS/JS. Поэтому, если вы хотите сделать что-то немного иначе, чем описывает стандарт и / или обеспечивает реализация, то вы будете тратить гораздо больше времени на компонентную среду MVC, когда вы не очень хорошо разбираетесь в ее плюсах и минусах.,
Манфред Рим (член команды JSF 2.x и бывший специалист по Java EE 8 MVC 1.0) хорошо обрисовал это во время своей речи о MVC 1.0 (JSR 371) на Devoxx 14: