在我的简单应用程序的web.xml中,我有
<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 / Hai我没有被要求输入密码,为什么?
答案 0 :(得分:4)
您在web.xml中指定的url-pattern始终是一个相对于webapp的上下文路径的模式。因此,/Projekt/*
表示在应用程序的上下文路径下的/Projekt
,下的所有网址。
由于您的应用是以/Projekt
部署的,因此这意味着此网址格式与网址http://localhost:8080/Projekt/projekt/Hai
匹配。它与http://localhost:8080/Projekt/Hai
不匹配,因为此URL相对于上下文路径编写时为/Hai
,与/Projekt/*
模式不匹配。
良好的经验法则:Web应用程序的代码或部署描述符中的任何内容都不应该依赖于选择部署应用程序的上下文路径。应始终相对于此上下文路径指定所有内容。