Я запускаю Tomcat 5.5.4, и сервлет работает без проблем. Однако я хотел бы настроить отображение для запуска сервлета только при отправке URL-адреса, содержащего конкретную строку запроса.
Прямо сейчас в web.xml у меня есть: <servlet-mapping>
<servlet-name>MyServer</servlet-name>
<url-pattern>/go/*</url-pattern>
</servlet-mapping>
Если браузер отправляет http://localhost/MyServer/go?P=123, запускается сервлет. и все хорошо. Однако я хотел бы запускать этот сервлет только в том случае, если URL-адрес точно такой, как только что показано. К сожалению, прямо сейчас, если URL-адрес http://localhost/MyServer/go?P=AnyDarnThing сервлет все еще запускается. Я попытался настроить следующее: <url-pattern>/go?P=123</url-pattern>
, но в результате запрошенный ресурс (/ MyServer / go) недоступен.
Я пробовал множество вариантов (цитируя строку, ...) в указанном выше шаблоне URL, но всегда получаю указанную выше ошибку. Я заметил, что если я (в целях отладки) опущу "?" как в <url-pattern>/goP=123</url-pattern>
, я больше не получаю сообщение об ошибке и сервер запускается (но, конечно, он не отвечает на «строку запроса», потому что она неправильно сформирована.) Это наводит на мысль, что знак «?» вызывает проблему при отображении. Я попытался заменить его эквивалентом специального символа URL-адреса следующим образом: <url-pattern>/go%3FP=123</url-pattern>
, но это дает тот же результат, который был только что описан выше, когда я пытался отбросить "?" все вместе.
Я понимаю, что могу позволить сервлету запускаться при отправке любой строки запроса, а затем «игнорировать» запрос для всех, кроме того, который мне небезразличен, но есть причина, по которой я предпочел бы сначала не запускать сервлет. Итак, мой вопрос: как я могу настроить сервлет так, чтобы он запускался только при включении определенной строки запроса?
Спасибо.