it-swarm.com.de

Frühling: Unterschied von / ** und / * in Bezug auf Pfade

Was ist der Unterschied zwischen zwei Sternchen anstelle eines Sternchens, wenn wir auf Pfade verweisen?

Früher habe ich mein Spring 3-Projekt getestet. Ich habe versucht, eine SWF-Datei mit hinzuzufügen

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

Das ResourceServlet meiner web.xml sieht so aus

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

Aber leider habe ich diesen Fehler bekommen:

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

Ich fand es wirklich seltsam, dass auf alle meine Bilder im Ordner images zugegriffen wurde, aber wie kam es, dass meine .swf "geschützt" war?

Danach habe ich beschlossen, die /resources/* bis /resources/** und es hat endlich geklappt. Meine Frage ist ... warum?

74
mpmp

Dies ist ein Pfadmuster, das in Apache ant, Frühlingsteam implementieren und im gesamten Framework verwenden.

Als Referenz siehe javadoc von AntPathMatcher ( neueste javadoc scheint ein Problem zu haben, also verbinde ich ein altes).

Zurück zu Ihrem Problem, laut dem Dokument gibt es nur 3 Regeln:

  1. ? entspricht einem Zeichen
  2. * entspricht keinem oder mehreren Zeichen
  3. ** stimmt mit keinem oder mehreren "Verzeichnissen" in einem Pfad überein
39
Rangi Lin