Ответ 1
В чем нуждаются <mvc:default-servlet-handler />
в Spring MVC
?
Использование этого диспетчера handler
spring пересылает все запросы по умолчанию Servlet
. Чтобы включить эту функцию, вы можете использовать аннотации или конфигурацию на основе xml, как показано ниже:
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
Или в XML:
<mvc:default-servlet-handler/>
Что он будет делать?
DefaultServletHttpRequestHandler
будет auto-detect
default Servlet
для container
во время запуска, используя список известных имен для большинства основных контейнеров сервлетов (включая Tomcat, Jetty, GlassFish, JBoss, Resin, WebLogic и WebSphere). Если для сервлета по умолчанию настроено другое имя или если используется другой контейнер сервлета, когда имя сервлета по умолчанию неизвестно, то по умолчанию имя сервлета должно быть явно указано, как в следующем примере:
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable("myCustomDefaultServlet");
}
}
Или в XML:
<mvc:default-servlet-handler default-servlet-name="myCustomDefaultServlet"/>
Когда мы должны его использовать? Когда это нужно? Почему мы должны использовать его?
Если вы хотите, чтобы диспетчер spring обслуживал static resources
под web root
, используя сервлет по умолчанию.
Если мы используем DefaultServletHttpRequestHandler
, то мы можем заменить:
<mvc:resources mapping="/js/**" location="/js/" />
<mvc:resources mapping="/css/**" location="/css/" />
<mvc:resources mapping="/images/**" location="/images/" />
с:
<mvc:default-servlet-handler />
Подробнее вы можете изучить здесь.