A" /"来到servlet映射意味着默认的servlet。 如何解释嵌入web-resource-collection元素中的URL模式,如下所示:
<security-constraint>
<web-resource-collection>
<web-resource-name>fixmyhome</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
&#34; / *&#39 ;?此URL模式不是servlet映射,因为它标记为web-resource-collection。
我还注意到使用http://localhost:8081/fixmyhome/main.jsp
同时使用两种网址格式&#34; /&#34;和&#34; / *&#34;给出了相同的结果 - 它给了我main.jsp页面。我想&#34; /&#34;可能不起作用,因为没有通配符。
答案 0 :(得分:1)
<url-pattern>
正在寻找Ant模式。可用的模式是?,*和**;它分别匹配1个字符,0个或更多字符以及0个或更多目录。
在您http://localhost:8081/fixmyhome/main.jsp
的情况下,/
和/*
的工作方式相同,因为*不是要求他们成为角色的要求。
如果你的root中有一个资源目录,我想你的<url-pattern>
看起来像这样:
<url-pattern>/resources/**</url-pattern>
,从而允许您访问资源目录的所有子目录。
这可能有助于提供更清晰的信息: https://ant.apache.org/manual/dirtasks.html
答案 1 :(得分:0)
根据this我会说通过写/你限制访问servlet,而写/ /你限制访问某个路径。所以基本上“/”和“/ *”是一样的。
答案 2 :(得分:0)
安全约束下的url模式不属于servlet的任何映射,而是正则表达式。使用安全性约束,您可以允许/限制具有给定URL模式的提及角色(在auth-constraint中)的用户。
答案 3 :(得分:0)
servlet规范(版本3)的第12.2节声明如下:
- 以“/”字符开头并以“/ *”后缀结尾的字符串用于路径映射。
- 以'*。'前缀开头的字符串用作扩展名映射。
- 空字符串(“”)是一个特殊的URL模式,它完全映射到应用程序的上下文根,即表单的请求 http://host:port/contextroot/。在这种情况下,路径信息是'/'和 servlet路径和上下文路径是空字符串(“”)。
仅包含'/'字符的字符串表示应用程序的“默认”servlet。在这种情况下,servlet路径为 是请求URI减去上下文路径,路径信息为空。
所有其他字符串仅用于完全匹配