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


83

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

以前、Spring3プロジェクトをデバッグしていました。を使用して.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/**し、それが最終的に働きました。私の質問は...なぜですか?


/resources/**動作し<url-pattern>ますか?
axtavt 2012

補足として、org.springframework.js.resource.ResourceServletは非推奨になりました。春のWebフローリファレンスガイド「バージョン3.0.4から始まる、春のフレームワークは、(参照ResourceServletの交換が含まれていることを注意:春Frameworkのドキュメントを)。」
informatik01

回答:


49

これはApache ant、Springチームが実装し、フレームワーク全体で使用するパスパターンです。

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

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

  1. ? 1文字に一致
  2. * 0個以上の文字に一致
  3. ** パス内の0個以上の「ディレクトリ」に一致する

1
それが可能なためである*ものと一致する**ことができませんか?
Alexander Suraphel 2014

3
SpringsのAntPathMatcherにはバグが含まれていることに注意してください。Antパターンスタイルに完全には準拠していません。例:**/*.cssで始まるパスでは機能しませんが/、Antスタイルの規則に従う必要があります。
Devabc 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.