Ответ 1
Вы можете переназначить сервлет tomcats по умолчанию (который обрабатывает статический контент), например.
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/images/*</url-pattern>
</servlet-mapping>
Я создаю приложение Spring MVC, а сервлет frontController отображается в "/", перехватывая все запросы, я должен был бы обслуживать статическое содержимое (.js,.css,.png...) от tomcat, а не Spring. Моя структура приложения
-webapp/
styles/
images/
WEB-INF/
views/
По умолчанию, поскольку frontController отображается в корне контекста моего приложения, он обрабатывает все запросы, но не обслуживает статический ресурс. Конфигурация mvc для статических ресурсов следующая.
<mvc:resources mapping="/resources/**" location="/"/>
И код страницы:
<img src="resources/images/logo.png" />
Мне нужно настроить Tomcat для обслуживания статических ресурсов без взаимодействия Spring.
Любое предложение?
Вы можете переназначить сервлет tomcats по умолчанию (который обрабатывает статический контент), например.
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/images/*</url-pattern>
</servlet-mapping>
Посмотрите этот поток списка рассылки и посмотрите, делает ли это то, что вы ищете.
Другое потенциальное решение. Просто добавьте следующее в свой Spring DispatcherServlet.xml(Spring Docs)
<mvc:default-servlet-handler/>
Этот тег позволяет сопоставлять DispatcherServlet с "/" (таким образом, переопределяя отображение сервлетов по умолчанию в контейнере), но при этом разрешая статические запросы ресурсов обрабатывать Servlet по умолчанию для контейнера. Он настраивает DefaultServletHttpRequestHandler с сопоставлением URL (с учетом наименьшего порядка приоритета) "/**". Этот обработчик будет перенаправлять все запросы на Servlet по умолчанию.
Плюсы (по сравнению с решением @nos)
против
Кроме того, независимо от того решения, которое предпочитаете, я бы предложил добавить следующее в ваш web.xml, чтобы предотвратить список каталогов (например, URL/изображения)
<servlet>
<servlet-name>default</servlet-name>
<init-param>
<param-name>dirAllowed</param-name>
<param-value>false</param-value>
</init-param>
</servlet>