@RequestParam, du musst es gesehen haben; @PathVariable, Sie müssen es gewusst haben; @Queryparam, warum weißt du es nicht? ! Und er ist dir vertraut (@cookievalue)! Sie (@ModelandView)! Es (@Modelattribute)! Das ist richtig, wenn Sie dies annotieren, eröffnet Spring MVC eine farbenfrohe Welt für Sie. Komm schon, sei nicht aufgeregt (MI) und (Hu), setzen Sie sich, lass uns gut über diese Anmerkungen unterhalten.
1. Wie man den Anforderungspfad in Spring MVC entspricht - "Welcher Anforderungsweg ist besser, RequestMapping ist bekannt"
@RequestMapping wird verwendet, um Anfragen wie GET-Anforderungen, Postanfragen oder Raststile und Nicht-Rest-Stile zu kartieren. Diese Annotation kann bei einer Klasse oder auf einer Methode verwendet werden, wenn sie in einer Klasse verwendet werden, die den übergeordneten Pfad aller Methoden in der Klasse darstellt.
Zum Beispiel (die hier verwendeten Testklassen wie SpringMvctest und einige Seiten wurden im ersten Artikel "Learning SpringMVC - ab HelloWorld" eingeführt):
Fügen Sie Testmethoden zu SpringMvctest.java hinzu:
@RequestMapping ("/testRequestMapping") public String testRequestMapping () {System.out.println ("testRequestMapping"); Erfolg zurückgeben;}Beachten Sie, dass die Annotation @RequestMapping ("/testRequestMapping") zur Methodenebene hinzugefügt wird, was bedeutet, dass diese Methode über den relativen Pfad von "/testRequestMapping" gefunden werden kann. Gleichzeitig setzen wir auch eine Annotation auf der Klassenebene in der SpringMvctest-Klasse ein:
@RequestMapping ("/SpringMvc")@ControllerPublic Class SpringMvctest {Beachten Sie, dass es auch eine Annotation von @Controller gibt. Diese Annotation ist für die Bearbeitung von Anfragen verantwortlich, die vom Dispatcherservlet in SpringMVC verteilt wurden. Es enthält die vom Benutzer angeforderten Daten über die Serviceverarbeitungsebene und gibt das Modell dann an die entsprechende Ansicht für die Anzeige zurück. Zu diesem Zeitpunkt haben wir einen Pfad wie "SpringMVC/testRequestMapping", und dann können wir die TestRequestMapping -Methode lokalisieren und dann die Methodekörper innerhalb der Methode ausführen.
Um noch etwas hinzuzufügen, kann RequestMapping Fuzzy -Matching -Pfade implementieren, wie z. B.:
? : Passen Sie einen Charakter an
*: Passen Sie einen beliebigen Charakter an
**: Übereinstimmung mehrschichtiger Pfade
/SpringMVC/**/lasttest kann Pfade wie/SpringMvc/Firsttest/Secondtest/lastTest übereinstimmen
2. So erhalten Sie die angeforderten Parameter von Spring MVC - "acht Immortalen überqueren das Meer, die jeweils ihre magischen Kräfte zeigen"
1. @PathVariable
Diese Annotation wird verwendet, um die in der Anfrage -URL gebundenen Platzhalter abzubilden. Durch @PathVariable können Sie den Parameter des Platzhalters in der URL an den Parameter der Controller -Verarbeitungsmethode binden. Verstehst du nicht? Siehe Beispiel:
@RequestMapping ("/testPathVariable/{id}") public String pathVariable (@PathVariable (value = "id") Integer id) {System.out.println ("testPathVariable:" + id); Erfolg zurückgeben;}In index.jsp fügen wir eine Verbindung hinzu, um eine Anforderung auszulösen:
<a href = "SpringMvc/testPathVariable/1"> TestPathVariable </a> <br/> <br/>
Wir können sehen, dass es hier einen Hyperlink gibt. Nach dem Klicken geben wir die Controller -Verarbeitungsmethode ein, die der SpringMVC/TestPathVariable/1 entspricht. Wir möchten jetzt den Parameter "1" in diesem Anforderungsparameter erhalten. Fügen Sie also "/testPathVariable/id" zur Testpath-Methode, über ID "hinzu, und die spezifische Korrespondenz von {id}. In den Parametern dieser Methode @PathVariable (Value =" ID ") wird deklariert und bindet und empfangen Sie durch diese Methode.
2. @Requestparam
Diese Annotation wird auch verwendet, um die Anforderungsparameter zu erhalten. Wie unterscheidet sich diese Annotation von @PathVariable? Schauen wir uns das Beispiel an:
Hinzufügen von Methoden in SpringMvctest
@RequestMapping (value = "/testRequestParam") public String testRequestParam (@RequestParam (value = "username") String -Benutzername, @RequestParam (value = "Age", erforderlich = false, defaultValue = "0") Intlnname username username: aga "aga" username: aga "aga" aga "aga" aga "aga" aga "aga" aga "aga" aga "aga" aga "aga" aga "aga" aga "aga" aga "aga" aga "aga" aga "aga" aga "aga" aga "aga" aga "aga" aga "aga" aga "aga" aga "aga" aga "aga" ages ag. Erfolg zurückgeben;}
Hyperlink -Tag in index.jsp hinzufügen
<a href = "SpringMvc/testRequestParam? userername = jackie & ay 12"> testRequestParam </a> <br/> <br/>
Wenn Sie auf den Hyperlink auf der Seite klicken, entspricht der Pfad des RequestMapping auf der TestRequestParam -Methode im Controller. Beachten Sie, dass wir in dieser Methode zwei Variablen durch die Annotation @RequestParam deklarieren, um den von der Abfrage in der Anforderung eingeführten Parameterwert zu erhalten. Einer ist der Wert nach dem Benutzernamen und der andere ist der Wert nach dem Alter.
Nachdem Sie dies gesehen haben, verstehen Sie wahrscheinlich einige der Unterschiede zwischen @PathVariable und @RequestParam. Für Anfragen wie "SpringMVC/TestPathVariable/1" verwenden wir @PathVariable, um die angeforderten Parameter zu binden. Während für Anforderungsparameter wie "SpringMVC/testRequestParam? Benutzername = Jackie & Age = 12" werden als Schlüsselwertpaare angezeigt. Wir verwenden @RequestParam, um den spezifischen Anforderungswert nach dem Benutzernamen oder Alter zu erhalten.
Queryparam ähnelt auch RequestParam, da es sich nicht um eine Annotation im Frühlings -MVC -Framework handelt, sodass es hier nicht ausführlich beschrieben wird.
Für verschiedene Anforderungsarten und Anforderungsmethoden verfügt Spring MVC über eine Reihe von gezielten Lösungen. Schauen wir uns an, wie die beliebten REST -Style -Anfragen jetzt aussehen - mithilfe von REST STYLE, um Ergänzung, Löschung, Änderung und Suche zu erzielen.
Die Bottom-up-Implementierung der Schnittstelle zum Überprüfen (GET), Hinzufügen (Post), Löschen (Löschen) und Änderungen (PUT) wird in der SpringMVCTest-Klasse von unten nach oben implementiert
@RequestMapping (value = "/testRest/{id}", method = requestMeth.put) public String testRestput (@PathVariable (value = "id") Integer id) {System.out.println ("test put:" + id); Rückgabeerfolg;} @RequestMapping (value = "/testRest/{id}", method = requestMethod.delete) public String testRestDelete (@PathVariable (value = "id") Integer id) {System.out.println ("test löschen:" + id); Rückgabeerfolg;} @RequestMapping (value = "/testRest", method = requestMethod.post) public String testRest () {System.out.println ("Test Post"); Return Success;} @RequestMapping (value = "/testrest/{id}", method = requestMethod.get) public String testRest (@PathVariable (value = "id") Integer ID) {System.out.println ("test:" + id); Erfolg zurückgeben;}Wie implementieren Sie also die Schnittstelle an der Rezeption? Die entsprechende Reihenfolge ist
<form action = "SpringMvc/testRest/1" method = "post"> <Eingabe type = "Hidden" name = "_ Methode" value = "put"/> <Eingabe -Typ = "value =" testRestput "/> </form> <br/> <Form Action =" SpringMvc/Testrest/1 "-Methode". type = "value =" testRest delete "/> </form> <br> <br> <Form Action =" SpringMvc/testRest "methode =" post "> <Eingabe type =" value = "testRestPost"> </form> <br/> <br/> <a href = "Springmvc/testrest/1"> testrest </a> </a> <b.
Darüber hinaus müssen wir auch eine Anweisung in die Konfigurationsdatei web.xml hinzufügen, die das Konvertieren von Posts zum Löschen und Einlegen von Anforderungen unterstützt.
<!-Konfigurieren Sie HiddenhttpMethodFilter: Sie können Postanfragen zum Löschen oder Postanforderungen konvertieren-> <Filter> <Filter-name> HiddenhttpMethodfilter </filter-name> <filterklasse> org.springFramework. <Filter-mapping> <Filter-Name> HiddenhttpMethodFilter </filter-name> <URL-Muster>/*</url-puftern> </filter-mapping>
Wie Sie sehen können, wird die Änderung und Löschung hier über Post gesendet, da Put und Löschen hier nicht unterstützt werden, um die Löschung und Änderung direkt zu implementieren. Durch die Verwendung der Post -Methode und der leisen Verwendung eines Token -Eingabetags mit einem Token mit einem Token -Eingabetag, um den Hintergrund zu sagen, dass das, was ich in der Rezeption gesendet habe, tatsächlich eine Anfrage zum Löschen und Änderungen ist.
Wie wird dieser Prozess implementiert, warum hinzufügen?
<Eingabe type = "Hidden" name = "_ method" value = "delete"/>
Dieses Token wird von anderen im Hintergrund gekauft. Dann wollen wir sehen, wie wir es später gekauft haben.
Letztendlich ist es auf die Zugabe der HiddenhttpMethodFilter -Klasse in Web.xml zurückzuführen. In dieser Klasse gibt es eine Methode dofilterinternal. Durch Debugging finden wir Hinweise, starten Sie Tomcat (nicht Tomcat8), klicken Sie auf das entsprechende Eingangs -Tag der Löschvoropie und geben Sie die Debugging -Schnittstelle ein. Wir können sehen:
Kleine Grube: Bitte beachten Sie hier, dass das Start nicht Tomcat8 sein kann, sondern nur eine kleinere Version als 8 sein kann, z. B. 7 oder 6 usw. Die folgende Abbildung zeigt die Fehlermeldung mit Tomcat und der erfolgreichen Antwort mit 7:
Zusammenfassend Senden Sie eine Anfrage für Put und Löschen:
1. Konfigurieren Sie HiddenhttpMethodFilter in web.xml
2. Postanfrage senden
3.. In der Anfrage befindet sich eine versteckte Domäne, der Name ist "_mothod", der Wert wird gefügt oder gelöscht
Lassen Sie uns schließlich über die Annotation @cookievalue sprechen.
3.. @Cookievalue
Diese Annotation ist auch eine ähnliche Routine und ist auch eine Zuordnung, die einen Kekswert ordnet.
Wenn wir eine Anfrage senden, können wir feststellen, dass die Anfrage einige Cookie -Werte enthält.
Zum Beispiel JSESSIONID oder PATH hier. Jetzt schreiben wir eine Methode, um den Cookie -Wert zu erhalten.
Fügen Sie SpringMvctest hinzu
@RequestMapping (value = "/testcookievalue") public String testCookievalue (@Cookievalue ("jsessionId") String Cookievalue) {System.out.println ("testCookievalue:" + Cookievalue); Erfolg zurückgeben;}Fügen Sie den Link zur Schnittstelle index.jsp hinzu
<a href = "SpringMvc/testcookievalue"> testcookievalue </a> <br/> <br/>
Auf diese Weise können wir Ergebnisse wie "TestCookievalue: 1410F05C9ADD84E8659C2AC79E8CC66" erhalten.
Bisher haben wir vorgestellt
1. Verwendung von @RequestMapping
2. Erhalten Sie die Verwendung von @PathVariable und @RequestParam der Anforderungsparameter
3.. Führen Sie ein
4. Einführung in die Verwendung von @cookievalue
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.