На самом деле вам не нужна пружина, чтобы что-то делать, контейнер сервлетов может решить эту проблему за вас.
При сопоставлении с каким сервлетом отправляется запрос, это зависит от правил сопоставления, определенных в шаблоне url. Никакие 2 сервлета не могут иметь одинаковый шаблон, но они могут иметь перекрывающиеся шаблоны. Тогда применяются 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.
Здесь вы можете найти более подробную информацию .