Spring MVC和Spring Security的URL模式

abi*_*eez 0 spring-mvc spring-security

我在我的xml中看到了一些url-pattern,例如filter-mapping,intercept-url,mvc:resources等.这些模式总是一样吗?什么是这些URL模式之间的差异/,/*,/**

M. *_*num 6

这取决于你问这个问题的背景

  1. Servlet/Filter映射
  2. Spring安全映射

在Web应用程序部署描述符中,以下语法用于定义映射:

  • 以"/"字符开头并以"/*"后缀结尾的字符串用于路径映射.
  • 以"*"开头的字符串 prefix用作扩展映射.
  • 空字符串("")是一个特殊的URL模式,它完全映射到应用程序的上下文根,即表单的请求http://host:port/<contextroot>/.在这种情况下,路径信息是'/',servlet路径和上下文路径是空字符串("").
  • 仅包含'/'字符的字符串表示应用程序的"默认"servlet.在这种情况下,servlet路径是请求URI减去上下文路径,路径信息为null.
  • 所有其他字符串仅用于完全匹配

这来自Servlet规范(第12.2节)

在Servlet/Filter映射场景中/意味着"默认"servlet,通常这是DefaultServlet(在Tomcat中)映射到的位置.基本上它处理所有传入的请求,并且不会在链的下游传递它们进行处理(基本上这是最后一次捕获的映射).

/* 在servlet映射场景中意味着所有传入的URL(当它无法处理时,它将被传递到last-catch-all-mapping).

现在谈论春天的时候,/,/*/**有不同的含义.引用所谓的ant样式路径表达式.

其中/仅表示/(应用程序的根目录),其中/*表示根目录包括一个深层,其中/**表示一切.

因此/foo/*匹配URL /foo/bar但不匹配/foo/bar/baz.鉴于/**/foo/**将匹配所有这些.

  • 是.只有`/`和`/*`在那里有效. (2认同)