Was ist der Unterschied zwischen zwei Sternchen anstelle eines Sternchens, wenn wir uns auf Pfade beziehen?
Früher habe ich mein Spring 3-Projekt debuggt. Ich habe versucht, eine .swf mit hinzuzufügen
<spring:url var="flashy" value="/resources/images/flash.swf"/>
Das ResourceServlet meiner web.xml sieht aus wie
<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, da auf alle meine Bilder im images
Ordner zugegriffen wurde, aber warum war meine .swf "geschützt"?
Danach habe ich beschlossen , die Änderungen /resources/*
zu /resources/**
und es funktionierte schließlich. Meine Frage ist ... warum?
spring
web
resources
url-pattern
mpmp
quelle
quelle
/resources/**
funktioniert<url-pattern>
?Antworten:
Dies ist ein Pfadmuster, das in
Apache ant
Spring Team implementiert und im gesamten Framework verwendet wird.Als Referenz siehe javadoc von AntPathMatcher (das neueste javadoc scheint ein Problem zu haben, daher verknüpfe ich ein altes).
Zurück zu Ihrem Problem, laut Dokument gibt es nur drei Regeln:
?
entspricht einem Zeichen*
Entspricht null oder mehr Zeichen**
Entspricht null oder mehr 'Verzeichnissen' in einem Pfadquelle
*
zu passen, was**
nicht kann?**/*.css
nicht für Pfade, die mit a beginnen/
, obwohl dies gemäß den Ant Style-Konventionen erfolgen sollte.