Principio de ejecución SpringMVC, claro y fácil de entender

Reimpreso: Enlace original: https://blog.csdn.net/qq_43297152/article/details/106100687

¿Cuál es el proceso específico que ejecuta SpringMVC? Si vas al documento oficial, el inglés que contiene realmente te adormece el cuero cabelludo. Cuando haces clic en traducir, cuando la palabra primavera se traduce en primavera, encontrarás que lo grande no es bueno. Este artículo lo explicará en los términos más sencillos. Eche un vistazo al proceso SpringMVC.

 

Tabla de contenido

 

entendimiento básico

El marco SpringMVC se basa en el método de componente para ejecutar el proceso.Hay muchos componentes diferentes en SpringMVC, todos con sus propias funciones únicas. Al igual que hacer zapatos en la línea de montaje de una fábrica, algunas partes están hechas de suelas y otras están hechas de cordones, cada una de las cuales realiza sus propias funciones.

Cinco componentes

¿Cuáles son los componentes de SpringMVC:
1, DispatcherServlet: controlador frontal
2, HandlerMapping: mapeador de procesador
3, HandlAdapter: adaptador de procesador
4, Handler: procesador
5, Ver Resolver: ver resolver

Con tantos dispositivos, es realmente un dolor de cabeza mirar. Que no cunda el pánico, te lo explicaré lentamente a continuación.

El papel de cada componente

1, DispatcherServlet

Función: Es
el centro de mando, ya que acepta la solicitud del cliente, lo que equivale a un repetidor,
que llama a otros componentes para procesar la solicitud del usuario.

Vernáculo: Al igual que un jefe, dejará que este departamento le fabrique un avión y dejará que ese departamento produzca un automóvil.

2, controlador

Función:
Es el controlador comercial específico que se escribirá en nuestro desarrollo para procesar las solicitudes específicas de los usuarios.

Ejemplo: El procesador Handler es en realidad el método que escribimos en la capa del controlador Por ejemplo, la siguiente imagen es un procesador Handler.Inserte la descripción de la imagen aquí

3, HandlerMapping

Función:
Busque el procesador Handler correspondiente según la URL solicitada. Debido a que hay muchos procesadores Handler, cuando la ruta de mapeo del procesador Handler corresponde a la URL solicitada, significa que es el Handler que estamos buscando.

SpringMVC proporciona diferentes mapeadores, que se pueden implementar a través de diferentes métodos de mapeo, como archivos de configuración, interfaces de implementación, anotaciones, etc. El más utilizado son las anotaciones.

Ejemplo:
si la URL de su solicitud es: http: // localhost: 8085 / stu / findAll,
encontrará el Handler correspondiente según / stu / findAll. También encontrará el procesador controlador que se muestra a continuación.
Inserte la descripción de la imagen aquí

4, HandlerAdapter

Rol:
debido a que hay varios controladores, se necesitan adaptadores. HandlerAdapter es responsable de adaptar el enlace de parámetros, el convertidor, la resolución de vista que se debe llamar, etc. cuando se ejecuta Handle.

Vernáculo: Es como un banco de energía compartido, con un cable de datos de Apple y un cable de datos de Android. Cuando cargue un teléfono Apple, definitivamente elegirá el cable Apple, y cuando cargue un teléfono Android, elija el cable Android.

5, ViewResolver

Rol:
View Resolver es responsable de generar vistas View a partir de los resultados del procesamiento. View Resolver resuelve los nombres de vista lógica en nombres de vista física (direcciones de página específicas) para generar objetos de vista View.

Explicación específica:
1. El String, View o ModelAndView devuelto en el controlador (procesador) eventualmente se convertirá en un objeto ModelAndView. ViewResolver (solucionador de vista) recibirá este objeto ModelAndView.

2, ViewResolver (solucionador de vistas) analizará la Vista recibida (nombre de la vista) en un objeto InternalResourceView, InternalResourceView almacenará el Modelo aceptado en el dominio de solicitud correspondiente y luego reenviará la solicitud a la URL de destino en el cliente a través de RequestDispatcher.

(Qué es ModelAndView, es una clase, puede establecer el nombre de la vista y el modelo que desea devolver. El modelo puede encapsular datos).

ModelAndView modelAndView = new ModelAndView();
        //设置视图名称
        modelAndView.setViewName();
        //设置你要封装的数据
        modelAndView.addObject();
  • 1
  • 2
  • 3
  • 4
  • 5

Lo siguiente es que no usé la clase ModelAndView, escribí directamente un modelo y devolví una cadena, pero el controlador (procesador) lo convertirá en un objeto ModelAndView y lo devolverá a otros componentes:
Inserte la descripción de la imagen aquí
Ver resolución Ver configuración de resolución:
Inserte la descripción de la imagen aquí
según El nombre de la vista en el controlador y el sufijo y el nombre del paquete configurados por el solucionador de vistas ViewResolver forman la URL de destino que queremos reenviar: http: // localhost: 8085 / list.jsp.

Miramos la imagen a continuación, porque se está reenviando, la URL no cambiará, pero la página se ha convertido en una página list.jsp
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Proceso general

Primero en la imagen, este es el proceso ejecutado por SpringMVC.
Inserte la descripción de la imagen aquí

1. DispatcherServlet (controlador frontal) acepta la solicitud.

2. DispatcherServlet (controlador frontal) llama a HandlerMapping (asignador de procesador) y encuentra el controlador correspondiente (procesador) de acuerdo con la URL de la solicitud.

3. HandlerMapping (mapeador de procesador) devuelve el Handler (procesador) encontrado a DispatcherServlet (procesador frontal).

4. DispatcherServlet (controlador frontal) llama a HandlAdapter (adaptador de procesador) para permitirle ejecutar Handler (procesador).

5. HandlAdapter (adaptador de procesador) ejecuta Handler (procesador).

6, Handler (procesador) devolverá ModelAndView a HandlAdapter (adaptador de procesador).

7. HandlAdapter (adaptador de procesador) devuelve el ModelAndView obtenido a DispatcherServlet (procesador frontal).

8. DispatcherServlet (controlador frontal) llama a ViewResolver (solucionador de vistas) para permitirle resolver el nombre de la vista lógica en ModelAndView, es decir, resolver el nombre de la vista en ModelAndView.

9. Ver Resolver (ver resolver) devuelve una vista específica a DispatcherServlet (procesador frontal).

10. DispatcherServlet (procesador de front-end) representa la vista, es decir, llena el Modelo (datos del modelo) en ModelAndView en la vista.

11. DispatcherServlet (procesador front-end) responde a los usuarios.


Si hay algún error o irregularidad, indíquelo. Por supuesto, si tiene alguna pregunta o no entiende, puede plantearla en los comentarios a continuación. Si te ayuda, por favor dame un pulgar hacia arriba.

Supongo que te gusta

Origin blog.csdn.net/qq_30764991/article/details/109676789
Recomendado
Clasificación