El resumen más detallado de Spring y SpringMVC

1. ¿Por qué utilizar Spring?

(1) Facilitar el desacoplamiento y simplificar el desarrollo

通过Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。

(2) Soporte de programación AOP

通过Spring提供的AOP功能,方便进行面向切面的编程,如性能监测、事务管理、日志记录等。

(3) Soporte para transacciones declarativas.

(4) Facilitar la integración de varios marcos excelentes.

(5) Reducir la dificultad de utilizar la API de Java EE

如对JDBC,JavaMail,远程调用等提供了简便封装。

2. ¿Qué es IoC y por qué utilizar IoC?

descripción:

IoC significa Iversion of Controller, inversión de control. El concepto es que no necesita crear un objeto, solo necesita describir cómo se crea. No ensambla sus componentes y servicios directamente en el código, pero necesita describir qué componentes necesitan qué servicios en el archivo de configuración, y luego un contenedor (contenedor IOC) es responsable de ensamblarlos.

la razón:

Puede orientarnos sobre cómo diseñar programas mejores y que no estén estrechamente acoplados.

3. ¿Qué es AOP y por qué utilizar AOP?

descripción:

Nombre completo de AOP: Programación orientada a aspectos, programación orientada a aspectos. Es extraer las funciones reutilizables y luego tejer estas funciones generales en la aplicación en el momento adecuado, como la gestión de transacciones, el control de permisos, el registro, las estadísticas de rendimiento, etc.

la razón:

AOP no nos ayuda a resolver ningún problema nuevo, solo proporciona una mejor manera de resolver algunos problemas existentes con menos carga de trabajo, lo que hace que el sistema sea más robusto y fácil de mantener.

4. ¿Qué es la gestión de transacciones de Spring?

Una transacción es una operación unificada de confirmación o reversión para una serie de operaciones de base de datos (como insertar varios datos). Si la inserción se realiza correctamente, ambas se realizan correctamente. Si hay una excepción en el medio, todas las operaciones anteriores se revierten. Esto puede evitar que aparezcan datos sucios y evitar problemas con los datos de la base de datos. Para evitar esta situación durante el desarrollo, generalmente se realiza la gestión de transacciones.

La transacción declarativa de Spring generalmente se refiere a la declaración de configuración de la transacción en el archivo de configuración, que incluye muchas propiedades declarativas. Utiliza Spring Proxy para ayudarlo a hacer el proxy. No necesita escribir código adicional usted mismo, simplemente declararlo en el archivo de configuración de Spring. Sí, generalmente se usa en operaciones de bases de datos;

La transacción programática se refiere al procesamiento de transacciones a través de la codificación rígida. Este método de procesamiento requiere escribir código, y la lógica de la transacción puede ser personalizada por usted mismo; puede ser el material de la base de datos u otras operaciones.

Spring también tiene su propio mecanismo de administración de transacciones, que generalmente es administrado por TransactionMananger, que se puede lograr mediante la inyección de Spring.

5. El marco de Spring admite los siguientes cinco ámbitos de bean:

(1) singleton: valor predeterminado, bean tiene solo una instancia en cada contenedor Spring ioc.

(2) Prototipo: una definición de bean puede tener múltiples instancias.

(3) solicitud: se crea un bean para cada solicitud http, y el alcance solo es válido en el contexto de un Spring ApplicationContext basado en web.

(4) Sesión: en una sesión HTTP, una definición de bean corresponde a una instancia. Este alcance solo es válido en el caso de Spring ApplicationContext basado en web.

(5) Sesión global: en una sesión HTTP global, una definición de bean corresponde a una instancia. Este alcance solo es válido en el caso de Spring ApplicationContext basado en web.

6. ¿Qué es el marco MVC de Spring?

Spring está equipado con un marco MVC con todas las funciones para crear aplicaciones web. Spring se puede integrar fácilmente con otros marcos MVC, como Struts. El marco MVC de Spring utiliza la inversión de control para aislar claramente los objetos comerciales de la lógica de control. También permite vincular parámetros de solicitud a objetos comerciales de manera declarativa.

spring mvc es un framework web basado en mvc. Spring mvc es un módulo del marco de resortes, spring mvc y spring no necesitan integrarse a través de una capa de integración intermedia.

7. Cómo habilitar las anotaciones:

 <context:annotation-config/>

Si usa context: component-scanbase-package = "com.tgb.web.controller.annotation"
</ context: component-scan>, el contenido anterior se puede omitir

8. El proceso de solicitud de Spring MVC:

El primer paso: iniciar una solicitud al controlador frontal (DispatcherServlet);

Paso 2: el controlador frontal solicita a HandlerMapping que encuentre el controlador que se puede buscar de acuerdo con la configuración xml y las anotaciones;

El tercer paso: el mapeador del procesador HandlerMapping devuelve Handler al controlador frontal;

Paso 4: el controlador frontal llama al adaptador del procesador para ejecutar el controlador;

Paso 5: el adaptador de procesador ejecuta el controlador;

Paso 6: la ejecución del controlador se completa y devuelve ModelAndView al adaptador;

Paso 7: el adaptador del procesador devuelve ModelAndView al controlador frontal. ModelAndView es un objeto de bajo nivel del marco springmvc, que incluye Model y view;

Paso 8: El controlador frontal solicita al solucionador de vistas que realice la resolución de la vista y la resuelve en una vista real (jsp) de acuerdo con el nombre de la vista lógica;

Paso 9: El solucionador de vistas devuelve View al controlador frontal;

Paso 10: El controlador frontal realiza la representación de la vista. La representación de la vista llena los datos del modelo (en el objeto ModelAndView) en el campo de solicitud;

Paso 11: El controlador frontal responde al usuario con el resultado.

9, configuración web.xml

Inserte la descripción de la imagen aquí

10. Adaptador y mapeador de procesador anotado

Utilice org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping mapeador de anotaciones después de spring3.1.

Utilice el adaptador de anotaciones org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter después de spring3.1.

Utilice mvc: controlado por anotaciones en lugar de la configuración anterior del asignador de anotaciones y del adaptador de anotaciones.

11. Proceso de integración de Spring y mybatis

Paso 1: integra la capa dao

        mybatis和spring整合,通过spring管理mapper接口。

       使用mapper的扫描器自动扫描mapper接口在spring中进行注册。

Paso 2: integrar la capa de servicio

       通过spring管理 service接口。

       使用配置方式将service接口配置在spring配置文件中。

       实现事务控制。

Paso 3: integrar springmvc

       由于springmvc是spring的模块,不需要整合。

Las principales configuraciones son:

(1) El archivo de configuración de Mybatis sqlMapConfig.xml configura el escaneo automático de alias (clase de entidad)

(2) Escáner Mapper (interfaz, interfaz de acceso a la base de datos)

(3) Configuración del grupo de conexiones de la base de datos

(4) Configuración de transacción declarativa

(5) Habilitar el análisis de anotaciones: <context: component-scan base-package = "cn.itcast.ssm.controller"> </ context: component-scan>

(6) Configure el asignador de anotaciones y el adaptador: <mvc: controlado por anotaciones> </ mvc: controlado por anotaciones>

(7) Ver resolución: <bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver">

(8) Clase de control de configuración: controlador frontal DispatcherServlet

(9) Configure la clase de carga del archivo de configuración de primavera: ClassLoadListener

12. Controlador de interfaz

El controlador frontal carga el asignador, el adaptador, el analizador de vistas y otros componentes del archivo anterior. Si no está configurado en springmvc.xml, usa DispatcherSerlvet.properties cargado por defecto.

13. Vea el prefijo y el sufijo de la configuración del resolutor:

Inserte la descripción de la imagen aquí

14. sqlMapConfig.xml, archivo de configuración propio de mybatis.

Inserte la descripción de la imagen aquí

15. Configure la fuente de datos:

Inserte la descripción de la imagen aquí

16. Control de transacciones

Control de transacciones (applicationContext-transaction.xml), utilizando el método de control de transacciones declarativo de primavera en applicationContext-transaction.xml.
Inserte la descripción de la imagen aquí

17, configuración de resorte de carga

Inserte la descripción de la imagen aquí

18. El acceso a los recursos estáticos no está bloqueado:

<resources mapping="/resources/**" location="/resources/" />

<resources mapping="/images/**" location="/images/" />

<resources mapping="/js/**" location="/js/" />

19. El papel de @RequestMapping

(1) mapeo de URL

(2) Asignación de solicitudes de restricción

(3) Limitar método de solicitud http

20, el valor de retorno del método del controlador

1. Regrese a ModelAndView

Cuando se necesite el método, defina ModelAndView y configure el modelo y la vista por separado.

2. Cadena de retorno

Si el método del controlador devuelve una cadena:

(1) Representa el retorno del nombre de la vista lógica. Vista real (ruta jsp) = prefijo + nombre de vista lógica + sufijo

(2) Redirigir: el formato de cadena devuelto es: "redireccionar: queryItem.action"

(3) Reenvío de página hacia adelante: el formato de cadena devuelto es: "forward: queryItem.action"

3. Devolución vacía

Puede definir la solicitud y la respuesta en los parámetros formales del método del controlador y utilizar la solicitud o la respuesta para especificar el resultado de la respuesta:

(1) Use request para pasar a la página, de la siguiente manera: request.getRequestDispatcher ("ruta de la página"). Forward (request, response);

(2) También puede redireccionar a través de la página de respuesta: response.sendRedirect ("url");

(3) También puede especificar el resultado de la respuesta a través de la respuesta, por ejemplo, los datos json de respuesta son los siguientes:

response.setCharacterEncoding ("utf-8") ;

response.setContentType ("aplicación / json; juego de caracteres = utf-8") ;

response.getWriter (). write (“json 串”)。

21. Vinculación de parámetros:

1. Tipos admitidos de forma predeterminada

Puede utilizar estos objetos definiendo directamente objetos de los siguientes tipos en los parámetros formales del método del controlador. En el proceso de enlace de parámetros, si encuentra los siguientes tipos, enlace directamente.

(1) HttpServletRequest: Obtiene información de solicitud a través del objeto de solicitud;

(2) HttpServletResponse: procesa la información de respuesta a través de la respuesta;

(3) HttpSession: Obtiene los objetos almacenados en la sesión a través del objeto de sesión;

(4) Model / ModelMap: model es una interfaz, modelMap es una implementación de interfaz. Rol: Complete los datos del modelo en el campo de solicitud.

2. Tipo simple

Utilice @RequestParam para vincular parámetros de tipo simple.

Si no se usa @RequestParam, se requiere que el nombre del parámetro pasado en la solicitud sea consistente con el nombre del parámetro formal del método del controlador para poder enlazar exitosamente.

Si usa @RequestParam, no necesita restringir el nombre del parámetro pasado en la solicitud para que sea consistente con el nombre del parámetro del método del controlador.

Especifique si los parámetros deben pasarse a través del atributo requerido. Si se establece en verdadero, si no se pasan parámetros, se informará un error.

3.encuadernación pojo

El nombre ingresado en la página es el mismo que el nombre del atributo en el parámetro pojo del controlador, que une los datos de la página al pojo. (usename, age; user.username, user.age no es obligatorio).

4. Enlace de parámetros personalizados para lograr el tipo de enlace de fecha

Para el objeto pojo en el parámetro del controlador, si hay un tipo de fecha en el atributo, debe personalizar el enlace del parámetro. Convierta la cadena de datos de fecha solicitada en un tipo de fecha, y el tipo de fecha a convertir es consistente con el tipo del atributo de fecha en el pojo.

22, comparación de Spring MVC y Struts2

(1) Struts2 es una interceptación a nivel de clase, una clase corresponde a un contexto de solicitud, SpringMVC es una intercepción a nivel de método, un método corresponde a un contexto de solicitud y un método corresponde a una URL al mismo tiempo, por lo que SpringMVC es fácil de implementar desde la propia arquitectura URL relajante.

(2) Debido a las razones anteriores, los métodos de SpringMVC son básicamente independientes y los datos de respuesta de solicitud se comparten exclusivamente. Los datos de solicitud se obtienen a través de parámetros y los resultados del procesamiento se devuelven al marco a través de ModelMap. Las variables no se comparten entre métodos, mientras que Struts2 lo hace. Es desordenado. Aunque los métodos son independientes, todas las variables de Acción son compartidas. Esto no afectará el funcionamiento del programa, pero nos causará problemas al codificar y leer el programa. Cada vez que llega una solicitud, se crea una Acción, un objeto Acción. Corresponde a un contexto de solicitud.

(3) Dado que Struts2 necesita encapsular cada solicitud, encapsular las variables del ciclo de vida del servlet, como la solicitud y la sesión, en un mapa para que lo use cada acción para garantizar la seguridad de los subprocesos, por lo que, en principio, consume más memoria.

(4) SpringMVC integra Ajax, que es muy conveniente de usar. Se puede realizar solo con una anotación @ResponseBody, y luego el texto de respuesta se puede devolver directamente. Sin embargo, el interceptor Struts2 integra Ajax. Generalmente, debe instalar un complemento o escribir el suyo propio cuando procese en Acción El código está integrado y es relativamente incómodo de usar.

(5) Springmvc es un desarrollo orientado a métodos (más cercano al método de desarrollo de interfaz de servicio), struts2 es un desarrollo orientado a clases.

(6) Springmvc se puede desarrollar en un solo caso, mientras que struts2 solo se puede desarrollar en varios casos.

23, procesamiento confuso

(1) Mensaje ilegible

Agregue un filtro de publicación ilegible en web.xml: CharacterEncodingFilter

(2) Hay dos soluciones para los caracteres confusos en el parámetro chino de la solicitud de obtención:

  1. Modifique el archivo de configuración de tomcat y agregue el código para que sea coherente con el código del proyecto, de la siguiente manera:

     <Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
    
  2. Recodificar los parámetros:

     String userName = new  String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")
    
     ISO8859-1是tomcat默认编码,需要将tomcat编码后的内容按utf-8编码
    

24, enlace de tipo de colección

(1) Enlace de matriz:

        controller方法参数使用:(Integer[] itemId)

        页面统一使用:itemId 作为name

(2) Enlace de lista:

         pojo属性名为:itemsList

         页面:itemsList[index].属性名

(3) Enlace de mapa:

         pojo属性名为:Map<String, Object> itemInfo = new HashMap<String, Object>(); 

         页面: 姓名:"text"name="itemInfo['name']"/>

25, verificación de primavera

(1) En proyectos, generalmente se usa la verificación de front-end, como la verificación js en la página. Para requisitos de seguridad más altos, se recomienda realizar una verificación en el servidor.

(2) Springmvc usa el marco de verificación de hibernate para la validación (no tiene nada que ver con hibernate).

Idea de validación: la página envía los parámetros de la solicitud, la solicitud se envía al método del controlador y la validación se utiliza para la verificación. Si hay un error de verificación, el mensaje de error se mostrará en la página.

26, eco de datos

(1) @ModelAttribute también puede pasar el valor de retorno del método a la página: anote @ModelAttribute en el método;

(2) Use la forma más fácil de usar model, sin @ModelAttribute: model.addAttribute ("id", id);

(3) springmvc hace eco de los datos de pojo por defecto. Una vez que los datos de pojo se pasan al método del controlador, springmvc coloca automáticamente los datos de pojo en el campo de solicitud y la clave es igual al tipo de pojo (la primera letra está en minúsculas);

(4) public String testParam (PrintWriter out, @RequestParam (“username”) String username) {// out 直接 输出。

27, manejo de excepciones

springmvc proporciona un controlador de excepciones global (un sistema tiene solo un controlador de excepciones) para el manejo unificado de excepciones.

Cuando el sistema encuentra una excepción, se lanza manualmente en el programa, dao lanza al servicio, el servicio al controlador y el controlador al controlador frontal, y el controlador frontal llama al controlador de excepciones global.
Inserte la descripción de la imagen aquí

28, sube fotos

(1) Al enviar datos enctype = "multipart / form-data" en el formulario de la página, se requiere springmvc para analizar los datos de tipo multiparte.

(2) Configure el analizador de tipo multiparte en springmvc.xml.
Inserte la descripción de la imagen aquí
(3) Método utilizado: adjuntos de MultipartFile (carga de un solo archivo) o archivos adjuntos de MultipartFile [] (carga de varios archivos)

29, procesamiento Json

(1) Cargue el paquete jar para la conversión json: springmvc usa el paquete de Jackson para la conversión json (@requestBody y @responseBody usan el siguiente paquete para la conversión json).

(2) Configure el convertidor json. Agregue messageConverters al adaptador de anotaciones RequestMappingHandlerAdapter.

Si usa <mvc: annotation-drive />, se agregará automáticamente.

(3) Ajax.
Inserte la descripción de la imagen aquí
(4) Controlador (ResponseBody, RequestBody)
Inserte la descripción de la imagen aquí
(5) Tenga en cuenta que si contentType en ajax no se establece en el tipo json, el parámetro pasado es el tipo clave / valor. Después de la configuración anterior, se pasa el tipo json.

30. Interceptor:

(1) Defina el interceptor e implemente la interfaz HandlerInterceptor. Se proporcionan tres métodos en la interfaz.

  1. preHandle: se ejecuta antes de ingresar al método Handler, se utiliza para la autenticación de identidad y la autorización de identidad, como la autenticación de identidad. Si se pasa la autenticación, significa que el usuario actual no ha iniciado sesión y este método debe interceptarse y dejar de ejecutarse.
  2. postHandle: después de ingresar al método Handler, se ejecuta antes de regresar a modelAndView. El escenario de la aplicación comienza desde modelAndView: transfiera datos comunes del modelo (como la navegación del menú) a la vista aquí, o puede especificar la vista aquí.
  3. afterCompletion: Execute Handler para completar la ejecución de este método, escenarios de aplicación: manejo unificado de excepciones, manejo unificado de registros.

(2) Configuración del interceptor:

  1. Configuración para HandlerMapping (no recomendado): El interceptor Springmvc establece la intercepción para HandlerMapping. Si la interceptación está configurada en un HandlerMapping, el controlador que se mapea correctamente a través del HandlerMapping eventualmente usará el interceptor. (Generalmente no recomendado)
  2. Similar al interceptor global: la configuración de springmvc es similar al interceptor global, y el marco springmvc inyecta el interceptor global configurado en cada HandlerMapping
    Inserte la descripción de la imagen aquí

El conocimiento de Java es mucho más que eso. Esto es solo un poco de clasificación. Debido a problemas de espacio, no es fácil ubicar todo el contenido, pero he clasificado una gran cantidad de materiales de aprendizaje de Java y también tengo la última entrevista de Java de este año. información, es necesario hacer clic para ingresar, señal: cszq , también puede estar preocupado por + letra privada I!

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/m0_45270667/article/details/108695640
Recomendado
Clasificación