Introdução
O descanso é a transferência de estado representacional. (Recurso) Transformação do estado da camada de desempenho. Atualmente, é a arquitetura de software da Internet mais popular. Ele tem uma estrutura clara, compatível com os padrões, fácil de entender e fácil de expandir, por isso está sendo adotado por mais e mais sites, postar, excluir, colocar e ser correspondido a Crud, respectivamente. Spring3.0 começou a suportar solicitações de estilo de repouso, convertendo solicitações de postagem em solicitações de put e excluir através do org.springframework.web.filter.hiddenhttpmethodfilter. Este experimento usa a primavera 4.0.
HiddenHttpMethodfilter Código -fonte
public static final string default_method_param = "_method";@substituir o void protegido dofilterinternal (solicitação httpServletRequest, httpServletResponse resposta, filterchain Chain) lança o servleTexception, ioexception {string paramvalue = settParpParAmeter (this.MethodPeT.METHONETRO. ("Post" .equals (request.getMethod ()) && stringUtils.haslength (paramvalue)) {string method = paramvalue.TOUPPERCASE (Locale.English); httpServLeTrequest wrapper = new httpmethodReQuPRAPRIPDRAPRIPRAPTR); resposta);}}A partir do código -fonte do HiddenHttpMethodfilter, pode -se ver que a mola o converte de acordo com o parâmetro _method na solicitação. Portanto, se você deseja iniciar uma solicitação de excluir ou colocar no estilo REST, só precisará incluir o parâmetro _method no formulário e definir o valor de _method para excluir ou colocar (caps). Exemplos detalhados são os seguintes:
Configurar hiddenhttpmethodfilter em web.xml
Escreva a página de escrita do código do manipulador
<!-- Configure org.springframework.web.filter.HiddenHttpMethodFilter to convert POST requests into PUT or DELETE requests --> <filter> <filter-name>HiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name> hiddenhttpmethodfilter </filter-name> <url-tattern>/*</url-tattern> </filter-mapping>
pacote rex.springmvc.handlers; importar org.apache.log4j.logger; importar org.springframework.steretype.controller; importar org.springframework.web.bind.annotation.requestmapping; importação org.springframework.webing.bind.bind.requestmapping; importação.SPRINGRINGROW.WEB.BIND.BIND.REQUING.REQUINDMAPTORATION; org.springframework.web.bind.annotation.requestParam; @RequestMapping (value = "/RestTest")@controlerpublic classe RestTestHandler {private Static Final Logger) método = requestMethod.get) public String RestGet (@RequestParam (value = "id", requerir = false) ID inteiro) {Logger.debug ("RestGet:" + id); retorna success;}@requerkMapp (value "/Restput/{id}, Method = requestmethod.put) requer string (restput ="/Restput/{id} ", Method = requestmethod.put) string (restput = ("/Restput/{id} ", Method = requestmethod.put) requer string (rentput (requim@) id) {Logger.debug ("Restput:" + id); return succcess;}@requestMapp (value = "/RestDelete/{id}", método = requestmethod.delete) public String RestDelete (@ReQuestParam (value = "id requerido = false) Integer) {Logger.DeB (@ReQuestParam (value" Id ", exigido = false)) {Logger.DeB (LoggerB (Value =" Id ", exigido = false)" Rest) {LoggerB (LoggerB (Value = "Id", exigido = false) "Rest) {LoggerB (LoggerB (@ReQuestParam (" idéia ", obrigatória). Sucesso;}@requestmapping (value = "/RestPost", Method = requestMethod.post) public String RestPost () {Logger.debug ("RestPost"); Return Success;}}<%@ página de página = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <! Doctype html public "-// w3c // dtd html 4.01 transitório // en" "http://www.w3.org/tr/html4/loose.dtd"><html> <head><meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> <title> teste </title </cheft> </html; Rel = "Nofol siglow"> REST GET </a> <br> <form Action = "RestTest/Restput/1" Method = "post"> <input type = "Hidden" name = "_ Method" value = "put"> <input type = "submit" value = "submit"> </forma> <br> <Form Action = "RestStest/RestSTEst/RestStel" name = "_ método" value = "delete"> <input type = "submit" value = "submit"> </form> <br> <br> <formulário action = "RestTest/RestPost" Method = "post"> <input type = "submit" value = "submit"> </form> </body> </html>
Nota: A anotação @RequestParam no manipulador deve ser adicionada com o parâmetro necessário, caso contrário, ocorrerá um erro 400 ao acessar a página.
Resumir
O exposto acima é todo o conteúdo deste artigo sobre a introdução do estilo de repouso Springmvc e exemplos de código de implementação. Espero que seja útil para todos. Amigos interessados podem continuar se referindo a este site:
Springmvc Introdução Exemplo
Explicação detalhada do código de consulta do usuário para Springmvc Development RESTful API
Introdução ao método do SpringMVC de implementar o upload assíncrono usando o multipartfile
Se houver alguma falha, deixe uma mensagem para apontá -la.