Я использую 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 не обрабатывать запрос?Спасибо и всего наилучшего.
На самом деле вам не нужна пружина, чтобы что-либо делать, контейнер сервлета может решить эту проблему за вас.
Сопоставление сервлету, которому отправляется запрос, зависит от правил сопоставления, определенных шаблоном 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.
Проверьте принятый ответ на этот вопрос SO. Это должно решить вашу проблему.