Directorio de artículos
- Procesamiento de solicitudes: uso de anotaciones de parámetros comunes
- `PathVariable` obtiene la anotación de variable de ruta
- Obtener encabezado de solicitud `@RequestHeader`
- ` @RequestParam ` Obtener parámetros de solicitud (refiriéndose a los parámetros después del signo de interrogación, url?a=1&b=2)
- `@CookieValue` para obtener el valor de la cookie
- @RequestBody Obtener los datos del cuerpo de la solicitud (solicitud POST)
- Procesamiento de solicitudes: @RequestAttribute obtiene los atributos en el campo de solicitud
- MatrixVariable与UrlPathHelper
- Sin relación
Procesamiento de solicitudes: uso de anotaciones de parámetros comunes
anotación:
@PathVariable
variable de ruta@RequestHeader
obtener encabezados de solicitud@RequestParam
Obtener parámetros de solicitud (en referencia a los parámetros después del signo de interrogación, url?a=1&b=2)@CookieValue
Obtener el valor de la cookie@RequestAttribute
Obtener atributos de dominio de solicitud@RequestBody
Obtener el cuerpo de la solicitud [POST]@MatrixVariable
variable de matriz@ModelAttribute
Esto es lo que nos pasó
PathVariable
Obtener anotación de variable de ruta
Eche un vistazo a la anotación PathVariable
Si el valor de un parámetro es el mapa, entonces pondrá el valor kv en la ruta al mapa.
@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
y conseguirlo
obtener encabezados de solicitud@RequestHeader
Entendido
@RequestParam
Obtener 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
@CookieValue
Obtener 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.
Algunos navegadores no tienen cookies. No se preocupe por eso aquí.
@RequestBody Obtener los datos del cuerpo de la solicitud (solicitud POST)
Entendido
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.
MatrixVariable与UrlPathHelper
-
Sintaxis: Solicitud de ruta:
/cars/sell;low=34;brand=byd,audi,yd
este tipo de banda; es la variable de matriz -
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.
-
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
@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
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.