@RequestParam, você deve ter visto; @PathVariable, você deve saber disso; @Queryparam, por que você não sabe? ! E ele é familiar para você (@cookievalue)! Ela (@modlandView)! It (@modelattribute)! É isso mesmo, apenas anotando isso, o Spring MVC abre um mundo colorido para você. Vamos lá, não fique empolgado (MI) e (Hu), sente -se, vamos conversar sobre essas anotações Brothers ~~~ (espere, você não ouviu falar disso? Ok, vamos lá, você senta na primeira fila, estará lá!)
1. Como corresponder ao caminho de solicitação no MVC da primavera - "Qual caminho de solicitação é melhor, o requestmapping é bem conhecido"
O @RequestMapping é usado para mapear solicitações, como solicitações GE GET, POST SOLDAÇÕES ou Estilos de REST e estilos não-restaurante. Esta anotação pode ser usada em uma classe ou em um método, se usado em uma classe, representando o caminho pai de todos os métodos da classe.
Por exemplo (as aulas de teste usadas aqui, como SpringMVCTest e algumas páginas, foram introduzidas no primeiro artigo "Aprendendo Springmvc - começando do Helloworld"):
Adicione métodos de teste ao springmvctest.java:
@RequestMapping ("/testRequestMapping") public String testRequestMapping () {System.out.println ("testRequestMapping"); sucesso de retorno;}Observe que a anotação @RequestMapping ("/testRequestMapping") é adicionada ao nível do método, o que significa que esse método pode ser localizado através do caminho relativo de "/testRequestMapping". Ao mesmo tempo, também colocamos uma anotação de nível de aula na classe Springmvctest:
@RequestMapping ("/springmvc")@controlerpublic classe springmvctest {Observe que há também uma anotação de @Controller. Esta anotação é responsável pelo processamento de solicitações distribuídas pelo DispatcheserServlet no SpringMVC. Ele encapsula os dados solicitados pelo usuário através da camada de processamento de serviço e retorna o modelo para a visualização correspondente para exibição. Nesse ponto, temos um caminho como "Springmvc/testRequestMapping" e, em seguida, podemos localizar o método TestRequestMapping e, em seguida, executar o corpo do método dentro do método.
Para adicionar mais uma coisa, o requestmapping pode implementar caminhos combinados difusos, como:
? : Combinar um personagem
*: Combine qualquer personagem
**: Combine os caminhos de várias camadas
/springmvc/**/lasttest pode corresponder a caminhos como/springmvc/primeirotest/segundotest/lasttest
2. Como obter os parâmetros solicitados do MVC da primavera - "Oito imortais atravessam o mar, cada um mostrando seus poderes mágicos"
1. @PathVariable
Esta anotação é usada para mapear os espaços reservados vinculados ao URL da solicitação. Através do @PathVariable, você pode vincular o parâmetro do espaço reservado na URL ao parâmetro do método de processamento do controlador. Você não entende? Veja o exemplo:
@RequestMapping ("/testPathvariable/{id}") public String testPathVariable (@PathVariable (value = "id") ID inteiro) {System.out.println ("testPathVariable:" + id); sucesso de retorno;}Em index.jsp, adicionamos uma conexão para acionar uma solicitação:
<a href = "springmvc/testPathvariable/1"> testPathVariable </a> <br/> <br/>
Podemos ver que há um hiperlink aqui. Depois de clicar, inseriremos o método de processamento do controlador correspondente a SpringMVC/TestPathVariable/1. Queremos agora obter o "1" neste parâmetro de solicitação, então adicione "/testPathVariable/id" ao método testPathVariable, sobre ID "e a correspondência específica de {id}. Nos parâmetros deste método, @pathVariable (value =" id ") é declarado e ligado e recebem e recebem a Inteira, por meio do método, podemos ficar e receber e recebê-lo por meio de Inteiro, por meio deste método, podemos ficar e receber e receber e receber 1 por meio do método.
2. @RequestParam
Esta anotação também é usada para obter os parâmetros de solicitação. Então, como essa anotação é diferente de @PathVariable? Vejamos o exemplo:
Adicionando métodos no SpringMVCTest
@RequestMapping (Value = "/testRequestParam") public String testRequestParam (@RequestParam (value = "nome de usuário") String UserName, @RequestParam (value = "Age", requerido = FalserquestParam = "0") Int Age) {system.out.PrintLn ("testRequar sucesso de retorno;}Adicione a tag hyperlink em index.jsp
<a href = "springmvc/testRequestParam? nome de usuário = Jackie & Age = 12"> testRequestParam </a> <br/> <br/>
Clicar no hiperlink na página corresponderá ao caminho do requestMapping no método TestRequestParam no controlador. Observe que, neste método, declaramos duas variáveis através da anotação @RequestParam para obter o valor do parâmetro trazido pela consulta na solicitação, um é o valor após o nome de usuário e o outro é o valor após a idade.
Depois de ver isso, você provavelmente entende algumas das diferenças entre @PathVariable e @RequestParam. Para solicitações como "Springmvc/testPathVariable/1", usamos @PathVariable para ligar os parâmetros solicitados; enquanto parâmetros de solicitação como "springmvc/testRequestParam? nome de usuário = Jackie & Age = 12" aparecem como pares de valor-chave. Usamos @RequestParam para obter o valor de solicitação específico após o nome de usuário ou a idade.
O queryparam também é semelhante ao RequestParam, porque não é uma anotação dentro da estrutura do MVC da primavera, por isso não será descrito em detalhes aqui.
Para diferentes tipos de solicitação e métodos de solicitação, o Spring MVC possui um conjunto de soluções direcionadas. Vamos dar uma olhada em como são as solicitações populares de estilo de repouso agora - usando o estilo REST para obter adição, exclusão, modificação e pesquisa.
A implementação de baixo para cima da interface para verificar (get), adicionar (postar), deletar (deletar) e modificar (put) é implementada na classe Springmvctest de baixo para cima
@RequestMapping (value = "/testRest/{id}", método = requestMethod.put) public String testRestput (@PathVariable (value = "id") ID de ID) {System.out.println ("teste put:" + id); retornar sucesso;} @RequestMapping (value = "/testRest/{id}", método = requestMethod.delete) public String testRestDelete (@PathVariable (value = "id") integer id) {System.out.println ("Test Delete:" + id); retornar sucesso;} @RequestMapping (value = "/testRest", método = requestMethod.post) public String testRest () {System.out.println ("teste post"); retornar sucesso;} @ReQuestMapp (value = "/testRest/{id}", métod = requestMethod.get) public String testRest (@PathVariable (value = "id") ID inteiro) {System.out.println ("teste get:" + id); sucesso de retorno;}Então, como implementar a interface da recepção? A ordem correspondente é
<form action = "springmvc/testRest/1" method = "post"> <input type = "hidden" name = "_ métod" value = "put"/> <input type = "submit" value = "testRestput"/> </form> <br/> <form Action = springmvc/testRest/1 "Method =" Post> <input type="submit" value="TestRest DELETE"/></form><br><br> <form action="springmvc/testRest" method="post"> <input type="submit" value="testRestPost"></form><br/><br/> <a href="springmvc/testRest/1">testRest</a><br/><br/>
Além disso, também precisamos adicionar uma instrução no arquivo de configuração Web.xml que suporta a conversão de postagens para excluir e colocar solicitações.
<!-Configure HiddenHttpMethodfilter: Você pode converter solicitações de postagem para excluir ou postar solicitações-> <filter> <filter-name> hiddenhttpmethodfilter </filter-name> <filter-class> org.springframework.web.fasthter.hidinghttpmethFilter <Filter-Name> hiddenhttpmethodfilter </filter-name> <url-tattern>/*</url-tattern> </filter-Mapping>
Como você pode ver, a modificação e a exclusão aqui são enviadas por meio de postagem, porque o put e o exclusão não são suportados aqui para implementar diretamente a exclusão e a modificação. Em vez disso, usando o método de post e trazendo silenciosamente uma tag de entrada de tipos ocultos para dizer ao plano de fundo que o que enviei na recepção é realmente uma solicitação de exclusão e modificação.
Então, como esse processo é implementado, por que adicionar
<input type = "hidden" name = "_ método" value = "exclate"/>
Este token será comprado por outras pessoas em segundo plano. Então vamos ver como compramos mais tarde.
Na análise final, é devido à adição da classe HiddenHttpMethodfilter em web.xml. Existe um método dofilterinternal nesta classe. Através da depuração, podemos encontrar pistas, iniciar o tomcat (não o tomcat8), clicar na tag de entrada correspondente da operação de exclusão e insira a interface de depuração. Podemos ver:
Pit Small: Aqui, observe que a startup não pode ser o TomCat8, mas pode ser apenas uma versão menor que 8, como 7 ou 6, etc. A figura a seguir mostra a mensagem de erro usando o tomcat e a resposta bem -sucedida usando 7:
Para resumir, como enviar uma solicitação de put e excluir:
1. Configure HiddenHttpMethodfilter em web.xml
2. Enviar solicitação de postagem
3. Há um domínio oculto na solicitação, o nome é "_mothod", o valor é colocado ou excluído
Por fim, vamos falar sobre a anotação @cookievalue.
3. @CookieValue
Esta anotação também é uma rotina semelhante e também é um mapeamento, que mapeia um valor de cookie.
Quando enviamos uma solicitação, podemos ver que a solicitação está carregando alguns valores de cookies.
Por exemplo, JSessionId ou Path aqui. Agora vamos escrever um método para obter o valor do cookie.
Adicione SpringmvcTest
@RequestMapping (value = "/testCookieValue") public String testCookieValue (@CookievAvalue ("JSessionId") String CookieValue) {System.out.println ("TestCookieValue:" + CookieValue); sucesso de retorno;}Adicione o link à interface index.jsp
<a href = "springmvc/testcookievalue"> testcookieValue </a> <br/> <br/>
Dessa forma, podemos obter resultados como "TestCookieValue: 1410F05C9ADD84E8659C2AC79E8CCC666".
Até agora, apresentamos
1. Uso de @RequestMapping
2. Obtenha o uso de @PathVariable e @RequestParam dos parâmetros de solicitação
3. Introduzir como implementar solicitações de estilo de repouso e analisar como a postagem é convertida em excluir e colocar solicitações
4. Introdução ao uso de @cookievalue
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.