Anotaciones de parámetros comunes para el procesamiento de solicitudes de springboot problema 7 de springboot

Procesamiento de solicitudes: uso de anotaciones de parámetros comunes

anotación:

  • @PathVariablevariable de ruta
  • @RequestHeaderobtener encabezados de solicitud
  • @RequestParamObtener parámetros de solicitud (en referencia a los parámetros después del signo de interrogación, url?a=1&b=2)
  • @CookieValueObtener el valor de la cookie
  • @RequestAttributeObtener atributos de dominio de solicitud
  • @RequestBodyObtener el cuerpo de la solicitud [POST]
  • @MatrixVariablevariable de matriz
  • @ModelAttribute

Esto es lo que nos pasó
inserte la descripción de la imagen aquí

PathVariableObtener anotación de variable de ruta

Eche un vistazo a la anotación PathVariable

inserte la descripción de la imagen aquí

Si el valor de un parámetro es el mapa, entonces pondrá el valor kv en la ruta al mapa.
inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

@RestController
public class ParameterTestController {
    
    

    @GetMapping("/car/{id}/owner/{name}")
    public Map<String,Object> getCar(@PathVariable("id")Integer id ,
                                     @PathVariable("name") String name,
                                     @PathVariable Map<String,String> pv) {
    
    

    Map<String,Object> map = new HashMap<>();
    map.put("id",id);
    map.put("name",name);
    map.put("pv",pv);

        return map;
    }


}

Este mapa tratamos de sacar todos los valores
inserte la descripción de la imagen aquí
y conseguirlo
inserte la descripción de la imagen aquí

obtener encabezados de solicitud@RequestHeader

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
Entendido

inserte la descripción de la imagen aquí

@RequestParamObtener parámetros de solicitud (en referencia a los parámetros después del signo de interrogación, url?a=1&b=2)

El mapa es el mismo que el anterior, que encapsula todos
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

@CookieValueObtener el valor de la cookie

El comentario en @CookieValue
probablemente signifique que también podemos declarar un tipo de cookie para que podamos tomar todas las cookies.
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
Algunos navegadores no tienen cookies. No se preocupe por eso aquí.

@RequestBody Obtener los datos del cuerpo de la solicitud (solicitud POST)

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
Entendido
inserte la descripción de la imagen aquí

Procesamiento de solicitudes: @RequestAttribute obtiene los atributos en el campo de solicitud

 @GetMapping("/goto")
    public String goToPage(HttpServletRequest request){
    
    

        request.setAttribute("msg","成功了...");
        request.setAttribute("code",200);
        return "forward:/success";  //转发到  /success请求
    }

    @ResponseBody
    @GetMapping("/success")
    public Map success(@RequestAttribute(value = "msg",required = false) String msg,
                       @RequestAttribute(value = "code",required = false)Integer code,
                       HttpServletRequest request){
    
    
        Object msg1 = request.getAttribute("msg");

        Map<String,Object> map = new HashMap<>();
        Object hello = request.getAttribute("hello");
        Object world = request.getAttribute("world");
        Object message = request.getAttribute("message");

        map.put("reqMethod_msg",msg1);
        map.put("annotation_msg",msg);
        map.put("hello",hello);
        map.put("world",world);
        map.put("message",message);

        return map;
    }

El valor de este falso es que no hay ningún elemento de mensaje.
inserte la descripción de la imagen aquí

MatrixVariable与UrlPathHelper

  1. Sintaxis: Solicitud de ruta: /cars/sell;low=34;brand=byd,audi,ydeste tipo de banda; es la variable de matriz

  2. SpringBoot deshabilita la función de variables de matriz por defecto

    • Apertura manual: principio. Manejo de caminos. removeSemicolonContent de UrlPathHelper se establece en falso, lo que le permite admitir variables de matriz.
  3. Las variables de matriz deben tener variables de ruta de URL para ser analizadas

¿Por qué existe tal cosa como una variable de matriz?

Desarrollo de la página, la cookie está deshabilitada, ¿cómo usar el contenido en la sesión?

Guardamos cosas en la sesión
session.set(a,b)—>
jsessionid—>
lo que guardamos está en la cookie
cookie ----> Llévala cada vez que enviamos una solicitud.

Después de que el servidor reciba la cookie, encontrará el objeto de la sesión de acuerdo con jsessionid, y luego puede usar el método get para encontrar lo que ha guardado.
Pero si la cookie no puede usar las cosas almacenadas en nuestra sesión, no se encontrará.
Para resolver este problema, se produce la reescritura de la URL. Escribamos el valor de la cookie en la URL.
Para distinguirla de las variables ordinarias, usamos ; para
reescribir la URL del intervalo: /abc;jsesssionid= xxxx para pasar el valor de la cookie utilizando una variable de matriz.
Por ejemplo, /jefe/1;edad= 20/2;edad=20
1;edad=20 Antes del
punto y coma está la ruta de acceso y después del punto y coma está la variable de matriz

prueba

inserte la descripción de la imagen aquí

      @GetMapping("/cars2/{path}")
    public Map carsSell(@MatrixVariable("low") Integer low,
                        @MatrixVariable("brand") List<String> brand,
                        @PathVariable("path") String path){
    
    
        Map<String,Object> map = new HashMap<>();

        map.put("low",low);
        map.put("brand",brand);
        map.put("path",path);
        return map;
    }

variable de matriz abierta

package com.example.springboot_study_02.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.MatrixVariable;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.util.UrlPathHelper;

import java.util.HashMap;
import java.util.Map;

@Configuration(proxyBeanMethods = false)
public class WebConfig {
    
    
    //implements WebMvcConfigurer
    @Bean
    public WebMvcConfigurer webMvcConfigurer() {
    
    
        return new WebMvcConfigurer() {
    
    
            @Override
            public void configurePathMatch(PathMatchConfigurer configurer) {
    
    
                UrlPathHelper urlPathHelper = new UrlPathHelper();
                // 不移除;后面的内容。矩阵变量功能就可以生效
                urlPathHelper.setRemoveSemicolonContent(false);
                configurer.setUrlPathHelper(urlPathHelper);
            }
        };
    }

//    @Override
//    public void configurePathMatch(PathMatchConfigurer configurer) {
    
    
//
//        UrlPathHelper urlPathHelper = new UrlPathHelper();
//        // 不移除;后面的内容。矩阵变量功能就可以生效
//        urlPathHelper.setRemoveSemicolonContent(false);
//        configurer.setUrlPathHelper(urlPathHelper);
//    }
}

Recuerda activar el bloqueador

spring:
  resources:
    static-locations: [classpath:/gb/,classpath:/gb1/]
  mvc:
    hiddenmethod:
      filter:
        enabled: true

inserte la descripción de la imagen aquí

Sin relación

Hoy es 25 de marzo de 2022.
Mi nota del primer día fue escrita el 20 de marzo, lo que significa que solo vi 30 episodios de cursos en línea en cinco días. Se puede decir que mi eficiencia de aprendizaje es relativamente infructuosa. Bueno, es
principalmente las clases de la escuela. Realmente no quiero ir al tercer año. Todavía dependo de muchas cosas de la escuela todos los días. Tengo miedo de que si no me gradúo, me moriré de hambre
. Me siento que he ganado mucho con el modo de diseño
. Las cosas escritas por el senior Xiaoying son mucho mejores que las mías, pero mi primer artículo acaba de comenzar hace dos días y está clasificado más alto que el senior Xiaoying, lo cual es inaceptable.

Supongo que te gusta

Origin blog.csdn.net/qq_47431361/article/details/123737233
Recomendado
Clasificación