2012-02-07 3 views
1

В моей web.xml моего простого приложения я имеюTomcat проблема с URL-шаблон

<servlet> 
    <servlet-name>HelloServlet</servlet-name> 
    <servlet-class>HelloServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>HelloServlet</servlet-name> 
    <url-pattern>/Hai</url-pattern> 
</servlet-mapping> 

и теперь, если у меня есть

<url-pattern>/*</url-pattern> 

в ограничении безопасности он запрашивает пароль при попытке добраться до моего развернутого приложения, но когда я изменить его

<url-pattern>/Projekt/*</url-pattern> 

и попробуйте ввести Projekt/Хай Я не просил мой пароль, то почему?

+0

Под каким контекстным пути развертывается ваше приложение и какой полный URL вы используете, когда он не запрашивает пароль? –

+0

<Контекст docBase = "Projekt.war" path = "/ Projekt" />, я использую localhost: 8080/Projekt/Hai – Andna

ответ

4

URL-адрес, который вы указываете в web.xml, всегда является шаблоном, который относится к пути к контексту веб-приложения. Таким образом, /Projekt/* означает все URL-адреса под /Projekt, по пути контекста приложения.

Поскольку ваше приложение развернуто un /Projekt, это означает, что этот URL-адрес соответствует URL-адресу http://localhost:8080/Projekt/projekt/Hai. Он не соответствует http://localhost:8080/Projekt/Hai, потому что этот URL-адрес, если он написан относительно пути к контексту, равен /Hai, который не соответствует шаблону /Projekt/*.

Хорошее эмпирическое правило: ничто в коде или дескрипторе развертывания webapp никогда не должно зависеть от пути контекста, выбранного для развертывания приложения. Все должно всегда указываться относительно этого контекстного пути.

+0

Спасибо большое, он работает сейчас :) – Andna

Смежные вопросы