Directorio de artículos
-
- @RequestMapping anotación
-
- Seis atributos básicos
- Uso de la anotación @RequestMapping
-
- 1. Agregue `@ RequestMapping` a la clase (nombre la dirección del módulo)
- 2. Se escribe `@ RequestMapping` en el método
-
- 2.1 Escriba el valor de la cadena / `valor` /` ruta` directamente, llame a la dirección / módulo / `testMapping` del proyecto actual para acceder,
- 2.2 Configurar múltiples asignaciones de enlaces
- 2.2 Uso del atributo "método"
- 2.3 atributo `param`
- 2.4 atributo `encabezados`
- 2.5 atributo `consume`
- 2.6 atributo `produce`
- 2.7 Establecer parámetros de solicitud con `@ RequestParam` 【***】
- 2.8 Coopere con `@ PathVariable` para realizar el procesamiento dinámico de URL [***]
@RequestMapping anotación
@RequestMapping
Es una solicitud de procesamiento para la dirección al método de anotación de la función del controlador del procesador de las reglas de mapeo, las anotaciones mapean las solicitudes HTTP al método de procesamiento del controlador MVC y el controlador REST , se puede usar en una clase o método . La anotación en la clase significa que todos los métodos de la clase que responden a las solicitudes utilizan esta dirección como ruta principal (ruta del módulo).
Seis atributos básicos
Nombre del Atributo | descripción |
---|---|
valor (ruta) | Especifique la dirección de acceso real de la solicitud, la @RequestMapping("url") URL del valor predeterminado es el valor de value. La dirección especificada puede ser un patrón de plantilla URI. |
método | Especifique el tipo de método de la solicitud, principalmente GET, POST, DELETE, PUT, etc .; |
params | Especifique que ciertos valores de parámetros deben incluirse en la solicitud e inclúyalos para permitir que el método procese la solicitud. |
encabezados | La solicitud especificada debe contener ciertos valores de encabezado especificados, de modo que el método pueda procesar la solicitud incluyéndola. |
consume | Especifique el tipo de datos devueltos después de procesar la solicitud, como application / json, text / html, etc. |
produce | Especifique el tipo de contenido que se devolverá y devuélvalo solo si el tipo (Aceptar) del encabezado de la solicitud contiene el tipo especificado; |
Uso de la anotación @RequestMapping
1. @RequestMapping
Agregue a la clase (nombre la dirección del módulo)
El acceso a todos los métodos de esta clase requiere un prefijo de dirección /test
+ la ruta / valor del método específico para acceder
@Controller
@RequestMapping("test")
public class RequestMappingController {
}
2. @RequestMapping
Escribe sobre el método
2.1 Escriba el valor de la cadena directamente value
// path
, llame a la dirección / módulo / testMapping
acceso del proyecto actual ,
@RequestMapping("testMapping")
public String testMapping(){
return "requestmappingsuccess";//视图解析器前后缀拼接返回页面地址
}
//或者下面方法都行
@RequestMapping(value = "testMapping")
@RequestMapping(path = "testMapping")
2.2 Configurar múltiples asignaciones de enlaces
//通过 /test1 /test2 /test3 和/testurl/下的所有子模块 都能访问
@RequestMapping({
"/test1","/test2","/test3","testurl/*"})
@RequestMapping(value = {
"/test1","/test2","/test3",,"testurl/*"})
@RequestMapping(path = {
"/test1","/test2","/test3",,"testurl/*"})
2.2 method
Uso de atributos
method
Si no está configurado, se puede acceder a cualquier atributo, si está configurado, solo se puede acceder al método de solicitud del método de envío configurado.
Valor en 4:
RequestMethod.GET
RequestMethod.POST
RequestMethod.PUT
RequestMethod.DELETE
Si se establece el valor del método, solo se puede admitir el método de solicitud para establecer el valor y no se admiten otros métodos de solicitud.就会报405错误 – Method Not Allowed
//设置只支持post请求
@RequestMapping(path="testMethod",method = {
RequestMethod.POST})
//设置只接收get请求
@RequestMapping(path="testMethod",method = {
RequestMethod.GET})
2.3 param
Propiedades
Especifique que ciertos valores de parámetros deben incluirse en la solicitud e inclúyalos para permitir que el método procese la solicitud.
//请求中必须要有参数username(页面中的name值),且参数值要为striveday才执行该方法
@RequestMapping(value="/testParam", params="username = strivedaay")
//请求中必须要有参数username(页面中的name值),且参数值不为striveday才执行该方法
@RequestMapping(value="/testParam", params="username != strivedaay")
2.4 headers
Propiedades
El alcance de la solicitud especificada debe contener ciertos valores de encabezado especificados, que se pueden incluir para permitir que el método procese la solicitud.
@RequestMapping(value="testHeaders",headers={
"context-type=text/plain","context-type=text/html"})
public String testHeaders(){
}
Para el acceso anterior, si context-type=text/plain,context-type=text/html
estos dos atributos no están incluidos en el encabezado de la solicitud , no se puede acceder al método y se informa un error 404.
2.5 consumes
atributos
consumes
Especifique el tipo de datos devueltos después de procesar la solicitud, por ejemplo application/json
, text/html
etc.
//设置处理请求之后返回值为json数据类型
@RequestMapping(value = "testConsumes",consumes="application/json")
public String testConsumes(@RequestBody User user, Model model) {
}
2.6 produces
Propiedades
produces
Se utiliza para especificar el tipo de contenido devuelto, y solo si el tipo especificado se incluye en el tipo (Aceptar) en el encabezado de la solicitud.
//设置请求之后返回数据是json数据类型,且request的请求头中的要有(包含)该类型,才能返回
@RequestMapping(value = "testProduces ",consumes="application/json")
public String testProduces(@RequestBody User user, Model model) {
}
2.7 Cooperación con la @RequestParam
configuración de parámetros de solicitud request ***】
Con @RequestParam, puede vincular los parámetros de solicitud HTTP a los parámetros del método en el controlador y darse cuenta de que los parámetros de los parámetros entrantes de la página (el valor del nombre) y los nombres de los parámetros formales del método que recibe la lista de parámetros son inconsistentes, y también se puede realizar la vinculación de parámetros (asignación)
@RequestParam
Las anotaciones tienen tres atributos
- valor : el valor de la anotación debe ser coherente con el nombre del parámetro pasado en la página.
- obligatorio : el valor predeterminado es verdadero, lo que significa que el parámetro debe tener un valor. Si no se proporciona este valor, aparecerá una página de 400.
- defaultValue = "striveday": si se proporciona el parámetro, consígalo; si no se proporciona ningún parámetro, el valor predeterminado es striveday.
- [Sugerencias 1]
@RequestParam
De forma predeterminada, se deben especificar los parámetros, y los parámetros especificados se pueden seleccionar mediante configuraciónrequired = false
, de modo que se pueda acceder al método sin los parámetros@RequestParam
especificadosvalue
en la solicitud .- [Consejos 2]
defaultValue
El valor que se puede establecer , de modo que incluso si elvalue
parámetro solicitado no tiene un valor, se establecerá un valor predeterminado por defaultValue, y también se puede acceder a este método.- [Consejos 1] Todos los datos transmitidos desde la página al fondo son de tipo String, y el
request.getParameter()
tipo de datos obtenido también es de tipo String, pero Spring convertirá automáticamente entre String y los ocho tipos de datos básicos.- [Consejos 2] Error 400 (HTTP Status 400): Se refiere a la solicitud incorrecta. Los parámetros proporcionados por la URL y el método recibido especificado son inconsistentes, el tipo de número y el número son inconsistentes, el nombre del parámetro es inconsistente, etc.
Por ejemplo, cuando username = striveday
se pasa un parámetro @RequestParam()
a la página , se puede especificar mediante una anotación y se puede asignar el nombre del parámetro del método si no es coherente con el nombre del parámetro de solicitud que se pasa desde la página.
//通过@RequestParam让页面传入的参数username赋值给方法参数列表的name
@RequestMapping("testRequestParam")
public String getUsername(@RequestParam("username") String name){
System.out.println("username = " + name);
}
2.8 Coopere con @PathVariable
, realice el procesamiento de URL dinámica 【***】
@RequestParam
Y la@PathVariable
diferencia:
@RequestMapping
es un valor solicitud de parámetro se utiliza para procesar la dirección de petición de URL a la función de regla de asignación método controlador de procesador
@PathVariable
es la unión de la parte variable de plantilla en la petición URI con el parámetro de método del método de procesamiento de función del procesador, que se utiliza para que coincida con la URL Reglas y patrones del camino.
//testPathVariable/{urlValue} 其中urlValue是占位符
//以前的url是 /testPathVariable?urlvalue=值 现在变成了/testPathVariable/值
@RequestMapping(value = "/testPathVariable/{urlValue}", method = RequestMethod.GET)
public String getUrlValue (@PathVariable("urlValue") String username){
System.out.println("urlValue = " + username);
return username;
}
El acceso al método anterior
localhost:8080/testPathVariable/参数值
, sin importar cuál sea el valor del parámetro, se accederá al método, pero se asignarán diferentes valores de parámetro al nombre de usuario del hámster del método. Por ejemplo, tanto su visitalocalhost:8080/testPathVariable/striveday
como su visitalocalhost:8080/testPathVariable/study
visitarán el métodogetUrlValue
, pero sus asignaciones sonusername
diferentes y los resultados de salida se dividen enurlValue = striveday
yurlValue = study