Java está ansioso por explicar cómo funciona SpringMVC y su proceso.
1. El usuario envía una solicitud al servidor y la solicitud es capturada por el control front-end de Spring Servelt DispatcherServlet;
2.? DispatcherServlet analiza la URL de solicitud para obtener el identificador de recurso de solicitud (URI). Luego llame a HandlerMapping de acuerdo con el URI para obtener todos los objetos relacionados configurados por el controlador (incluido el objeto controlador y el interceptor correspondiente al objeto controlador) y finalmente devuélvalo en forma de un objeto HandlerExecutionChain;
3.? DispatcherServlet selecciona el adaptador de controlador apropiado según el HandlerAdapter obtenido. (Nota: si el HandlerAdapter se obtiene con éxito, el método previo al controlador (...) del interceptor se ejecutará en este momento).
? 4.? Extraiga los datos del modelo en la solicitud, complete los parámetros del Handler y comience a ejecutar el Handler (controlador). En el proceso de completar los parámetros del controlador, Spring hará un trabajo adicional por usted de acuerdo con su configuración:
HttpMessageConvet: convierte el mensaje de solicitud (como Json, xml y otros datos) en un objeto, y El objeto se convierte en la información de respuesta especificada.
Conversión de datos: realiza la conversión de datos en el mensaje de solicitud. Por ejemplo, cadena en números enteros, doble precisión, etc.
Raíz de datos: el formato de datos del mensaje de solicitud. Por ejemplo, convierta una cadena en un número formateado o una fecha formateada.
Verificación de datos: verifica la validez (longitud, formato, etc.) de los datos y los resultados de la verificación se almacenan en BindingResult o Error.
5.? Una vez ejecutado el controlador, ¿se envía a DispatcherServlet? Devuelve el objeto ModelAndView;
6.? Según el ModelAndView devuelto, seleccione el ViewResolver apropiado (debe estar registrado en el contenedor Spring) y devuélvalo al DispatcherServlet. ;
7.? ViewResolver combina modelos y vistas para representar vistas.
? 8. Devolver los resultados de la renderización al cliente.
Descripción del flujo de trabajo de Spring
¿Por qué Spring solo permite que Servlet (DispatcherServlet) maneje todas las solicitudes?
? Para obtener más información, consulte Patrón de diseño J2EE-Patrón de control frontal.
¿Por qué Spring usa HandlerMapping y HandlerAdapter para manejar identificadores?
Conforme al principio de responsabilidad única en orientación a objetos, la estructura del código es clara, fácil de mantener y, lo más importante, el código es altamente reutilizable. Por ejemplo, HandlerAdapter se puede utilizar para manejar varios controladores.