Java 带有url模式的Tomcat问题
在我的简单应用程序的web.xml中Java 带有url模式的Tomcat问题,java,security,url,tomcat,Java,Security,Url,Tomcat,在我的简单应用程序的web.xml中 <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name>
<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>
HelloServlet
HelloServlet
HelloServlet
/海
现在如果我有
<url-pattern>/*</url-pattern>
/*
在安全约束中,当我尝试访问部署的应用程序时,它会要求输入密码,但当我将其更改为
<url-pattern>/Projekt/*</url-pattern>
/Projekt/*
并尝试输入Projekt/Hai我没有被要求输入密码,为什么?您在web.xml中指定的url模式始终是相对于webapp的上下文路径的模式。因此,
/Projekt/*
表示应用程序上下文路径下/Projekt
下的所有URL
由于您的应用程序部署在un/Projekt
,这意味着此url模式与urlhttp://localhost:8080/Projekt/projekt/Hai
。它不匹配http://localhost:8080/Projekt/Hai
,因为当相对于上下文路径写入此URL时,它是/Hai
,与模式/Projekt/*
不匹配
好的经验法则:webapp的代码或部署描述符中的任何内容都不应该依赖于为部署应用程序选择的上下文路径。应始终相对于此上下文路径指定所有内容。您在web.xml中指定的url模式始终是相对于webapp的上下文路径的模式。因此,
/Projekt/*
表示应用程序上下文路径下/Projekt
下的所有URL
由于您的应用程序部署在un/Projekt
,这意味着此url模式与urlhttp://localhost:8080/Projekt/projekt/Hai
。它不匹配http://localhost:8080/Projekt/Hai
,因为当相对于上下文路径写入此URL时,它是/Hai
,与模式/Projekt/*
不匹配
好的经验法则:webapp的代码或部署描述符中的任何内容都不应该依赖于为部署应用程序选择的上下文路径。所有内容都应始终相对于此上下文路径进行指定。应用程序部署在哪个上下文路径下,以及在不要求密码时使用的完整URL是什么?我使用localhost:8080/Projekt/hai,应用程序部署在哪个上下文路径下,当不需要密码时,您使用的完整URL是什么?我使用localhost:8080/Projekt/Hai