[Artículos de SSM-SpringMVC] 04- Explicación detallada de la anotación @ RequestMapping, super detallada, utilizada con la anotación @RequestParam y @PathVariable

@RequestMapping anotación

@RequestMappingEs 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. @RequestMappingAgregue 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. @RequestMappingEscribe sobre el método

2.1 Escriba el valor de la cadena directamente value// path, llame a la dirección / módulo / testMappingacceso 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 methodUso de atributos

methodSi 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 paramPropiedades

  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 headersPropiedades

  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/htmlestos 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 consumesatributos

  consumesEspecifique el tipo de datos devueltos después de procesar la solicitud, por ejemplo application/json, text/htmletc.

//设置处理请求之后返回值为json数据类型
@RequestMapping(value = "testConsumes",consumes="application/json")
public String testConsumes(@RequestBody User user, Model model) {
    
    }   

2.6 producesPropiedades

  producesSe 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 @RequestParamconfiguració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)

@RequestParamLas 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] @RequestParamDe forma predeterminada, se deben especificar los parámetros, y los parámetros especificados se pueden seleccionar mediante configuración required = false, de modo que se pueda acceder al método sin los parámetros @RequestParamespecificados valueen la solicitud .
  • [Consejos 2] defaultValueEl valor que se puede establecer , de modo que incluso si el valuepará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 = strivedayse 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 【***】

@RequestParamY la @PathVariablediferencia:
  @RequestMappinges 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
  @PathVariablees 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 visita localhost:8080/testPathVariable/strivedaycomo su visita localhost:8080/testPathVariable/studyvisitarán el método getUrlValue, pero sus asignaciones son usernamediferentes y los resultados de salida se dividen en urlValue = strivedayyurlValue = study

Supongo que te gusta

Origin blog.csdn.net/qq_40542534/article/details/109072582
Recomendado
Clasificación