У меня есть некоторые сомнения в понимании того, как значение в <url-pattern
> интерпретируется как соответствующее <servlet-mapping>
или <filter-mapping>
. В основном сомнения возникают в том, как интерпретируется *
.
Предположим, что я развернул веб-приложение (.war) с корневым контекстом /firstweb.
Рассмотрим следующий <url-pattern>
, определенный в web.xml
(1) <url-pattern> /* </url-pattern>
(2) <url-pattern> /test/abc </url-pattern>
(3) <url-pattern> /test/abc/* </url-pattern>
(4) <url-pattern> /*/abc </url-pattern>
Я знаю, что "*"
соответствует любой строке/тексту. Взяв это за основу, у меня есть некоторые сомнения.
Q1) Для случая (1), а именно /*
будет ли это соответствовать чему-либо? Если да, будет ли это соответствовать /test
, /text/abc
, /test/abc
и т. д., когда оно находится в URL-адресе?
Q2) Теперь для случая (2), а именно /test/abc
, будет ли он соответствовать, когда URL-адрес точно равен /test/abc
? как насчет /*
, потому что, как мне кажется, *
означает любой текст. Не сделает ли это двусмысленным шаблон сопоставления?
Q3) Кроме того, я считаю, что все эти URL-адреса относятся к корневому контексту, то есть все URL-адреса выглядят так: /firstweb/xxx' ,
/firstweb/test/abc,
/firstweb/`.
Любые ответы простыми словами, чтобы развеять это сомнение, высоко ценятся.
Изменить
Провел еще несколько исследований, следующие ссылки помогут понять, как интерпретировать <url-pattern>
а) что, если шаблон URL соответствует нескольким сервлетам?
б) http://docs.roguewave.com/hydraexpress/3.5.0/html/rwsfservletug/4-3.html