Introducción
REST es la transferencia de estado de representación. (Recurso) Transformación del estado de la capa de rendimiento. Es la arquitectura de software de Internet más popular en la actualidad. Tiene una estructura clara, que cumple con los estándares, fácil de entender y fácil de expandir, por lo que está siendo adoptada por más y más sitios web, publicar, eliminar, poner y ser correspondiente a Crud, respectivamente. Spring3.0 comenzó a admitir solicitudes de estilo REST, convirtiendo las solicitudes de publicación en solicitudes de Put and Eliminar a través de org.springframework.web.filter.hiddenhttpmethodfilter. Este experimento usa Spring 4.0.
Hiddenhttpmethodfilter Código fuente
Public static final String Default_method_param = "_method";@anular void void dofilterInternal (httpservletRequest request, httpServletResponse respuesta, filtreChain FilterChain) lanza ServLetException, ioException {String ParamValue = request.getParameter (this.methodparam); si ("Post" .equals (request.getMethod ()) && stringUtils.hasLength (paramValue)) {string methode = paramValue.ToUpperperCase (locale.English); httpservletrequest wrapper = new httpmethodrequrapper (solicitud, método); filtroin.dofilter (wrapper, respuesta);};} {FilterChain.DoFilter (solicitud, respuesta);}}Del código fuente de Hiddenhttpmethodfilter, se puede ver que Spring lo convierte de acuerdo con el parámetro _method en la solicitud. Por lo tanto, si desea iniciar una solicitud de eliminación o put de estilo REST, solo debe incluir el parámetro _method en el formulario y establecer el valor de _method para eliminar o poner (tapas). Los ejemplos detallados son los siguientes:
Configurar Hiddenhttpmethodfilter en Web.xml
Página de escritura de código de escritura de controlador
< </filtro> <filter-mapping> <filter-name> Hiddenhttpmethodfilter </filtre-name> <url-pattern>/*</sl-Pattern> </filtre-mapping>
paquete 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.requestparam; @requestmapping (value = "/resttest")@controlerpublic class resttestHandler {private static final logger = logger.getLogger (resttesthandler.class.class); private static final string strituce = "éxito";@requestmapping (value = "/RESTGET/},", privado); método = requestMethod.get) public String Restget (@RequestParam (valor = "id", requerido = false) ID de Integer) {logger.debug ("restget:" + id); return succes;}@requestmapping (valor = "/restput/{id}", método = requestmethod.put) public string Restput (@ReRequestparam (value = "id" ID ", requerido) id) {logger.deBug ("Restput:" + id); return éxito;}@requestmapping (value = "/RestDelete/{id}", método = requestmethod.delete) cadena pública RESTDELETE (@RequestParam (value = "id", requerido = falso) ID) {logger.Debug ("RESTDELETE:" ID); Éxito;}@requestmapping (value = "/RestPost", método = requestmethod.post) public string restsPost () {logger.debug ("reestpost"); return éxito;}}<%@ page lenguaje = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <! DocType html público "-// w3c // dtd html 4.01 transición // en" " "http://www.w3.org/tr/html4/loose.dtd"> podet Nofollow "> Test REST get </a> <br> <form action =" resttest/restput/1 "método =" post "> <input type =" Hidden "name =" _ Method "value =" put "> <input type =" Subt "value =" Subt "> </borm> <br> <Form Action =" RestTest/RestDelete/1 "Method =" Post "> <Interput type =" Hidden "Hidden" HiDden "n. valor = "eliminar"> <input type = "Subt" value = "Subt"> </form> <br> <br> <Form Action = "RestTest/RestPost" Method = "Post"> <Input type = "Subt" Value = "Subt"> </form> </body> </html>
NOTA: La anotación @RequestParam en el controlador debe agregarse con el parámetro requerido, de lo contrario se producirá un error 400 al acceder a la página.
Resumir
Lo anterior es todo el contenido de este artículo sobre la introducción del estilo de descanso SpringMVC y los ejemplos de código de implementación. Espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a este sitio:
Ejemplo de springmvc de inicio
Explicación detallada del código de consulta de usuario para el desarrollo de SpringMVC RESTFUL API
Introducción al método de SpringMVC para implementar la carga asíncrona utilizando el archivo multipart
Si hay alguna deficiencia, deje un mensaje para señalarlo.