Notas de estudio de SpringMVC (1) configuración detallada de la secuela

Consejo: introduzca principalmente la configuración y el uso de algunos componentes comunes de springmvc


Prefacio

Springmvc se desarrolla en base a componentes, por lo que los componentes requeridos deben configurarse antes del desarrollo formal.


Tengo un plato, si comete un error, rocíelo ligeramente.

1. Análisis del proceso de ejecución del caso introductorio

1. Cuando el tiempo de inicio del servidor Tomcat debido web.xmla la configuración dispatcherServletse configura de <load-on-startup>1</load-on-startup>modo que cuando se inicia, DispatcherServletse crea el objeto de etiqueta y se carga la <init-param>pestaña de configuración springmvc.xml.

2. Debido a que el springmvc.xmlescaneo de anotaciones está habilitado y la etiqueta @Controller se agrega a HelloController, se creará el objeto HelloController.

3. La solicitud enviada desde la página index.jsp llegará primero El controlador central dispatcherServlet (controlador frontal) encontrará el método que se ejecutará de acuerdo con la anotación @RequestMapping configurada.

4. Después de ejecutar el método, el valor de retorno encontrará la página jsp devuelta de acuerdo con el analizador de vista configurado.

5. El servidor Tomcat procesa la página y responde

2. Análisis de componentes en el caso de entrada

1. Controlador frontal (DispatcherServlet) 2. Mapeo de controlador (HandlerMapping) 3. Procesador ( controlador ) 4. Adaptador de procesador (HandlAdapter) 5. Ver Resolver 6. Ver




Inserte la descripción de la imagen aquí
En pocas palabras, el controlador frontal es como un comandante en el campo de batalla. Tiene un grupo de soldados con diferentes funciones. Cuando lucha, solo necesita dar instrucciones a diferentes soldados de acuerdo con sus necesidades. Los soldados bajo sus manos completan el El resultado también se devolverá al comandante después de la misión.

Tres análisis de anotaciones de uso común

@RequestMapping

Rol: se utiliza para establecer la correspondencia entre la URL y el método de procesamiento (API)

Instrucciones:

  1. Función y clase: el directorio de acceso de primer nivel
  2. Actuando sobre el método: el segundo nivel de acceso al directorio

Propiedades de RequestMapping:

  1. ruta especifica la URL de la ruta de solicitud
  2. El atributo de valor es el mismo que el atributo de ruta.
  3. mthod especifica el método de solicitud del método
  4. params especifica las condiciones que limitan los parámetros de la solicitud
  5. encabezados Los encabezados de la solicitud que deben incluirse en la solicitud enviada

Código de muestra:
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
la ruta de la solicitud aquí es: http: // localhost: 8080 / user / hello

@RequestParam

Función: pasar el parámetro con el nombre especificado en la solicitud a la parametrización formal en el controlador

Atributos:

  1. valor: el nombre en el parámetro de solicitud
  2. obligatorio: si este parámetro debe proporcionarse en los parámetros de solicitud, el valor predeterminado es verdadero, debe proporcionarse

Código de muestra:

extremo posterior:

@RequestMapping("/testRequestParam")
    public String testRequestParam(@RequestParam(name = "name") String username){
    
    
        System.out.println("testRequestParam执行了。。。");
        System.out.println(username);
        return "success";
    }

Interfaz:

    <a href="anno/testRequestParam?name=哈哈">RequestParam</a>

@RequestCuerpo

Función: se utiliza para obtener el contenido del cuerpo de la solicitud (nota: el método get no está permitido)

Atributos

  1. obligatorio: si debe haber un cuerpo de solicitud, el valor predeterminado es verdadero

Código de muestra:

extremo posterior:

@RequestMapping("/testRequestBody")
    public String testRequestBody(@RequestBody String body){
    
    
        System.out.println("testRequestBody执行了。。。");
        System.out.println(body);
        return "success";
    }

Interfaz:

        <a href="anno/testPathVariable/10">testPathVariable</a>

AthPathVariable

Rol: tenga un marcador de posición en la URL de enlace. Por ejemplo: / delete / {id} en la URL, {id} es un marcador de posición

Atributos

  1. valor: especifique el nombre del marcador de posición
    en la URL URL de estilo Restful

  2. La ruta de solicitud es la misma y se pueden ejecutar diferentes métodos en segundo plano de acuerdo con diferentes métodos de solicitud

  3. Las ventajas de la URL de estilo relajante

    1. Estructura clara
    2. Cumple con los estándares
    3. Fácil de entender
    4. Fácil de expandir

Código de muestra:

extremo posterior:

@RequestMapping("/testPathVariable/{sid}")
    public String testPathVariable(@PathVariable(name = "sid") String id){
    
    
        System.out.println("testPathVariable执行了。。。");
        System.out.println(id);
        return "success";
    }

Interfaz:

    <form action="anno/testRequestBody" method="post">
        用户姓名:<input type="text" name="username" /><br/>
        用户年龄:<input type="text" name="age" /><br/>
        <input type="submit" value="提交" />
    </form>

@RequestHeader

Rol: obtiene el valor del encabezado de solicitud especificado

Atributos

  1. valor: el nombre del encabezado de la solicitud

Código de muestra:

extremo posterior:

@RequestMapping("/testRequestHeader")
    public String testRequestHeader(@RequestHeader(value = "Accept") String header){
    
    
        System.out.println("testRequestHeader执行了。。。");
        System.out.println(header);
        return "success";
    }

Interfaz:

        <a href="anno/testRequestHeader">testRequestHeader</a>

@CookieValue

Rol: utilizado para obtener el valor del nombre de la cookie especificada

Atributos

  1. valor: el nombre de la cookie

Código de muestra:

extremo posterior:

@RequestMapping("/testCookieValue")
    public String testCookieValue(@CookieValue(value = "JSESSIONID") String cookieValue){
    
    
        System.out.println("testCookieValue执行了。。。");
        System.out.println(cookieValue);
        return "success";
    }

Interfaz:

	<a href="anno/testCookieValue">testCookieValue</a>

@ModelAttribute

efecto

  1. Aparecer en el método: indica que el método actual se ejecutará antes de que se ejecute el método del controlador.
  2. Aparecer en el parámetro: obtenga los datos especificados para asignar el parámetro.

Escenarios de aplicación

  1. Cuando los datos del formulario enviado no sean datos completos de la entidad, asegúrese de que los campos no enviados utilicen los datos originales de la base de datos.

Código de muestra:

extremo posterior:

@RequestMapping("/testModelAttribute")
    public String testModelAttribute(@ModelAttribute("abc") User user){
    
    
        System.out.println("testModelAttribute执行了。。。");
        System.out.println(user);
        return "success";
    }

    @ModelAttribute
    public void showUser(String username, Map<String,User> map){
    
    
        User user = new User();
        user.setUsername(username);
        user.setAge(20);
        user.setDate(new Date());
        map.put("abc",user);
    }

Cabe señalar aquí que solo los datos inútiles en el formulario actual se asignarán con los datos especificados por la anotación @ModelAttribute.

Interfaz:

	<form action="anno/testModelAttribute" method="post">
        用户姓名:<input type="text" name="username" /><br/>
        用户年龄:<input type="text" name="age" /><br/>
        <input type="submit" value="提交" />
    </form>

@SessionAttributes

Rol: utilizado para ejecutar el uso compartido de parámetros entre métodos de controlador varias veces

Atributos

  1. valor: especifique el nombre del atributo almacenado

Código de muestra:

extremo posterior:

@RequestMapping("/testSessionAttributes")
    public String testSessionAttributes(Model model){
    
    
        System.out.println("testSessionAttributes。。。");
        model.addAttribute("msg","张三");
        return "success";
    }

    @RequestMapping("/getSessionAttributes")
    public String getSessionAttributes(ModelMap modelMap){
    
    
        System.out.println("getSessionAttributes。。。");
        String msg = (String) modelMap.get("msg");
        System.out.println(msg);
        return "success";
    }

    @RequestMapping("/delSessionAttributes")
    public String delSessionAttributes(SessionStatus status){
    
    
        System.out.println("getSessionAttributes。。。");
        status.setComplete();
        return "success";
    }

Inserte la descripción de la imagen aquí

Interfaz:

	<a href="anno/testSessionAttributes">testSessionAttributes</a>
    <a href="anno/getSessionAttributes">getSessionAttributes</a>
    <a href="anno/delSessionAttributes">delSessionAttributes</a>

para resumir

Básicamente, es suficiente dominar las primeras 4 anotaciones, y las últimas anotaciones rara vez se utilizan.Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/u013456390/article/details/113430369
Recomendado
Clasificación