Ответ 1
Насколько мне известно, это соглашение было распространено Struts1. Руководство пользователя описывает это так:
5.4.2 Настройка сопоставления ActionServlet
Примечание. Материал в этом разделе не относится только к Struts. Конфигурация отображений сервлета определена в Спецификации сервлета Java. В этом разделе описаны наиболее распространенные способы настройки приложения.
Существует два распространенных подхода к определению URL-адресов, которые будут обрабатываться сервлетом контроллера: сопоставление префиксов и сопоставление расширений. Соответствующая запись сопоставления для каждого подхода будет описана ниже.
Сопоставление префиксов означает, что вы хотите, чтобы все URL-адреса, начинающиеся (после части пути контекста) с определенным значением, передавались этому сервлету. Такая запись может выглядеть так:
<servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>/do/*</url-pattern> </servlet-mapping>
Это означает, что URI запроса для соответствия пути
/logon
описанному ранее, может выглядеть следующим образом:http://www.mycompany.com/myapplication/do/logon
где
/myapplication
- это контекстный путь, по которому развертывается ваше приложение.Сопоставление расширений, с другой стороны, сопоставляет URI запроса с сервлетом действия на основе того факта, что URI заканчивается периодом, за которым следует определенный набор символов. Например, сервлет обработки JSP сопоставляется с
*.jsp
, так что он вызывается для обработки каждой запрашиваемой страницы JSP. Чтобы использовать расширение*.do
(что подразумевает "сделать что-то"), запись сопоставления будет выглядеть так:<servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
и URI запроса для соответствия пути
/logon
описанному ранее, может выглядеть следующим образом:http://www.mycompany.com/myapplication/logon.do
ПРЕДУПРЕЖДЕНИЕ. Каркас не будет работать правильно, если вы зададите более одного элемента
<servlet-mapping>
для сервлета контроллера.ВНИМАНИЕ - Если вы используете поддержку нового модуля начиная с версии 1.1, вы должны знать, что поддерживается только сопоставление расширений.
И я думаю, что это соглашение было сохранено (иногда, чтобы не менять URL-адреса даже после замены Struts1, иногда просто потому, что люди были довольны этим).