web-dev-qa-db-ja.com

春:パスに関する/ **と/ *の違い

パスを参照するとき、1つのアスタリスクではなく2つのアスタリスクの違いは何ですか?

以前、Spring 3プロジェクトをデバッグしていました。を使用して.swfを追加しようとしていました

<spring:url var="flashy" value="/resources/images/flash.swf"/>

Web.xmlのResourceServletのように見える

<servlet-name>Resource Servlet </servlet-name>
<url-pattern>/resources/*</url-pattern>

しかし、残念ながら私はこのエラーを受け取っていました:

WARN org.springframework.js.resources.ResourceServlet - An attempt to access a protected resource at /images/flash.swf was disallowed.

imagesフォルダー内のすべての画像にアクセスしたため、本当に奇妙なことに気付きましたが、どうして.swfが「保護」されたのでしょうか。

その後、/resources/*/resources/**に変更することにしましたが、最終的に機能しました。私の質問は...なぜですか?

74
mpmp

これはApache antで使用されるパスパターンであり、スプリングチームはそれを実装し、フレームワーク全体で使用します。

参考のため、 AntPathMatcher のjavadocを参照してください(- newest javadocに問題があるようです。古いものをリンクします)。

問題に戻ると、ドキュメントによると、3つのルールしかありません。

  1. ?は1文字に一致します
  2. *は0個以上の文字に一致します
  3. **は、パス内のゼロ個以上の「ディレクトリ」と一致します
39
Rangi Lin