0

Хотелось бы узнать, почему web.xml для Struts2 и Spring MVC отличается.Почему web.xml DD для Sprintource Bootstrap использует DispatcherServlet, а struts2 использует фильтр?

Оба фреймворка используют шаблон MVC «front controller» в моем понимании, но Struts2 использует фильтр и Spring MVC использует прямое объявление сервлета в web.xml?

Не использует ли сертлеты также сервлеты? Если это так, то как это сделать, что сервлет не объявлен в web.xml, как это происходит для Spring?

Spring MVC:

<servlet> 
    <servlet-name>spring</servlet-name> 
    <servlet-class> 
     org.springframework.web.servlet.DispatcherServlet 
    </servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>spring</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

Struts2:

<filter> 
    <filter-name>struts2</filter-name> 
    <filter-class> 
     org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 
    </filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>struts2</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
+0

Если все рамки MVC сделал все точно так же, почему у нас есть серверные? Они просто выбрали другой способ достижения аналогичной цели. –

+0

, хотя задавая вопрос, хотя я пытаюсь узнать больше об обоих и о спецификации сервлета вообще, стоит заняться на мой взгляд – aruuuuu

ответ

0

Не Struts использовать сервлеты, а? Если это так, то как это сделать, что сервлет не объявлен в web.xml, как это происходит для Spring?

Struts2 использует:

  • Действие вместо сервлет (они ThreadLocal, следовательно потокобезопасный и создаются один раз для каждого запроса) в качестве контроллеров, обрабатывать уровень представления;
  • перехватчиков для обработки ортогональными, cross-cutting concerns (извините, ждите восстановления удалённого), такие как лесозаготовки, управление транзакциями, параметры синтаксического анализа, проверка и т.д ...;
  • StrutsPrepareAndExecuteFilter для обработки процесса диспетчеризации.

Таким образом, даже если использование Servlet возможно (through the declaration of an excluded pattern) в приложении Struts2 ... нет, Struts2 не использует сервлеты вообще.

Struts2 также помещает значения в ValueStack вместо того, толкая их в запросе, и это делает его единственным мейнстрим Pull-MVC framework (в то время как Spring MVC, Struts1 и другие Push-MVC рамки)

 Смежные вопросы

  • Нет связанных вопросов^_^