JavaEE安全模型Web集合:差异URL模式/&引用;及/*&引用;

JavaEE安全模型Web集合:差异URL模式/&引用;及/*&引用;,java,security,jakarta-ee,servlets,url-pattern,Java,Security,Jakarta Ee,Servlets,Url Pattern,谈到servlet映射,一个“/”表示默认servlet。 当涉及到嵌入在web资源集合元素中的URL模式时,您如何解释这一点,如下所示: 修理我的家 /* * 没有一个 “/*”呢?此URL模式不是servlet映射,因为它由标记web资源集合包围 我还注意到使用http://localhost:8081/fixmyhome/main.jsp同时使用URL模式“/”和“/*”会得到相同的结果——也就是说,它会给我main.jsp页面。我想”/“可能不起作用,因为没有通配符。根据我的说法,通

谈到servlet映射,一个“/”表示默认servlet。 当涉及到嵌入在web资源集合元素中的URL模式时,您如何解释这一点,如下所示:


修理我的家
/*
*
没有一个
“/*”呢?此URL模式不是servlet映射,因为它由标记web资源集合包围


我还注意到使用
http://localhost:8081/fixmyhome/main.jsp
同时使用URL模式“/”和“/*”会得到相同的结果——也就是说,它会给我main.jsp页面。我想”/“可能不起作用,因为没有通配符。

根据我的说法,通过写入/您限制了对servlet的访问,而通过写入/*您限制了对特定路径的访问。所以本质上“/”和“/*”是相同的。

安全约束下的url模式不属于servlet的任何映射,而是一个正则表达式。使用安全约束,您可以允许/限制具有给定URL模式的所述角色(在auth约束中)的用户。

正在寻找Ant模式。可用的模式有?、*、和**;分别匹配1个字符、0个或多个字符和0个或多个目录

对于
http://localhost:8081/fixmyhome/main.jsp
/
/*
的工作原理是相同的,因为*不是字符的要求

如果您的根目录中有一个resources目录,我可以想象您的
如下所示:
/resources/**
,从而允许您访问资源目录的所有子目录

这可能有助于提供更清晰的信息:

servlet规范(第3版)第12.2节规定:

  • 路径映射使用以“/”字符开头,以“/*”后缀结尾的字符串
  • 以“*”前缀开头的字符串用作扩展映射
  • 空字符串(“”)是一种特殊的URL模式,它精确地映射到应用程序的上下文根,即表单的请求 . 在这种情况下,路径信息是“/”和 servlet路径和上下文路径为空字符串(“”)
  • 仅包含“/”字符的字符串表示应用程序的“默认”servlet。在本例中,servlet路径为
    是请求URI减去上下文路径,路径信息为空

  • 所有其他字符串仅用于精确匹配


安全约束的上下文中,它是一个正则表达式,不一定应用于映射。实际上它不是一个regexp,更像是一个带有通配符的简单模式,请参阅:不确定,但我想说,根据它类似于/*。另外,请参阅servlet规范的一般部分,了解url映射。@MatkoMedenjak谢谢。我阅读了你提供的链接。它所说的“/”模式是最脆弱的模式。我看不出为什么“/”和“/*”对上面的示例有效。我同意你的观点,这只是一个正则表达式。但是如果是这样,为什么“/”和“/*”对上面的示例给出相同的输出?