разница между / и /* в шаблоне соответствия URL-адреса сервлета

Возможный дубликат:
отображение сервлета / 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 с /, я говорю, что это сервлет по умолчанию и что он будет отвечать за обработку всех запросов, включая запросы на статический контент.

Согласно приведенным выше словам, кажется, что и '/', и '/*' будут обслуживать весь запрос.

В чем разница?


person hguser    schedule 19.03.2012    source источник


Ответы (1)


Строка, содержащая только символ /, указывает на сервлет приложения по умолчанию. В этом случае путь сервлета — это URI запроса минус путь контекста, а информация о пути равна нулю. &

Строка, начинающаяся с *. префикс используется как отображение расширения.

Шаблон /* заставит все пройти через ваш сервлет.

Шаблон / сделает ваш сервлет сервлетом по умолчанию для приложения, что означает, что он подберет каждый шаблон, который не имеет другого точного совпадения.

person Java    schedule 19.03.2012
comment
В чем разница между сервлетом по умолчанию (/) и всем /*? - person hguser; 19.03.2012