Подтвердить что ты не робот

В чем заключается необходимость и использование <mvc: default-servlet-handler/">

В чем нуждаются <mvc:default-servlet-handler /> в Spring MVC. Когда мы будем использовать его. Когда это нужно. Почему мы должны использовать его. Я провел несколько ссылок в stackoverflow, но не смог получить четкое представление или понимание. Может кто-нибудь объяснить?

4b9b3361

Ответ 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 />

Подробнее вы можете изучить здесь.

Ответ 2

Поскольку мы обычно конфигурируем DispatcherServlet с отображением "/*", но все запросы, такие как .js/.css, также будут сопоставлены с DispatcherServlet, поэтому нам нужен HttpRequestHandler для отправки этих запросов статических ресурсов в DefaultServlet.