Моя цель — получить один и тот же сервлет servlet1 со всеми URL-адресами следующего шаблона:
myserver.com/path1/*
где * может быть что угодно вроде "x", "x/xx", "x/xx/x.cfg" и т. д.
В конце концов, я хочу обрабатывать только URL-адреса, следующие за регулярным выражением [0-9a-zA-Z ]+.(cfg|xml|htm), но я могу сделать это в сервлете. Сервлет анализирует исходный URL-адрес и динамически создает запрошенные файлы конфигурации.
Когда у меня есть следующее отображение
<servlet-name>servlet1</servlet-name>
<url-pattern>/path1</url-pattern>
как и ожидалось, URL-адрес myserver.com/path1 ведет к servlet1.
Когда я использую следующее сопоставление, похожее на то, которое имеет для меня смысл:
<servlet-name>servlet1</servlet-name>
<url-pattern>/path1/*</url-pattern>
Я все еще могу получить доступ к сервлету 1 с URL-адресом myserver.com/path1/.
Я не могу получить доступ к сервлету с URL-адресом myserver.com/path1/path2, этот URL фактически возвращает меня к записи приветственных файлов.
На самом деле все, что имеет второй путь, возвращает меня к записи приветственных файлов, независимо от того, какие шаблоны я ввожу. Под вторым путем я подразумеваю что-нибудь myserver.com/path1/*, где * длиннее 0 символов.
Единственные альтернативы, которые я вижу в настоящее время, — это позволить записи приветственных файлов обрабатывать мои запросы (уродливо) или использовать
.cfg.xml *.htm
что заставляет работать такие URL-адреса, как myserver.com/XXX.cfg (myserver.com/X/XXX.cfg не работает). Это тоже было бы некрасиво и помешало бы дальнейшей разработке этого веб-приложения.
Как мне заставить сопоставление работать так, как я хочу?
/path1/*
должно работать как шарм - person Andremoniy   schedule 10.04.2014