@RequestParam, debes haberlo visto; @PathVariable, debes haberlo sabido; @QueryParam, ¿por qué no lo sabes? ! ¡Y él te es familiar (@cookievalue)! ¡Ella (@modelandview)! It (@modelattribute)! Así es, solo anotando esto, Spring MVC te abre un mundo colorido para ti. Vamos, no te emociones (mi) y (hu), siéntate, tengamos una buena charla sobre estos anotaciones hermanos ~~~ (espera, ¿no has oído hablar de eso? Bien, vamos, te sientas en la primera fila, ¡estarás allí!)
1. Cómo hacer coincidir la ruta de solicitud en Spring MVC - "¿Qué ruta de solicitud es mejor, el mapeo de solicitudes es bien conocido"
@RequestMapping se usa para mapear solicitudes, como solicitudes de obtención, solicitudes de publicación o estilos de descanso y estilos no restantes. Esta anotación se puede usar en una clase o en un método, si se usa en una clase, que representa la ruta principal de todos los métodos de la clase.
Por ejemplo (las clases de prueba utilizadas aquí, como SpringMVCTest y algunas páginas, se han introducido en el primer artículo "Learning SpringMVC - A partir de Helloworld")::
Agregar métodos de prueba a springmvctest.java:
@RequestMapping ("/TestRequestMapping") public String TestRequestMapping () {System.out.println ("TestRequestMapping"); devolver el éxito;}Tenga en cuenta que la anotación @RequestMapping ("/TestRequestMapping") se agrega al nivel de método, lo que significa que este método puede ubicarse a través de la ruta relativa de "/TestRequestMapping". Al mismo tiempo, también colocamos una anotación de mapas de solicitudes de nivel de clase en la clase SpringMVCTest:
@RequestMapping ("/SpringMvc")@ControllerPublic Class SpringMvCtest {Tenga en cuenta que también hay una anotación de @Controller. Esta anotación es responsable de las solicitudes de procesamiento distribuidas por el despachador de servicios en SpringMVC. Encapsula los datos solicitados por el usuario a través de la capa de procesamiento de servicio y luego devuelve el modelo a la vista correspondiente para la visualización. En este punto, tenemos una ruta como "SpringMVC/TestRequestMapping", y luego podemos localizar el método TestRequestMapping y luego ejecutar el cuerpo del método dentro del método.
Para agregar una cosa más, SolicsMapping puede implementar rutas de coincidencia difusa, como:
? : Coincide con un personaje
*: Coincide con cualquier personaje
**: rutas de múltiples capas
/springmvc/**/LastTest puede coincidir rutas como/springmvc/firsttest/Secondtest/LastTest
2. Cómo obtener los parámetros solicitados de la primavera MVC - "Ocho inmortales cruzan el mar, cada uno mostrando sus poderes mágicos"
1. @Pathvariable
Esta anotación se utiliza para mapear los marcadores de posición atados en la URL de solicitud. A través de @PathVariables, puede unir el parámetro del marcador de posición en la URL al parámetro del método de procesamiento del controlador. ¿No entiendes? Ver ejemplo:
@RequestMapping ("/testPathVariable/{id}") public String testPathVariable (@PathVariable (value = "id") ID de entero) {system.out.println ("testPathVariable:" + id); devolver el éxito;}En index.jsp agregamos una conexión para activar una solicitud:
<a href = "springmvc/testPathVariable/1"> testPathVariable </a> <br/> <br/>
Podemos ver que hay un hipervínculo aquí. Después de hacer clic, ingresaremos el método de procesamiento del controlador correspondiente a SpringMVC/TestPathVariable/1. Ahora queremos obtener el "1" en este parámetro de solicitud, así que agregue "/testPathVariable/id" al método testPathVariable, sobre ID ", y la correspondencia específica de {id}. En los parámetros de este método, @PathVariable (valor =" id ") se declara y lo recibe y lo recibe a través de ID de introducción.
2. @Requestparam
Esta anotación también se usa para obtener los parámetros de solicitud. Entonces, ¿en qué se diferencia esta anotación de @pathvariable? Veamos el ejemplo:
Agregar métodos en SpringMVCTest
@RequestMapping (valor = "/testRequestParam") public String testRequestParam (@RequestParam (value = "username") String UserName, @RequestParam (value = "Age", requerido = false, defaultyValue = "0" 0 ") {System.out.println (" TestRequestParam " +" UserName: "UsserName:" UsserName: " +" UserName); devolver el éxito;}Agregar etiqueta de hipervínculo en index.jsp
<a href = "springmvc/testRequestParam? UserName = Jackie & Age = 12"> TestRequestParam </a> <br/> <br/>
Al hacer clic en el hipervínculo en la página, coincidirá con la ruta de solicitud de solicitud en el método TestRequestParam en el controlador. Tenga en cuenta que en este método, declaramos dos variables a través de la anotación @RequestParam para obtener el valor del parámetro presentado por la consulta en la solicitud, una es el valor después del nombre de usuario y el otro es el valor después de la edad.
Después de ver esto, probablemente comprenda algunas de las diferencias entre @PathVariable y @RequestParam. Para solicitudes como "SpringMVC/TestPathVariables/1", usamos @PathVariable para unir los parámetros solicitados; mientras que para los parámetros de solicitud como "SpringMVC/TestRequestParam? UserName = Jackie & Age = 12" aparecen como pares de valor clave. Usamos @RQUESTPARAM para obtener el valor de solicitud específico después del nombre de usuario o la edad.
Queram también es similar a SolicParam, porque no es una anotación dentro del marco de Spring MVC, por lo que no se describirá en detalle aquí.
Para diferentes tipos de solicitudes y métodos de solicitud, Spring MVC tiene un conjunto de soluciones específicas. Echemos un vistazo a cómo son las solicitudes de estilo de descanso populares ahora: usar estilo de descanso para lograr la adición, eliminación, modificación y búsqueda.
La implementación ascendente de la interfaz para verificar (obtener), agregar (post), eliminar (eliminar) y modificar (poner)
@RequestMapping (value = "/testRest/{id}", método = requestmethod.put) public string testRestput (@PathVariable (value = "id") ID entero) {System.out.println ("Test Put:" + ID); return éxito;} @RequestMapping (valor = "/testRest/{id}", método = requestmethod.delete) public string testRestDelete (@pathvariable (value = "id") ID de entero) {System.out.println ("Test Delete:" + id); return éxito;} @RequestMapping (valor = "/testRest", método = requestmethod.post) public string testRest () {System.out.println ("Test Post"); return éxito;} @RequestMapping (value = "/testRest/{id}", método = requestmethod.get) public string testRest (@PathVariable (value = "id") ID entero) {System.out.println ("Test Get:" + ID); devolver el éxito;}Entonces, ¿cómo implementar la interfaz de recepción? El orden correspondiente es
<form de acción = "springmvc/testRest/1" método = "post"> <input type = "Hidden" name = "_ Method" value = "put"/> <input type = "enviar" value = "testRestput"/> <//form> <br/> <formy = "springmvc/testRest/1" método = "post"> <input type = "hidden" name "» # "Elimina" el métode "Elimina" deleTee "Elimina" deletera " <input type = "Subt" value = "testRest delete"/> </form> <br> <br> <form de acción = "springmvc/testRest" método = "post"> <input type = "subt" value = "testRestPost"> </borm> <br/> <br/> <a href = "springmvc/testRest/1"> testrest </a> <BR/>> <>> <BRES
Además, también necesitamos agregar una declaración en el archivo de configuración Web.xml que admite convertir Post para eliminar y poner solicitudes.
< <filter-name> Hiddenhttpmethodfilter </filter-name> <url-pattern>/*</url-Pattern> </filtro-mapping>
Como puede ver, la modificación y la eliminación aquí se envían a través de Post, porque Put and Delete no es compatible aquí para implementar directamente la eliminación y la modificación. En su lugar, utilizando el método POST y en silencio, trayendo una etiqueta de entrada de tipo oculto token para decirle el fondo que lo que envié en la recepción es en realidad una solicitud de eliminación y modificación.
Entonces, ¿cómo se implementa este proceso? ¿Por qué agregar?
<input type = "Hidden" name = "_ Method" value = "Eliminar"/>
Este token será comprado por otros en el fondo. Entonces veamos cómo lo compramos más tarde.
En el análisis final, se debe a la adición de la clase Hiddenhttpmethodfilter en Web.xml. Hay un método dofilterinternal en esta clase. A través de la depuración, podemos encontrar pistas, iniciar Tomcat (no Tomcat8), hacer clic en la etiqueta de entrada correspondiente de la operación de eliminación e ingresar la interfaz de depuración. Podemos ver:
Poco pequeño: aquí, tenga en cuenta que la inicio no puede ser Tomcat8, pero solo puede ser una versión más pequeña de 8, como 7 o 6, etc. La siguiente figura muestra el mensaje de error usando Tomcat y la respuesta exitosa usando 7:
Para resumir, cómo enviar una solicitud de PUT y Eliminar:
1. Configurar HiddenHttpmethodfilter en Web.xml
2. Enviar solicitud de publicación
3. Hay un dominio oculto en la solicitud, el nombre es "_mothod", el valor se coloca o se elimina
Finalmente, hablemos de la anotación @cookievalue.
3. @Cookievalue
Esta anotación también es una rutina similar, y también es un mapeo, que mapea un valor de cookie.
Cuando enviamos una solicitud, podemos ver que la solicitud lleva algunos valores de cookies.
Por ejemplo, JSesionid o Path aquí. Ahora escribiremos un método para obtener el valor de la cookie.
Agregar en SpringMvCtest
@RequestMapping (value = "/testcookievalue") Public String testcookievalue (@cookievalue ("JSessionID") String Cookievalue) {System.out.println ("testcookievalue:" + cookievalue); devolver el éxito;}Agregar enlace a la interfaz index.jsp
<a href = "springmvc/testcookievalue"> testcookievalue </a> <br/> <br/>
De esta manera, podemos obtener resultados como "TestCookievalue: 1410F05C9ADD84E8659C2AC79E8CC666".
Hasta ahora, hemos introducido
1. Uso de @RequestMapping
2. Obtenga el uso de @PathVariable y @RequestParam de los parámetros de solicitud
3. Introducir cómo implementar solicitudes de estilo REST y analizar cómo la publicación se convierte en solicitudes Eliminar y poner
4. Introducción al uso de @cookievalue
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.