Является ли настройка DispatcherServlet в Spring MVC обычной практикой?

Я новичок в Spring MVC. Но у меня был определенный опыт работы со Struts 1.x. Я хотел бы знать, является ли обычной практикой настраивать DispatcherServlet при работе с Spring MVC, как люди иногда настраивают ActionServlet или RequestProcessor в Struts. 1.х?

Или немного расширим вопрос. Где точки входа для опытного программиста Spring MVC для настройки среды MVC?

Спасибо.


person Community    schedule 20.08.2009    source источник
comment
Пожалуйста, не могли бы вы уточнить, что вы подразумеваете под настройкой - вы имеете в виду специализацию (как я ответил) или настройку (как ответил adatapost)?   -  person Nick Holt    schedule 20.08.2009
comment
На самом деле я имею в виду и то, и другое, так как мне нужна вся информация о его расширении. Более того, я согласен с вашим пунктом. Расширение DispatcherServlet и замена с помощью Filter или Controller. Однако таким образом Spring MVC не может предложить стандартный интерфейс подключаемых модулей для разработчиков подключаемых модулей. В struts некоторые подключаемые модули создаются путем расширения RequestProcessor.   -  person Winston Chen    schedule 20.08.2009
comment
Я не совсем знаком с архитектурой плагинов Struts, но я бы сказал, что Spring MVC API довольно простой. Это немного неправильно названо imho, так как на самом деле это только часть контроллера шаблона MVC, позволяющая вам определять ваши представления и модели по мере необходимости (обычно как JSP и POJO).   -  person Nick Holt    schedule 20.08.2009
comment
Да, но он обслуживает почти (если не все) все требования в порядке. Это хороший фреймворк. Мне это очень нравится.   -  person Winston Chen    schedule 20.08.2009
comment
О да, Spring MVC великолепен — он хорошо интегрирован со Spring и делает достаточно, чтобы передать вам запрос, после чего вы можете делать с ним все, что вам нравится. Это, безусловно, мой предпочтительный способ создания веб-приложений с веб-стандартами XHTML/CSS и JQuery на внешнем интерфейсе.   -  person Nick Holt    schedule 20.08.2009


Ответы (5)


Определенно, это хорошая практика. Spring Framework — веб-фреймворк MVC

РЕЗЮМЕ: вы можете настроить Spring DispatcherServlet, добавив параметры контекста... особенно удобно, когда у вас много общих функций в одном контроллере.

person Community    schedule 20.08.2009

DispatcherServlet, как и большая часть API Spring, в значительной степени предназначен для расширения. В самом деле, если вы обнаружите, что его часть не поддается подклассированию, сообщите о проблеме в их JIRA, и они, скорее всего, исправят ее для вас (я делал это несколько раз).

Сказав это, подавляющее большинство функций может быть достигнуто путем настройки DispatcherServlet, а не его расширения.

person Community    schedule 20.08.2009
comment
Ты прав. Я даже не могу назвать ни одной вещи, которая не может быть достигнута текущей реализацией. Спасибо за ваш совет. Я зарегистрирую вопрос, если я найду необходимость. - person Winston Chen; 21.08.2009

Вот мое предложение, в котором я думаю, что расширение сервлета диспетчера будет «решением».

  1. отдельная проверка, преобразование из контроллера (по нескольким веским причинам)
  2. сделайте контроллер просто делегатом уровня обслуживания.
  3. построить/заполнить объект домена/запроса полностью «до» того, как он достигнет контроллера.
person Community    schedule 02.11.2010
comment
Если вы считаете, что это хороший способ, продолжайте и реализуйте его. Несмотря на то, что я задал этот вопрос в первую очередь, я не нашел случая, когда мне нужно расширить DispatcherServlet. - person Winston Chen; 04.11.2010

Зачем вам специализировать org .springframework.web.servlet.DispatcherServlet?

Предварительная обработка любого запроса может/должна выполняться с помощью javax.servlet.Filter, а все остальное зависит от реализации org.springframework.web.servlet.mvc.Controller.

В качестве альтернативы см. ответ adatapost, который относится к настройке org.springframework.web.servlet.DispatcherServlet через файл web.xml.

person Community    schedule 20.08.2009
comment
Я задаю этот вопрос, чтобы лучше понять этот фреймворк и посмотреть, чем этот способ может служить. :) - person Winston Chen; 20.08.2009
comment
Почему вы хотите специализироваться на чем-то? Потому что у вас может быть потребность, которой у кого-то еще нет. Поэтому я не могу понять, как такие ответы могут иметь одобрение. Если у класса есть защищенные методы, которые есть у DispatcherServlet, это определенно означает, что разработчик считает, что может возникнуть необходимость переопределить его. Разработчики Grails уже переопределили DispatcherServlet, и им было недостаточно фильтров для настройки некоторых функций. - person Cagatay Kalan; 01.05.2016
comment
Всегда есть такая возможность, что вы можете специализироваться, но вопрос задавался, было ли это обычным, что имхо, это не так, и обычно есть лучшие способы добиться того, что вам нужно, хотя, конечно, это не всегда так. - person Nick Holt; 03.05.2016

Я, например, так и не нашел причин расширять DispatcherServlet.

person Community    schedule 20.08.2009