2012-02-07 48 views
1

在我的我的簡單的應用程序的web.xml中我有Tomcat的問題與url-pattern的

<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是什麼? – 2012-02-07 21:39:25

+0

<上下文docBase =「Projekt.war」path =「/ Projekt」/>,我使用localhost:8080/Projekt/Hai – Andna 2012-02-07 21:45:11

回答

4

您在web.xml中指定的url模式始終是相對於webapp上下文路徑的模式。因此,/Projekt/*表示在應用的上下文路徑下的/Projekt,下的所有URL。

由於您的應用程序部署爲un /Projekt,這意味着此url-pattern與URL http://localhost:8080/Projekt/projekt/Hai匹配。它與http://localhost:8080/Projekt/Hai不匹配,因爲當相對於上下文路徑寫入時,此URL是/Hai,它與模式/Projekt/*不匹配。

良好的經驗法則:web應用程序的代碼或部署描述符中的任何內容都不應該依賴於選擇用於部署應用程序的上下文路徑。一切都應該相對於這個上下文路徑來指定。

+0

非常感謝,它現在可以工作:) – Andna 2012-02-07 22:06:30