La diferencia entre springmvc y otros frameworks mvc
La diferencia entre springmvc y otros frameworks mvc
Spring es un framework de código abierto para resolver el desarrollo de aplicaciones empresariales. Las funciones son las siguientes
◆ Propósito. : para resolver el problema del desarrollo de aplicaciones empresariales Complejidad del desarrollo de aplicaciones
◆Función: utilice JavaBeans básicos en lugar de EJB y proporcione más funciones de aplicaciones empresariales
◆Alcance: cualquier aplicación Java
p>
En pocas palabras, Spring es un marco de contenedor liviano de inversión de control (IoC) y orientado a aspectos (AOP).
◆Ligero: Spring es liviano tanto en términos de tamaño como de gastos generales. El marco Spring completo se puede distribuir en un archivo JAR con un tamaño de poco más de 1 MB. Y la sobrecarga de procesamiento requerida por Spring es insignificante. Además, Spring no es intrusivo: normalmente, los objetos en una aplicación Spring no dependen de clases Spring específicas.
◆Inversión de control: Spring promueve un acoplamiento flojo a través de una tecnología llamada inversión de control (IoC). Cuando se aplica IoC, otros objetos de los que depende un objeto se pasan pasivamente, en lugar de que el objeto mismo cree o encuentre objetos dependientes. Puede pensar en IoC como lo opuesto a JNDI: en lugar de que el objeto busque dependencias del contenedor, el contenedor pasa activamente las dependencias al objeto cuando se inicializa sin esperar a que el objeto lo solicite.
◆Orientado a aspectos: Spring proporciona un amplio soporte para la programación orientada a aspectos, lo que permite la cohesión al separar la lógica empresarial de la aplicación del desarrollo de servicios a nivel de sistema (como auditoría y gestión de transacciones). Los objetos de aplicación solo implementan lo que se supone que deben hacer: lógica empresarial completa, nada más. No son responsables (ni siquiera conocen) otras preocupaciones a nivel del sistema, como el registro o el soporte de transacciones.
◆Contenedor: Spring contiene y administra la configuración y el ciclo de vida de los objetos de la aplicación. En este sentido, es un contenedor. Puede configurar cómo se crea cada uno de sus beans, según un prototipo configurable. su bean puede crear una única instancia o generar una nueva instancia cada vez que sea necesario y cómo se relacionan entre sí. Sin embargo, Spring no debe confundirse con los tradicionales contenedores EJB pesados, que suelen ser grandes, engorrosos y difíciles de usar.
◆Framework: Spring puede configurar y combinar componentes simples en aplicaciones complejas. En Spring, los objetos de la aplicación se componen de forma declarativa, normalmente en un archivo XML. Spring también proporciona muchas funciones básicas (gestión de transacciones, integración de marcos de persistencia, etc.), dejándole a usted el desarrollo de la lógica de la aplicación.
Todas estas funciones de Spring le permiten escribir código más limpio, más manejable y más fácil de probar. También brindan soporte básico para varios módulos en Spring.
Los dos núcleos AOP e IOC de Spring se pueden utilizar solos para cualquier aplicación, incluida la integración con marcos MVC como Struts y marcos ORM como Hibernate. Actualmente, muchas empresas utilizan Spring Struts para el llamado desarrollo ligero. (2) Hibernar.
Spring MVC es un marco MVC. Personalmente, creo que el desarrollo del estilo de anotación Spring MVC es más conveniente que Struts2 y puede reemplazar directamente a los Struts anteriores (por supuesto, Struts es un MVC muy maduro). todavía se siente funcionalmente mejor que Spring (un poco más fuerte, pero Spring MVC es suficiente).
Por supuesto, la eficiencia de ejecución de spring mvc es mayor que la de struts, porque la pila de valores de struts afecta la eficiencia.
Spring mvc es similar a un marco abierto de struts MVC. De hecho, todos pertenecen. para Spring. Spring mvc necesita el paquete Spring Framework. Solo como soporte puede ejecutarse.
Si alguien le pregunta qué es la inversión de control (pregunta frecuente en las entrevistas de Spring Core): Simplemente responda, originalmente el programa era. creado por nuestro nuevo, y luego fue entregado al programa para su control. Lo nuevo está disponible. Esto es una inversión de control. Mis manos están entumecidas después de tantos intentos. Por favor, dame puntos por mi arduo trabajo. > Un resumen simple es: Spring es un marco de código abierto. Es para resolver el desarrollo de aplicaciones empresariales. Spring mvc es un marco de desarrollo MVC similar a struts. De hecho, pertenece a Spring mvc y necesita el soporte de Spring. paquete para ejecutar. ¿Cuál es la diferencia entre springmvc y otros frameworks mvc?
Spring es un marco de código abierto, diseñado para resolver el desarrollo de aplicaciones empresariales
Propósito: resolver la complejidad del desarrollo de aplicaciones empresariales
Función: el uso de JavaBean básico reemplaza a EJB y proporciona más funciones de aplicaciones empresariales.
En pocas palabras, Spring es un marco de contenedor ligero de inversión de control (IoC) y orientado a aspectos (AOP).
Ligero: Spring es liviano tanto en términos de tamaño como de gastos generales. El marco Spring completo se puede distribuir en un archivo JAR con un tamaño de poco más de 1 MB. Y la sobrecarga de procesamiento requerida por Spring es insignificante. Además, Spring no es intrusivo: normalmente, los objetos en una aplicación Spring no dependen de clases Spring específicas.
Spring MVC es un marco MVC. Personalmente, creo que el desarrollo de estilo de anotación Spring MVC es más conveniente que Struts2 y puede reemplazar directamente a los Struts anteriores (por supuesto, Struts es un MVC muy maduro). todavía se siente funcionalmente mejor que Spring (un poco más fuerte, pero Spring MVC es suficiente). Por supuesto, la eficiencia de ejecución del resorte mvc es mayor que la de los puntales porque el valor de la pila de puntales afecta la eficiencia.
Spring mvc es similar a un marco abierto de struts MVC. De hecho, todos pertenecen a Spring mvc y necesita el paquete Spring Framework como soporte para ejecutarse. ¿Qué es el marco mvvm? ¿Cuál es la diferencia entre este y otros marcos?
¡En MVC, View puede acceder directamente al modelo! Por lo tanto, la Vista contendrá información del Modelo e inevitablemente algo de lógica empresarial. El modelo MVC se centra en la invariancia del Modelo. Por lo tanto, en el modelo MVC, el Modelo no depende de la Vista, pero la Vista sí depende del Modelo. No solo eso, debido a que parte de la lógica empresarial se implementa en Ver, también es difícil cambiar la Vista, al menos esa lógica empresarial no se puede reutilizar.
Conceptualmente, MVVM es un modelo que realmente separa la lógica de página y de datos. Coloca el trabajo de enlace de datos en un JS para implementarlo, y la función principal de este archivo JS es completar el enlace de datos. vincular el modelo a los elementos de la interfaz de usuario.
Alguien ha hecho una prueba: usando Angular (MVVM) en lugar de Backbone (MVC) para el desarrollo, el código se puede reducir a la mitad.
Además, otra característica importante de MVVM es el enlace bidireccional. Es más conveniente para usted mantener N áreas en la página que dependen de un determinado campo al mismo tiempo, sin tener que actualizarlas manualmente.
La diferencia entre los marcos ty y springmvc
Sí, es un marco. ty es un marco para la comunicación de red. Spring mvc es un marco de código abierto que está diseñado para resolver la diferencia entre el marco front-end y. el marco mvc para el desarrollo de aplicaciones empresariales
El marco de front-end está escrito especialmente para el front-end. Por ejemplo, un marco de front-end es en parte responsable de la estructura de diseño de la recepción (). parte del estilo (css) y parte del comportamiento (js, jq) es una idea de diseño, que es permitir que la estructura, el rendimiento y el comportamiento estén separados entre sí.
Marco MVC: Solicitud de front-end-"el servidor procesa la solicitud-"el servidor genera una página HTML-"responde a la visualización del front-end.
Framework front-end: El front-end solicita, recibe datos del lado del servidor y los procesa. Puede ver claramente que el marco de front-end no incluye la función de procesamiento de solicitudes del lado del servidor. Ambos son marcos MVC populares. Compare las diferencias entre Struts2 y SpringMVC. Struts2 tiene precisión en la granularidad de la clase y springMVC tiene precisión en la granularidad del método. El uso de los dos también es diferente. mejor integrado en spring Bajo la administración de SpringMVC, las instancias de springMVC existen en forma de singleton, pero si Struts2 existe como singleton, habrá problemas de seguridad de subprocesos. Personalmente, prefiero springMVC
Descripción del flujo de trabajo SpringMVC
1. El usuario envía una solicitud al servidor y la solicitud es capturada por el control front-end de Spring Servelt DispatcherServlet
; p>2. DispatcherServlet Analiza la URL de la solicitud y obtiene el identificador de recurso de la solicitud (URI). Luego, de acuerdo con el URI, llame a
HandlerMapping para obtener todos los objetos relacionados configurados por el Handler (incluido el objeto Handler y el interceptor correspondiente al objeto Handler) y finalmente devuélvalo en el formato
Objeto HandlerExecutionChain;
3. DispatcherServlet selecciona un HandlerAdapter adecuado según el Handler obtenido. (Nota: si el HandlerAdapter se obtiene con éxito, el método preHandler(...) del interceptor comenzará a ejecutarse en este momento)
4. Extraiga los datos del modelo en la Solicitud, complete el Parámetros de entrada del controlador y comience a ejecutar el controlador (controlador). Durante el proceso de completar los parámetros de entrada del controlador, Spring lo ayudará a realizar un trabajo adicional de acuerdo con su configuración:
HttpMessageConveter: convierta el mensaje de solicitud (como Json, xml y otros datos) en un objeto y convertir el objeto en la información de respuesta especificada
Conversión de datos: realiza la conversión de datos en el mensaje de solicitud. Por ejemplo, String se convierte en Integer, Double, etc.
Radicalización de datos: formatea los datos del mensaje de solicitud.
Como convertir cadenas en números o fechas formateadas, etc.
Verificación de datos: verifique la validez de los datos (longitud, formato, etc.) y almacene los resultados de la verificación en BindingResult o Error
5. Después de ejecutar el controlador, devuelva un objeto ModelAndView a DispatcherServlet;
6. Según el ModelAndView devuelto, seleccione un ViewResolver adecuado (debe ser un ViewResolver registrado en el contenedor Spring) y devuélvalo a DispatcherServlet
7. ViewResolver combina Modelo y Vista para representar la vista
8. Devuelve el resultado de la representación al cliente.
La arquitectura de Strut2 se muestra en la figura:
Como se puede ver en la figura, el procesamiento de una solicitud en el marco Struts2 se divide aproximadamente en los siguientes pasos:
1. El cliente inicia una solicitud a un contenedor de Servlet (como Tomcat);
2. Esta solicitud pasa por una serie de filtros (Filtro) (uno de estos filtros es opcional); llamado ActionContextCleanUp Filter, este filtro es muy útil para la integración de Struts2 y otros marcos, como: SiteMeshPlugin);
3. Luego se llama a StrutsPrepareAndExecuteFilter y StrutsPrepareAndExecuteFilter le pide a ActionMapper que decida si esta solicitud debe realizarse. llamar a una acción;
4. Si ActionMapper decide que es necesario llamar a una acción, StrutsPrepareAndExecuteFilter entrega el procesamiento de la solicitud a ActionProxy
5. ActionProxy consulta el archivo de configuración del marco; a través de ConfigurationManager y encuentra la Acción que necesita ser llamada;
6. ActionProxy crea una instancia de ActionInvocation.
7. La instancia de ActionInvocation se llama utilizando el patrón de nomenclatura. Antes y después de llamar a la Acción, implica llamar al interceptor relevante (Intercepter).
8. Una vez ejecutada la Acción, ActionInvocation es responsable de encontrar el resultado de retorno correspondiente de acuerdo con la configuración en struts.xml. Volver
El resultado suele ser (pero no siempre, puede ser otra cadena de acción) una plantilla JSP o FreeMarker que debe representarse. Las etiquetas heredadas del marco Struts2 se pueden utilizar durante el proceso de presentación.
ActionMapper debe participar en este proceso.
Lo anterior es una comparación a nivel macro de los procesos de trabajo de los dos. La siguiente es una comparación detallada de las diferencias entre los dos.
La diferencia entre SpringMVC y Struts2:
1. Mecanismo:
La entrada de springmvc es servlet, mientras que struts2 es filtro (cabe señalar aquí que el filtro y el servlet son diferentes. En el pasado, el filtro se consideraba un tipo especial de servlet), lo que daba como resultado mecanismos diferentes. Esto implica la diferencia entre servlet y filtro.
Spring MVC se basa en el diseño de métodos, mientras que Sturts se basa en clases, lo que da como resultado:
Rendimiento:
Spring será un poco más rápido que Struts. Spring mvc se basa en el diseño de métodos, mientras que sturts se basa en clases.
Cada vez que se realiza una solicitud, se creará una instancia de una acción y se inyectarán atributos en cada acción. con una granularidad más fina, pero requiere Tenga cuidado como controlar los datos en un servlet
. Spring3mvc es una interceptación a nivel de método. Después de interceptar el método, los datos de la solicitud se inyectan en él de acuerdo con las anotaciones en los parámetros. En spring3mvc, un método corresponde a un contexto de solicitud. El marco de struts2 es una interceptación a nivel de clase. Cada vez que llega una solicitud, se crea una acción y luego se llama al método settergetter para inyectar los datos en la solicitud. struts2 en realidad maneja la solicitud a través del método setter getter. no utilice métodos setter getter; en struts2, un objeto Acción corresponde a un contexto de solicitud.
Implementar restful:
springmvc es una interceptación a nivel de método. Un método corresponde a un contexto de solicitud y el método también corresponde a una URL, por lo que desde la arquitectura misma, spring3 mvc. Es fácil implementar una URL relajante. Struts2 es una interceptación a nivel de clase. Una clase corresponde a un contexto de solicitud; es difícil implementar restfulurl, porque un método de acción de struts2 puede corresponder a una URL pero sus atributos de clase son compartidos por todos los métodos, lo que hace que sea imposible; utilice anotaciones u otras formas de identificar el método al que pertenece.
Intercambio de datos:
Cuando Struts acepta parámetros, puede usar atributos para aceptar parámetros, lo que significa que los parámetros son compartidos por múltiples métodos.
Los métodos de spring3 mvc son básicamente independientes y tienen acceso exclusivo a los datos de respuesta de la solicitud. Los datos de la solicitud se obtienen a través de parámetros y los resultados del procesamiento se devuelven al marco a través de ModelMap. entre métodos
Procesamiento de solicitudes ajax
La verificación de spring3 mvc también es un punto destacado. Es compatible con JSR303 y es aún más conveniente para procesar solicitudes ajax. Solo necesita una anotación @ResponseBody. y luego devuelve directamente el texto de respuesta.
Envíe un fragmento de código:
lt; span class="page_speeder_689312681"gt; @ResponseBody
@RequestMapping("/delUser")
public String delUser ( ID de cadena, respuesta HttpServletResponse){
Resultado de cadena ="{\"result\":\"error\"}";
if (userManager.delUser(id)) {
resultado ="{\"resultado\":\"suess\"}"
}
devuelve resultado; > La verificación de spring3mvc también es un punto destacado. Es compatible con JSR303 y es más conveniente para manejar solicitudes ajax. Solo necesita una anotación @ResponseBody
@ResponseBody reemplaza el siguiente código
PrintWriterout. = null;
respuesta.setContentType("application/json");
prueba{
out= respuesta.getWriter();
out.escribir(resultado);
}catch (IOException e) {
e.printStackTrace();
}
}lt; /spangt;
Mecanismo de implementación del interceptor:
Struts tiene su propio mecanismo de interceptor y springmvc utiliza un método AOP independiente. Como resultado, la cantidad de archivos de configuración de struts es aún mayor que la de springmvc. Aunque la configuración de struts se puede heredar, creo que en términos de uso, spring mvc es más conciso de usar y la eficiencia de desarrollo de spring MVC es. de hecho, más alto que struts2.