¿Por qué utilizar rpc en lugar de spring mvc directamente?
Springmvcstruts 2. Para comprender el contenido de la red china, lea atentamente el contenedor liviano Spring (contenedor liviano) y su Bean Factory principal (Bean Factory) para construir el M (modelo). La base que necesito Spring proporciona AOP (la programación orientada a aspectos se implementa para proporcionar transacciones declarativas, seguridad y otros servicios en entornos no administrados; la extensión de Bean Factory ApplicationContext nos facilita la implementación de aplicaciones J2EE; DAO/. La implementación de ORM nos facilita el desarrollo de bases de datos web. MVCSpring Web proporciona un marco de aplicación web Java o integración con sus marcos web populares 1) Marco fuente 2) IoC (inversión de control), creación de dependencias, escritura de archivos de configuración e inyección de archivos de configuración; para lograr un acoplamiento flexible 3) Transacciones de seguridad AOP equivalentes a la extracción de funciones independientes de la lógica del programa Utilice archivos de configuración de Spring para insertar algunas funciones para implementar la programación basada en superficie para mejorar la reutilización. Prefacio: observe más de cerca el código fuente de Spring MVC y escriba. Para que pueda comprender la implementación de varios marcos en el patrón MVC. Entonces, le insto a que vea este artículo con escepticismo. Problema, me gustaría usar MVC para aplicaciones MVC y WEB. Estamos familiarizados con el marco Modelo-Vista-Control (MVC), las principales cuestiones a las que debemos prestar atención son las siguientes: Modelo: el modelo debe contener los datos mostrados por la vista. Para aplicaciones web EE, la comunicación de datos debe estar compuesta de JavaBeans ordinarios Una vez que el controlador selecciona la vista, el modelo debe contener los datos correspondientes de la vista. El modelo en sí debe facilitar el acceso a los datos y debe estar relacionado con la imagen empresarial. Los problemas que debe resolver el modelo incluyen: Encapsulación de los datos que se mostrarán l Creo que el modelo depende de un marco específico l Definitivamente no es una vista Javabean: la vista es responsable de mostrar la información contenida en el modelo, y la vista debe comprender el controlador o la imagen empresarial subyacente para implementar los problemas específicos que la vista necesita resolver incluyen: l Mostrar el contenido de visualización de un modelo de datos determinado l Debería contener lógica de negocios l Puede necesitar realizar lógica de visualización, mostrar cada fila de una matriz en lugar de color l La vista maneja errores de validación, datos la validación debe ser completada por sus componentes l Las vistas deben manejar los parámetros, los parámetros deben entregarse al controlador configurado para su procesamiento Control: Los controladores son como MVC El sistema nervioso central puede necesitar ayuda adicional además de analizar vistas, analizar parámetros, etc. El controlador accede al objeto comercial o China, que es más importante que StrutsAction. Los problemas que el controlador debe resolver incluyen: l Verificar y extraer los parámetros de la solicitud l Llamar al objeto comercial, pasar la solicitud para obtener los parámetros l Crear un modelo y La vista mostrará el modelo. Seleccione la vista adecuada y envíela al cliente. El marco actual del controlador ha sido implementado por el marco MVC. El más popular es StrutsWebwork, que es un marco web popular. Estándar real de la industria Además de discutir las ventajas del modo MVC, algunas desventajas: l Cada acción se almacena en caché y luego se solicita que la acción espere un nuevo objeto y el primer objeto se reutiliza, lo que significa que cada acción debe. Sea seguro para subprocesos. l ActionForm se usa para encapsular datos de formulario, pero puede manejar datos de tipo String. Aunque la herramienta Commons Beanutils se usa para la conversión de tipos, solo proporciona soporte a nivel de objeto. Depende en gran medida de la API de Servlet. para probar (la versión de la firma StrutsAction.execute se reemplaza por ejecutar (ActionContext act
ionContext), que depende en gran medida) l Las reglas de verificación del marco en sí son relativamente simples y generalmente dependen de la validación común para la verificación l Es difícil realizar algún procesamiento antes de la Acción, incluso los controladores especiales autoescritos l Dado que todos los Struts heredan lo concreto. clases, ¿es fácil romper la encapsulación? l Proporciona una variedad de etiquetas definidas individualmente. El enlace de datos es demasiado primitivo, lo que hace que el código de la página dependa del marco específico de Struts, pero creo que es fatal. Está demasiado orientado a JSP. Aunque utiliza su tecnología de visualización, es conveniente utilizar el marco Webwork, pero siempre se centra en el desarrollo de ideas de diseño de Webwork y adopta un enfoque más inteligente que Struts, y técnicamente es más alto que Struts. Struts. El modo Comando se basa en XworkWebwork y el marco depende de la API de Servlet. Xwork proporciona funciones principales: Interceptor, validación de formularios de ejecución, conversión de tipos, contenedor IoC, etc. WebWork construye Xwork para procesar solicitudes de respuesta HTTP. encapsular sesión, aplicación y otros objetos de servlet. Desacoplar la API de Servlet. Sigue siendo perfecto: l Crear acción para cada solicitud. Algo de desperdicio (el motor de Servlet crea un objeto cada vez que lo solicita. ¿Hay algún impacto en el rendimiento?) l Cuanto más largo sea el proyecto. Es decir, el archivo de configuración puede estar desordenado. Por ejemplo, el archivo de configuración de soporte l Manejo de excepciones Valor del modo de comando Nota: sé que un comando específico puede generar una excepción específica, ejecutar () se ve obligado a generar una excepción, y cuando llega. Para ejecutar excepciones, el lado objetivo de Spring MVC Framework ha verificado algunos principios de MVC y algunos problemas con los marcos principales actuales. Veamos cómo Spring MVC Framework define interfaces basadas en la misma función y los problemas Dependen de la API de Servlet. Spring MVC Framework tiene algunas características: l Basado en tecnología de componentes, l Depende de la API de Servlet (aunque el objetivo es). para lograrlo Depende de Servlet en todo momento) l Utilice varias tecnologías de visualización arbitrariamente, solo limitadas a JSP l Admite varias estrategias de mapeo de recursos de solicitud l Debería ser fácil de extender Creo que el marco de evaluación debería tener varios principios l Debería ser fácil ¿Siento que, especialmente los archivos de configuración, varias lógicas comerciales y la infraestructura pueden estar abarrotadas de archivos de configuración? La infraestructura de procesamiento de transacciones debe desarrollarse a través de la administración de contenedores, aunque hay algunos archivos de configuración en la lógica. Está claro que las configuraciones básicas se exponen fácilmente fuera de Spring Testing. Spring es fácil de realizar pruebas unitarias y las pruebas son fáciles. Spring proporciona interfaces en cada capa. Casi todas las interfaces tienen una implementación abstracta predeterminada y cada implementación abstracta tiene algunas implementaciones concretas. La escalabilidad de Spring es excelente. Debería haber una distinción entre el interior y el exterior del marco. Si el marco es complejo internamente, Spring debe ser más problemático internamente y oculta toda la complejidad. Es más cómodo de usar que configurar las propiedades del bean. Simplemente setPropertyValue (String propertyName, Object value) está hecho. En cuanto a la configuración, Spring oculta completamente toda la complejidad. Mejore la documentación y el conjunto de pruebas, y mejore el proceso básico de Spring. Marco web. Si conoce el marco Spring MVC, ahora eche un vistazo al proceso.
Spring MVC Framework al proceso: cuando se inicia el programa web, ContextLoaderServlet debe leer la información del archivo de configuración e inyectar el controlador de inicialización DispatchServlet. Al aceptar la solicitud HTTP, DispatchServlet permite que HandlerMapping procese la solicitud. URL (la URL debe especificarse, completamente personalizada, no funciona) Seleccione Controller. DispatchServlet llama al ControllerhandlerRequest seleccionado y llama a Controllerinterceptor (configuración falsa) antes de devolver la colección de modelos de vista ModelAndView. El marco analiza la vista a través de ViewResolver y devuelve la Vista. objeto, llama a Viewrender y devuelve el controlador del marco DispatcherServlet del cliente, clase específica, inicializada al ejecutar la imagen. El controlador en sí no controla el proceso. El controlador confía la responsabilidad del procesamiento de solicitudes al controlador correspondiente. FrameworkServlet, y el atributo webApplicationContext representa el texto del programa web. La imagen implementa la lectura de archivos XML de forma predeterminada. Obtenga la información de configuración (su formato de archivo en realidad es un paquete de beans, el paquete proporciona toda la infraestructura del marco Spring, analizo el paquete). contenido Ahora solo necesita saber que WebApplicationContext representa la imagen de la aplicación web. Ahora veamos cómo funciona DispatchServlet: DispatchServlet hereda del resumen La clase base FrameworkServlet, FrameworkServletdoGet() y doPost() llaman a serviceWrapper(). ) y vea que la implementación específica se delega a doService (solicitud, respuesta); ahora está claro que DispatchServlet realmente implementa la función doService (). Especialmente, la inicialización del controlador FrameworkServletinitFrameworkServlet () utiliza el ícono de inicialización de la clase HandlerMappings para retrasar la implementación de la clase. De hecho, el modo Plantilla está implementado, no nos llame, lo llamaremos a usted. En resumen, Spring Pass implementa la inversión de control: usando el marco para controlar el proceso, el usuario salta a doService () para ver qué sucede y descubrirlo. la función asistente doDispatch(solicitud, respuesta) realmente funciona. Si no hay solución, continúe leyendo y encuentre dos líneas de código HandlerExecutionChain mappedHandler = null; mappedHandler = getHandler(processedRequest, false); que, de hecho, ControllerInterceptors Packaging; getHandler()HandlerMappings(List, almacena objetos handlerMapping) recupera el objeto handlerMapping. Cada objeto HandlerMapping representa el mapeo ControllerURL (en realidad, el mapeo HandlerExecutionChainURL cuando se ejecuta, el objeto HandlerExecutionChain es en realidad el contenedor de Controllerinterceptors, HandlerMapping mira Con).
mapeo trollerURL).HandlerMapping se inyecta a través del archivo de configuración. Generalmente, la clase SimpleUrlHandlerMapping toma el objeto HandlerMapping. Continúe buscando y encontrando: if (mappedHandler.getInterceptors() != null) { for (int i = 0; i lt; mappedHandler.getInterceptors ().length; i) { HandlerInterceptor interceptor = mappedHandler.getInterceptors()[i]; respuesta, nulo); } interceptorIndex = i; } } Llame al interceptor del controlador, oración principal: interceptor.preHandle(processedRequest, respuesta, mappedHandler.getHandler(), mv preHandle pasa el parámetro mappedHandler.getHandler()); implementar llamadas recursivas! Las llamadas interceptoras .postHandle-like .handleRequest continúan mirando: HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler()); ControllerhandleRequest realmente opera en China para HandlerAdapter
maneja y devuelve ModelAndView. Creo que para agregar significado de capa, el acoplamiento de ControllerDispatchServlet debe desacoplarse. Luego simplemente llame a render(), ViewResoler analizará el nombre de la vista y luego se llamará al objeto de vista para representar la vista apropiada. para mostrarle al usuario el proceso del controlador SOBRE HandlerMapping. Al usar HandlerMapping, el controlador usa un controlador de URL para realizar el mapeo estándar e implementa la clase de mapeo de URL específica UrlHandlerMapping. Spring me permite personalizar el mapeo, como el mapeo de sesión, cookie o estado del usuario. Todo lo que necesito hacer es implementar la interfaz HandlerMapping. El mapeo de URL ya puede cumplir con todos los requisitos. Se requiere que el controlador sea similar a StructsAction y la interfaz del controlador handleRequest () y coloque el objeto ModelAndView. , cada controlador tiene un componente Java. El entorno se puede configurar arbitrariamente y las propiedades del componente se inicializan y configuran. Spring proporciona varias implementaciones específicas. Es conveniente para nosotros utilizar el controlador ViewResolver para devolver el objeto de vista ModelAndView que contiene el nombre de la vista. Desacople completamente la relación entre las vistas del controlador y proporcione soporte internacional. Archivo de configuración: bienvenidoView.class = org.springframework.web.servlet.view. servlet.view.xslt. XsltView WelcomeView.url=/xslt/default.xslt Vea el componente Java, realice cualquier procesamiento de solicitud o lógica de negocios, simplemente obtenga el modelo para pasar datos y los datos se muestran de acuerdo con el proceso. : l Establecer el alcance de la solicitud de datos del modelo l Obtener la URL de vista l Reenviar la URL de respuesta Resumen: El marco Springweb es un marco excelente. Analiza brevemente algunas clases clave del flujo de trabajo de Spring, pero no profundiza en los aspectos subyacentes. ventajas y desventajas, etc. Hablaré de esto más adelante