Как остановить Spring MVC, блокирующий все другие Сервлеты?

Я использую Spring 2.5 MVC и хочу добавить другой сторонний Сервлет. Проблема, тот Spring, MVC ловит весь запрос, таким образом, Сервлет не получает запроса. Здесь Отрывок web.xml:

SpringMVC org.springframework.web.servlet. DispatcherServlet 2

<servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>  

<servlet>
    <description>This is the servlet needed for cache.type servlet, returns the packed resources</description>
    <display-name>PackServlet</display-name>
    <servlet-name>PackServlet</servlet-name>
   <servlet-class>net.sf.packtag.servlet.PackServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>PackServlet</servlet-name>
    <url-pattern>*.pack</url-pattern>
</servlet-mapping>

Отображение/* действительно необходимо для приложения, pack:tag (сторонний Сервлет) действительно нуждаются в отображении на основе расширения файла. Какие-либо возможности сказать Spring не обрабатывать запрос?Спасибо и всего наилучшего.

9
задан Josh1billion 27 October 2015 в 20:21
поделиться

2 ответа

На самом деле вам не нужна пружина, чтобы что-либо делать, контейнер сервлета может решить эту проблему за вас.

Сопоставление сервлету, которому отправляется запрос, зависит от правил сопоставления, определенных шаблоном URL. У двух сервлетов не может быть одинаковых шаблонов, но они могут иметь перекрывающиеся шаблоны. Тогда применяются 4 правила:

1) точные совпадения имеют приоритет над совпадениями с подстановочными знаками. 2) более длинные шаблоны имеют приоритет над более короткими. 3) совпадения путей имеют приоритет над совпадениями типов файлов 4) / соответствует чему-либо, еще не совпавшему

<servlet-mapping>
  <servlet-name>PackServlet</servlet-name>
  <url-pattern>*.pack</url-pattern>
</servlet-mapping>
<servlet-mapping>
  <servlet-name>SpringMVC</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

Если вы используете / * для SpringMVC, он может совпадать по самому длинному пути. Удалив *, вы убедитесь, что следуете спецификации сервлета для сервлета по умолчанию и подпадаете под правило 4.

Здесь вы можете найти более подробную информацию .

14
ответ дан 4 December 2019 в 13:45
поделиться

Проверьте принятый ответ на этот вопрос SO. Это должно решить вашу проблему.

Можно ли настроить SpringMVC для обработки всех запросов, но исключить каталоги статического содержимого?

1
ответ дан 4 December 2019 в 13:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: