Explique en detalle el principio de funcionamiento y el análisis del código fuente de Spring mvc.

Capa de modelo (componente javaBean = modelo de dominio (javaBean) + capa empresarial + capa de persistencia)

Capa de vista vista (html, jsp...)

Capa de control del controlador (confiada al capa de modelo) Procesamiento de datos)

Springmvc es un marco mvc de capa web, similar a struts2.

Springmvc es parte de la primavera. De hecho, Spring proporciona el módulo mvc para aplicaciones web de forma original.

Mecanismo de implementación:

Struts2 se implementa en base a filtros.

Springmvc se implementa en base a servlet.

Velocidad de ejecución:

Debido a que la capa inferior del filtro es servlet, la velocidad de ejecución de springmvc será ligeramente más rápida que la de structs2.

Struts2 es multiinstancia.

Springmvc singleton

Encapsulación de parámetros:

La encapsulación de parámetros de Struts2 se basa en propiedades.

Springmvc se basa en la encapsulación de métodos. La granularidad es más fina.

(1) El usuario envía una solicitud a DispatcherServlet.

⑵ DispatcherServlet recibe una solicitud para llamar a HandlerMapping y consulta el controlador específico.

(3) Handler Mapping encuentra un procesador específico (qué clase de implementación de procesador está configurada específicamente) y genera un objeto de procesador y un interceptor de procesador (HandlerExcutorChain contiene un conjunto de controladores e interceptores de servidor) y lo devuelve a DispatcherServlet.

(Después de que el servlet despachador recibe el HandlerExcutorChain devuelto por HandlerMapping, llama al HandlerAdapter para solicitar la ejecución de un controlador específico (controlador).

⑸El adaptador del controlador es adecuado para llamar a un controlador específico (el controlador es el controlador backend).

[6] El controlador devuelve ModelAndView (incluida la vista lógica y los datos) al HandlerAdaptor

Una vez que el adaptador del controlador devuelve el. ModelAndView.DispatcherServlet.

El servlet programado solicita al analizador de vistas ViewReslover que analice ModelAndView.

⑼Después de analizar la vista, la vista específica (vista física) se devuelve al DispatcherServlet.

⑽ DispatcherServlet solicita renderizar la vista (es decir, completar los datos del modelo en la vista) y renderizar la vista de acuerdo con la vista

⑾Devuelve la vista renderizada a DispatcherServlet

p>

⑿ DispatcherServlet devuelve el resultado de la respuesta al usuario.

(1) Servlet despachador del controlador front-end (solo configuración)

Función: Procesador central, recibe el. solicitud y la envía a otros componentes para su procesamiento sin realizar ningún procesamiento. Es el centro de control de todo el proceso.

(2) Mapeador de procesador (solo configuración)

Función: Buscar. el controlador de acuerdo con la ruta de solicitud de URL enviada por DispatcherServlet.

Asignadores de procesador comunes: beannameurlhandlermapping, simplehandlermapping,

ControllerClassnameHandlerMapping, DefaultAnnotationHandlerMapping (no recomendado)

(3) Adaptador de procesador (solo se requiere configuración)

Función: ejecutar el controlador de acuerdo con reglas específicas (reglas requeridas por HandlerAdapter).

El procesador es ejecutado por HandlerAdapter. El adaptador del controlador es una aplicación del modo adaptador y ejecuta más tipos de procesadores extendiendo múltiples adaptadores.

Adaptadores de procesador comunes: HttpRequestHandlerAdapter, SimpleControllerHandlerAdapter, AnnotationMethodHandlerAdapter.

(4) El procesador Handler es el controlador (programado).

Función: al escribir un controlador, siga los requisitos de HandlerAdapter para que el adaptador pueda ejecutar el controlador correctamente.

(5) Resolución de vistas ViewReslover (simplemente configúrelo)

Función: analiza la vista y la analiza en una vista real de acuerdo con el nombre de la vista lógica.

ViewResolver es responsable de generar vistas basadas en los resultados del procesamiento. ViewResolver primero analiza el nombre de la vista lógica en un nombre de vista física, es decir, una dirección de página específica, luego genera un objeto de vista y finalmente representa la vista y muestra los resultados del procesamiento al usuario a través de la página.

El marco Springmvc proporciona varios tipos de vistas, como jstlView, freemarkerView, pdfView, etc. ...

(6) Visualización (escrito por el programador)

Ver es una interfaz y la clase de implementación admite diferentes tipos de vistas (jsp, freemarker, pdf...).

Presentación de dependencias relacionadas: paquete básico de Spring, spring-webmvc requerido por springmvc, slf4j-log4j12 relacionado con registros, jstl relacionado con jsp, servlet-api, jsp-API.

Debido a que DispatcherServlet en sí es un servlet, debe configurarse en web.xml.

1. Para utilizar el método predeterminado para cargar archivos de configuración springmvc, debe seguir las siguientes especificaciones:

① Reglas de nomenclatura: -servlet XML = = = > spring MVC-servlet. XML

②Reglas de ruta: -servlet.xml debe colocarse en WEB-INF.

2. Si la ubicación de carga no cumple con el valor predeterminado, debe especificar la ruta de carga del archivo de configuración springmvc a través de la etiqueta en web.xml, como se muestra en la figura anterior.

La configuración del procesador del controlador personalizado en el contenedor Spring es administrada por el contenedor Spring, porque el asignador del procesador en el archivo de configuración springmvc.xml se configura usando BeanNameUrlHandlerMapping. Según el nombre, el asignador del controlador busca el controlador (controlador) según la URL del valor del atributo de nombre del bean (controlador personalizado), por lo que el valor del atributo de nombre del bean es la URL que coincide con la ruta de solicitud enviada por el usuario.

Según la ruta de resolución de la vista: web-INF/JSP/index.

Función: busque el controlador de clase de ejecución según la URL del atributo de nombre del bean (controlador personalizado).

Función: Cuando un procesador personalizado (controlador) implementa la interfaz del controlador, el adaptador ejecutará el método específico del controlador.

SimpleControllerHandlerAdapter determinará automáticamente si el procesador (controlador) definido por el usuario implementa la interfaz del controlador. Si es así, llamará automáticamente al método handleRequest del procesador.

Existe un método en la interfaz del controlador llamado handleRequest, que también es un método del procesador.

Por lo tanto, si se quiere llamar a un controlador personalizado, debe implementar la interfaz del controlador y anular el método del controlador en la interfaz del controlador.