Возможный дубликат:
отображение сервлета / vs /*
В чем разница между «/» и «/*» в сопоставлении URL-адресов сервлета?
С тех пор, как я читаю книгу «Весна в действии», я нашла такие слова:
Далее мы должны указать, какие URL-адреса будут обрабатываться DispatcherServlet. Обычно DispatcherServlet сопоставляется с шаблонами URL, такими как .htm, / или /app. Но у этих шаблонов URL есть несколько проблем:
- Шаблон *.htm подразумевает, что ответ всегда будет в формате HTML (что, как мы узнаем из главы 11, не обязательно так).
- Сопоставление его с /* не подразумевает какого-либо определенного типа ответа, но указывает, что DispatcherServlet будет обслуживать все запросы. Это делает обслуживание статического контента, такого как изображения и таблицы стилей, более сложным, чем это необходимо.
- Шаблон /app (или что-то подобное) помогает нам отличать контент, обслуживаемый Dispatcher-Servlet, от контента других типов. Но затем у нас есть детали реализации (в частности, путь /app), представленные в наших URL-адресах. Это приводит к сложной тактике перезаписи URL, чтобы скрыть путь /app.
Вместо того, чтобы использовать какие-либо из этих ошибочных схем отображения сервлетов, я предпочитаю отображать DispatcherServlet следующим образом:
<servlet-mapping> <servlet-name>spitter</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
Сопоставляя DispatcherServlet с /, я говорю, что это сервлет по умолчанию и что он будет отвечать за обработку всех запросов, включая запросы на статический контент.
Согласно приведенным выше словам, кажется, что и '/', и '/*' будут обслуживать весь запрос.
В чем разница?