Introduction
Le repos est le transfert d'état de représentation. (Ressource) Transformation de l'état de la couche de performance. Il s'agit actuellement de l'architecture de logiciels Internet la plus populaire. Il a une structure claire, conforme aux normes, facile à comprendre et facile à développer, il est donc adopté par de plus en plus de sites Web, publier, supprimer, mettre et obtenir respectivement CRUD. Spring3.0 a commencé à prendre en charge les demandes de style repos, convertissant les demandes de poste en requêtes PUT et supprimez via org.springframework.web.filter.hiddenhttpmethodfilter. Cette expérience utilise le printemps 4.0.
HiddenHttpMethodFilter Code source
Public Static Final String default_Method_Param = "_Method"; @ Override Protected void DoFilteRINNERNAL (HttpServLetRequest Request, HttpservletResponse Response, filterChain FilterChain) lance Servlexception, ioException {String paramvalue = request.getParameter (this.methodParam); ("Post" .equals (request.getMethod ()) && stringUtils.hasLength (paramvalue)) {String Method = Paramvalue.Toupperase (Locole.English); httpservletRequest wrapper = new httpMethoDrequequestwrapper (request, method); filterChain.Dofilter (wrapper, réponse);}; {filterchain.dofilter (demande, réponse);}}À partir du code source de HiddenHttpMethodFilter, on peut voir que Spring le convertit en fonction du paramètre _Method dans la demande. Par conséquent, si vous souhaitez lancer une demande de suppression ou de pose de style repos, vous n'avez qu'à inclure le paramètre _Method dans le formulaire et à définir la valeur de _Method pour supprimer ou mettre (CAPS). Les exemples détaillés sont les suivants:
Configurer HiddenHttpMethodFilter dans web.xml
Page d'écriture de code d'écriture de gestionnaire
<! - Configurer org.springframework.web.filter.hiddenhttpmethodfilter pour convertir les demandes de post en requêtes de put ou supprimer -> <filter> <filter-name> HiddenHttpMethodFilter </filter-name> <filter-class> org.springframework.web.filter.hiddenhttpmethodfilter </ filter-class> </ filter> <filter-mapping> <filter-name> HiddenHttpMethoDfilter </ Filter-name> <url-stempern> / * </ url-sattern> </filter-maping>
package rex.springmvc.handlers; import org.apache.log4j.logger; import org.springframework.steretype.controller; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.requequestmethod; org.springframework.web.bind.annotation.requestParam; @RequestMapping (value = "/ resttest") @ ControllerPublic Resttesthandler {private static final logger = logger.getlogger (resttesthandler.class); private static final string Success = "Success"; @ requestmaping (value = "/ restget / id}", "Success"; Method = requestMethod.get) public String restget (@RequestParam (value = "id", obligé = false) INTER ID) {logger.debug ("restget:" + id); return Success;} @ requestmapping (value = "/ restput / {id}", méthode = requetMethod.put) public string repost (@requestParam (value = "id", requis = false) Enteger (@requestParam (value = "id", require id) {logger.debug ("restput:" + id); return succès;} @ requestMapping (value = "/ restdelete / {id}", méthode = requestMethod.delete) public String restdelete (@requestParam (value = "id", requis = false) ID ID); Succès;} @ requestmapping (value = "/ restpost", méthode = requestMethod.post) public string restpost () {logger.debug ("restPost"); return succès;}}<% @ Page Language = "Java" ContentType = "Text / Html; charSet = UTF-8" Pageencoding = "UTF-8"%> <! Doctype HTML Public "- // W3C // DTD HTML 4.01 Transitional // en" "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" contenu-type "contenu =" text / html; charset = utf-8 "> <pitle> repos als rel = "external nofollow"> test repos get get </a> <br> <form action = "resttest / restput / 1" metheth = "post"> <input type = "HIDDEN" name = "_ méthode" value = "put"> <entrée type = "soumide" value = "soumi"> </ form> <br> <formulaire) name = "_ Method" value = "Delete"> <input type = "soume" value = "soumi"> </ form> <br> <br> <form action = "resttest / restpost" method = "post"> <input type = "soume" value = "soume"> </ form> </ body> </html>
Remarque: L'annotation @RequestParam dans le gestionnaire doit être ajoutée avec le paramètre requis, sinon une erreur de 400 se produira lors de l'accès à la page.
Résumer
Ce qui précède est tout le contenu de cet article sur l'introduction des exemples de style de repos et de code d'implémentation SpringMVC. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à ce site:
Exemple de démarrage de Springmvc
Explication détaillée du code de requête utilisateur pour API RESTFul de développement SpringMVC
Introduction à la méthode de mise en œuvre de SpringMVC d'implémentation
S'il y a des lacunes, veuillez laisser un message pour le signaler.