@RequestParam, vous devez l'avoir vu; @Pathvariable, vous devez l'avoir connu; @Queryparam, pourquoi ne le savez-vous pas? ! Et il vous est familier (@cookievalue)! Elle (@ModelandView)! It (@ModelAttribute)! C'est vrai, il suffit d'annoter cela, Spring MVC ouvre un monde coloré pour vous. Allez, ne soyez pas excité (mi) et (hu), asseyez-vous, faisons une bonne discussion sur ces frères annotations ~~~ (attendez, vous n'en avez pas entendu parler? D'accord, allez, vous vous asseyez au premier rang, vous serez là!)
1. Comment faire correspondre le chemin de la demande dans le printemps MVC - "Quel chemin de demande est le meilleur, la carte de demande est bien connue"
@RequestMapping est utilisé pour cartographier les demandes, telles que les demandes de GET, les demandes de publication ou les styles de repos et les styles non-repos. Cette annotation peut être utilisée sur une classe ou sur une méthode, si elle est utilisée sur une classe, représentant le chemin parent de toutes les méthodes de la classe.
Par exemple (les classes de test utilisées ici telles que SpringmvCTest et certaines pages ont été introduites dans le premier article "Learning SpringMVC - à partir de Helloworld"):
Ajouter des méthodes de test à SpringmvCTest.java:
@RequestMapping ("/ TestRequestMapping") String public TestRequestMapping () {System.out.println ("TestRequestMapping"); retourner le succès;}Notez que l'annotation @requestmapping ("/ testRequestmapping") est ajouté au niveau de méthode, ce qui signifie que cette méthode peut être située à travers le chemin relatif de "/ testRequestmapping". Dans le même temps, nous avons également mis une annotation de mise en avant au niveau de la classe sur la classe SpringMvCTest:
@RequestMapping ("/ springmvc") @ ControllerPublic Class SpringmvCTest {Notez qu'il existe également une annotation de @Controller. Cette annotation est responsable du traitement des demandes distribuées par Dispatcherservlet dans SpringMVC. Il résume les données demandées par l'utilisateur via la couche de traitement de service, puis renvoie le modèle à la vue correspondante pour l'affichage. À ce stade, nous avons un chemin comme "SpringMvc / TestRequestmapping", puis nous pouvons localiser la méthode TestRequestMapping, puis exécuter le corps de la méthode dans la méthode.
Pour ajouter une chose de plus, Requestmapping peut implémenter des chemins de correspondance floues, tels que:
? : Faites correspondre un personnage
*: Faites correspondre n'importe quel personnage
**: Faire correspondre les chemins multicouches
/ SpringMvc / ** / LastTest peut correspondre à des chemins comme / printemps / premier
2. Comment obtenir les paramètres demandés du printemps MVC - "Huit immortels traversent la mer, chacun montrant leurs pouvoirs magiques"
1. @Pathvariable
Cette annotation est utilisée pour cartographier les espaces réservés liés dans l'URL de demande. Grâce à @Pathvariable, vous pouvez lier le paramètre de l'espace réservé dans l'URL au paramètre de la méthode de traitement du contrôleur. Tu ne comprends pas? Voir l'exemple:
@RequestMapping ("/ TestPathvariable / {id}") String public testPathVariable (@Pathvariable (value = "id") INTER ID) {System.out.println ("testPathvariable:" + id); retourner le succès;}Dans index.jsp, nous ajoutons une connexion pour déclencher une demande:
<a href = "springmvc / testPathvariable / 1"> testPathvariable </a> <br/> <br/>
Nous pouvons voir qu'il y a un hyperlien ici. Après avoir cliqué, nous entrerons la méthode de traitement du contrôleur correspondant à SpringMvc / TestPathvariable / 1. Nous voulons maintenant obtenir le "1" dans ce paramètre de demande, alors ajoutez "/ testPathvariable / id" à la méthode TestPathvariable, sur id ", et la correspondance spécifique de {id}. Dans les paramètres de cette méthode, @pathvariable (valeur =" id ") est déclaré, et le lier et le reçoit via ID ID.
2. @RequestParam
Cette annotation est également utilisée pour obtenir les paramètres de demande. Alors, en quoi cette annotation est-elle différente de @Pathvariable? Regardons l'exemple:
Ajout de méthodes à SpringmvCTest
@Requestmapping (value = "/ testRequestParam") String public TestRequestParam (@RequestParam (value = "username") String username, @RequestParam (value = "Age", obligé = false, defaultValue = "0") Int Age) {System.out.PrintLn ("TestRequestParam" + "Ussername:" + Username + "Agel +; retourner le succès;}Ajouter une balise hyperlienne dans index.jsp
<a href = "SpringMvc / TestRequestParam? Username = Jackie & Age = 12"> TestRequestParam </a> <br/> <br/>
Cliquez sur l'hyperlien sur la page correspondra au chemin de requête de la méthode TestRequestParam dans le contrôleur. Notez que dans cette méthode, nous déclarons deux variables via l'annotation @RequestParam pour obtenir la valeur du paramètre apportée par requête dans la demande, l'une est la valeur après nom d'utilisateur et l'autre est la valeur après l'âge.
Après avoir vu cela, vous comprenez probablement certaines des différences entre @Pathvariable et @RequestParam. Pour des demandes comme "SpringMvc / TestPathVariable / 1", nous utilisons @PathVariable pour lier les paramètres demandés; tandis que pour les paramètres de demande comme "SpringMvc / TestRequestParam? Username = Jackie & Age = 12" apparaissent sous forme de paires de valeurs clés. Nous utilisons @RequestParam pour obtenir la valeur de demande spécifique après nom d'utilisateur ou âge.
QueryParam est également similaire à RequestParam, car ce n'est pas une annotation dans le cadre Spring MVC, donc elle ne sera pas décrite en détail ici.
Pour différents types de demandes et méthodes de demande, Spring MVC dispose d'un ensemble de solutions ciblées. Jetons un coup d'œil à ce que sont les demandes de style de repos populaires maintenant - en utilisant le style de repos pour réaliser l'addition, la suppression, la modification et la recherche.
L'implémentation ascendante de l'interface pour la vérification (obtenir), l'ajout (publication), la suppression (supprimer) et la modification (put) sont implémentées dans la classe SpringmvCTest de bas en haut
@RequestMapping (value = "/ testrest / {id}", méthode = requestMethod.put) public String testRestput (@PathVariable (value = "id") INTER ID) {System.out.println ("test put:" + id); return Success;} @RequestMapping (value = "/ testrest / {id}", méthode = requestMethod.Delete) public String TestRestDelete (@PathVariable (Value = "ID") ID INTER) {System.out.println ("Test Delete:" + id); return Success;} @RequestMapping (value = "/ testrest", méthode = requestMethod.Post) public String testrest () {System.out.println ("Test Post"); return Success;} @RequestMapping (value = "/ testrest / {id}", méthode = requestMethod.get) public String testrest (@Pathvariable (value = "id") INTER ID) {System.out.println ("test get:" + id); retourner le succès;}Alors, comment implémenter l'interface de la réception? L'ordre correspondant est
<form action = "springmvc / testrest / 1" method = "post"> <input type = "Hidden" name = "_ méthode" value = "put" /> <input type = "soumi" value = "testrestput" /> </ form> <br/> <form action = "springmvc / testrest / 1" Method = "post"> <entrée = "Hidden" Name = "_ mode" Valent = "/> <entrée =" type = "soumi" value = "testrest delete" /> </ form> <br> <br> <form action = "printempsmvc / testrest" method = "post"> <input type = "soumi" value = "testRestPost"> </ form> <br/> <br/> <a href = "springmvc / testrest / 1 "> testrest </a>
En outre, nous devons également ajouter une instruction dans le fichier de configuration web.xml qui prend en charge la conversion de la publication en suppression et posez les demandes.
<! - Configurer HiddenHttpMethodFilter: Vous pouvez convertir les demandes de publication pour supprimer ou publier des demandes -> </ filter> <Filter-Name> HiddenHttpMethodFilter </ Filter-Name> <Filter-Class> org.springframework.web.filter> <Lifter-Mapping> <Filter-Name> HiddenHttpMethodFilter </ Filter-Name> <Url-Pattern> / * </ url-Pattern> </filter-Mapping>
Comme vous pouvez le voir, la modification et la suppression ici sont envoyées par la publication, car la put et la suppression ne sont pas prises en charge ici pour implémenter directement la suppression et la modification. Au lieu de cela, en utilisant la méthode Post et en apportant tranquillement une balise d'entrée de type caché de jeton pour indiquer l'arrière-plan que ce que j'ai envoyé dans la réception est en fait une demande de suppression et de modification.
Alors, comment ce processus est-il mis en œuvre, pourquoi ajouter
<input type = "Hidden" name = "_ Method" value = "delete" />
Ce jeton sera acheté par d'autres en arrière-plan. Voyons ensuite comment nous l'avons acheté plus tard.
En dernière analyse, cela est dû à l'ajout de la classe HiddenHttpMethodFilter dans web.xml. Il existe une méthode dofilterinternal dans cette classe. Grâce à un débogage, nous pouvons trouver des indices, démarrer Tomcat (pas Tomcat8), cliquer sur la balise d'entrée correspondante de l'opération de suppression et entrez l'interface de débogage. Nous pouvons voir:
Petite fosse: ici, veuillez noter que le démarrage ne peut pas être Tomcat8, mais ne peut être qu'une version plus petite que 8, comme 7 ou 6, etc. La figure suivante montre le message d'erreur à l'aide de Tomcat et la réponse réussie en utilisant 7:
Pour résumer, comment envoyer une demande de put et de suppression:
1. Configurer HiddenHttpMethodFilter dans web.xml
2. Envoyez la demande de poste
3. Il y a un domaine caché dans la demande, le nom est "_mothod", la valeur est mise ou supprimer
Enfin, parlons de l'annotation @cookievalue.
3. @Cookievalue
Cette annotation est également une routine similaire, et c'est aussi une cartographie, qui mappe une valeur de cookie.
Lorsque nous envoyons une demande, nous pouvons voir que la demande transporte certaines valeurs de cookie.
Par exemple, JSessionId ou PATH ici. Nous allons maintenant écrire une méthode pour obtenir la valeur des cookies.
Ajouter SpringmvCTest
@RequestMapping (value = "/ testcookievalue") String public testCookievalue (@cookievalue ("jSessionId") String cookieeValue) {System.out.println ("testcookievalue:" + cookieeValue); retourner le succès;}Ajouter un lien vers l'interface index.jsp
<a href = "springmvc / testcookievalue"> testcookievalue </a> <br/> <br/>
De cette façon, nous pouvons obtenir des résultats tels que "TestCookievalue: 1410F05C9ADD84E8659C2AC79E8CC666".
Jusqu'à présent, nous avons introduit
1. Utilisation de @requestmapping
2. Obtenez l'utilisation de @Pathvariable et @RequestParam des paramètres de demande
3. Introduisez comment mettre en œuvre les demandes de style repos et analysez comment la publication est convertie en delete et posez les demandes
4. Introduction à l'utilisation de @cookievalue
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.