2012-02-07 46 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