Interceptors werden häufig im Feder -MVC verwendet. Bei der Konfiguration von Pfaden, die abgefangen werden müssen, wird häufig die <MVC: Mapping/> Sub-Label verwendet. Es hat ein Pfadattribut, mit dem die Pfade angegeben werden, die abgefangen werden müssen. Zum Beispiel:
<mvc: interceptor> <mvc: maxing path = "/**"/> <bean/> </mvc: interceptor> </mvc: interceptor>
Nach der obigen Konfiguration fängt dieser Interceptor alle Anforderungen ab.
Die Pfadanpassung in Spring MVC ist viel flexibler als Standard web.xml. Die Standardrichtlinie implementiert org.springframework.util.antPathMatcher. Genau wie der Name schon sagt, verwendet das Pfadmuster den Apache -Style -Pfad. Es gibt drei Wildcard -Matching -Methoden für Apache Ant -Style -Pfade (in der folgenden Tabelle aufgeführt). Diese können viele flexible Pfadmuster kombinieren.
Tabelle Ameise Wildcard -Charaktere
Wildcard | Beschreibung |
| ? | Passen Sie einen einzelnen Charakter an |
| * | Übereinstimmen 0 oder eine beliebige Anzahl von Zeichen |
| ** | Übereinstimmung mit 0 oder mehr Verzeichnissen |
Tabellenbeispiel-Pfadmuster im Stil des Stils
| Weg | Beschreibung |
| /app/*.x | Übereinstimmung mit allen .x -Dateien unter dem App -Pfad |
| /app/p? ttern | Übereinstimmung /App /Muster und /App /Pxttern, jedoch nicht /App /PTTERN |
| /**/Beispiel | Übereinstimmung /App /Beispiel, /App /Foo /Beispiel und /Beispiel |
| /App/**/dir/Datei. | MITGEN /APP/DIR/FILE.jsp, /app/foo/dir/file.html, /app/foo/bar/dir/file.pdf und /app/dir/file.java |
| /**/*.jsp | Entspricht einer .jsp -Datei |
Handlermapping
Eine Webanwendung hängt grundsätzlich von der Zuordnung zwischen der URL und dem Anforderungsprozessor ab, und das Gleiche gilt für Spring MVC, aber Spring MVC ist genau wie bei allen Spring (Übersetzer: Flexible, kann alle möglichen Dinge konfigurieren, aber auch viel Komplexität erzeugt). Es gibt sicherlich nicht nur eine Möglichkeit, die Beziehung zwischen der URL und dem Controller abzubilden. In der Tat können Sie selbst Zuordnungsregeln und -implementierungen selbst erstellen, anstatt sich auf URL -Mappings zu verlassen.
Feder bietet eine URL -Mapping -Verarbeitung, und die Reihenfolge und Methode der Verarbeitung von Pfadmutern beschränkt sich nicht auf eine Schnittstelle. Die Standardimplementierung von Spring MVC org.springframework.web.servlet.handler. Das AbstracturlHandlermaping entspricht einem Pfad mit dem längsten Pfadmuster.
Zum Beispiel: Bei einer Anfrage ist /app/dir/file.jsp und es gibt jetzt zwei Pfadübereinstimmungsmuster /**/*.jsp und /app/dir/*.jsp, welches Muster entspricht dann die URL? Das letzte Muster /app/dir/*.jsp wird nach dem Prinzip der längsten Zeichen übereinstimmt, das mehr Zeichen als /**/*.jsp hat. Beachten Sie, dass dieses Prinzip in keiner Schnittstelle auf hoher Ebene angegeben ist, sondern ein Implementierungsdetail ist.
BeannameurlHandlermaping
Die Standard -Mapping -Strategie -Implementierung ist die org.springframework.web.servlet.handler.Beannameurlhandlermaping -Klasse. Diese Klasse verlangt, dass jede Bean, die möglich ist, um die Anforderung zu verarbeiten, einen Namen oder einen Alias haben muss, der mit dem Backslash (/) -Scharakter beginnt. Dieser Name oder Alias kann jeder Name sein, der dem Prinzip des URL -Pfads entspricht.
Auflistung eines Controllers, der von einem Bean -Namen zugeordnet ist
XML -Code
<bean name = "/home"> <Property name = "flugservice" ref = "flugService"/> </bean>
■ Hinweis: Sie können das ID -Attribut nicht verwenden, um einen URL -Pfad anzugeben, da (/) Zeichen in XML -Spezifikationen verboten sind, um die ID der XML anzugeben. Sie können jedoch sowohl ID- als auch Namensattribute in einer Bean -Definition haben.
Es ist sehr einfach zu bedienen und hat einige Nachteile. Es kann nicht auf eine Prototyp -Bean anweisen. Mit anderen Worten, bei Verwendung von BeannameurlHandlermaping können alle Anforderungsverarbeitungsklassen nur Singletons sein. Im Allgemeinen sind Controller nach Singletons festgelegt, daher ist dies kein sehr ernstes Problem. Außerdem werde ich Controller in den folgenden Kapiteln einführen, und es werden nur wenige Arten von Controllern, die Prototypen sein müssen, geben.
■ HINWEIS: Prototyp Bean ist eine Nicht-Singleton-Bohne. Jedes Mal, wenn die GetBean () -Methode von ApplicationContext aufgerufen wird, wird eine neue Bean -Instanz zurückgegeben.
Ein weiteres Problem bei BeannameurlHandlermaping ist, dass der Interceptor in Ihrer Anwendung angewendet wird. Da die angeforderte Karte und die Bohnen -IMapping -Karte miteinander verbunden sind und nicht getrennt sind, ist es unmöglich, komplexe Beziehungen zwischen dem Controller und dem Interceptor zu erstellen. Wenn Sie komplexe Anforderungen an Anforderungszuordnung haben, können Sie anstelle von BeannameurlHandlermaping SimpleUrlHandlermaping verwenden. SimpleUrlHandlermaping ist eine weitere Option für Beannameurlhandlermaping. SimpleUrlHandlermaping zeigt direkt auf die beiden Hauptschwächen des Beannameurlhandlermaping. Es kann Prototyp -Anforderungsprozessoren zuordnen und ermöglicht es Ihnen, komplexe und flexible Zuordnungswege zwischen Handlern und Interceptors zu erstellen. Der Mapping -Algorithmus verwendet dieselben grundlegenden Komponenten wie BeannameurlHandlermaping. Daher besteht dieses Muster weiterhin darin, URLs zum Anfordern von Handlern (Anfragehandler) zu kartieren. Der DispatcherServlet wird gemäß dem Typ gefunden und erstellt nicht den Standard -Mapper (BeannameurlHandlermaping). Dies bedeutet, dass Sie, wenn Sie beides verwenden möchten, alles im ApplicationContext deklarieren müssen.
■ Eingehend mit dem DispatcherServlet wird Anforderungen in der Kette (Übersetzer: Prozessanforderungen in Folge bearbeiten. Sie können auf die Kette des Verantwortungsmodus in Filtern und GOFs verweisen), mit denen Mappings gemäß Ihren Anforderungen bearbeitet werden können. Der Mapping -Prozessor (Handler -Mappings) implementiert die OrderedR -Schnittstelle.
Das obige ist der gesamte Inhalt dieses Artikels über die detaillierte Erklärung des Spring MVC -Pfad -Matching -Prinzips. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!