Пусть мой каталог Tomcat WebApps выглядит следующим образом:Где Tomcat добавляет/в пути к каталогам?
webapps/
webapps/fooapp/
webapps/fooapp/WEB-INF/
webapps/fooapp/WEB-INF/web.xml
webapps/fooapp/bardir/
Когда я делаю запрос GET для /fooapp/bardir
, Tomcat видит, что WebApps/приложение Foo/bardir является каталогом и отправляет обратно 302 в /fooapp/bardir/
(с косой чертой в конец).
вот мой вопрос: Где в Tomcat код Это правда? (Я смотрю на 6.0.x, но правильный ответ для любой версии был бы отличной отправной точкой.)
Единственный справочный материал, который я могу найти на эту тему, находится в Catalina Functional Specifications, в котором говорится о сервлете по умолчанию :
на каждый запрос HTTP GET обрабатывается сервлетом, следующая обработка должна быть выполнена:
[...]
- Если запрошенный ресурс является каталогом:
- Если путь запроса не заканчивается на «/», перенаправляйте на соответствующий путь с добавлением «/», чтобы относительные ссылки в файлах приветствия были правильно разрешены.
Однако, эта функциональность не представляется, в org.apache.catalina.servlets.DefaultServlet; или, по крайней мере, это не так: если я заменю сервлет по умолчанию в web.xml на сервлет, чей сервлет-класс не существует, пути каталога все еще возвращаются 302, чтобы добавить косую черту, назад с ошибкой, как ожидалось.
Я думаю, вы нашли это! И комментарий «по умолчанию сервлета», похоже, показывает, что кто-то был немного смущен, когда должно произойти отображение сервлетов, точно так же, как я подозревал. Спасибо за вашу помощь. – Anonymoose
+1 Я задал один и тот же вопрос по-другому: http://stackoverflow.com/questions/5578548/lift-webapp-has-directory-and-resource-with-the-same-name-but-gives-302 спасибо! – opyate
PS Jeppe из группы Lift опубликовал эту связанную ошибку (пока еще нефиксированную): https://issues.apache.org/bugzilla/show_bug.cgi?id=32424 – opyate