1 Introducción
¿Qué es el marco MVC?
El nombre completo de MVC es Model View Controller, que es la abreviatura del controlador de visión del modelo. Es un modelo de diseño de software. Organiza el código utilizando un método de separación de lógica comercial, datos y visualización de interfaz, y reúne la lógica comercial en un componente. Al mejorar y personalizar la interfaz y la interacción del usuario, no hay necesidad de reescribir la lógica comercial. MVC se ha desarrollado de manera única para mapear las funciones de entrada, procesamiento y salida tradicionales en una estructura lógica de interfaz de usuario gráfica.
Model-View-Controller (MVC) es un patrón de diseño bien conocido basado en aplicaciones de interfaz de diseño. Principalmente desacopla la lógica comercial de la interfaz al separar el papel de los modelos, vistas y controladores en aplicaciones. Por lo general, el modelo es responsable de encapsular los datos de la aplicación en la capa de vista. La vista solo muestra estos datos y no contiene ninguna lógica comercial. El controlador es responsable de recibir solicitudes de los usuarios y llamar a los servicios de fondo (gerente o DAO) para manejar la lógica comercial. Después del procesamiento, la capa comercial de fondo puede devolver algunos datos que se mostrarán en la capa de vista. El controlador recopila estos datos y prepara el modelo que se mostrará en la capa de vista. La idea central del modelo MVC es separar la lógica comercial de la interfaz, lo que les permite cambiar individualmente sin afectarse entre sí.
En las aplicaciones SpringMVC, el modelo generalmente se compone de objetos POJO, que se procesan en la capa de negocios y persisten en la capa de persistencia. Las vistas suelen ser plantillas JSP escritas en la biblioteca de etiquetas estándar JSP (JSTL). La parte del controlador es administrada por el desplazamiento, y aprenderemos más al respecto en este tutorial.
Algunos desarrolladores creen que las clases de la capa de negocios y la capa DAO son parte de los componentes del modelo MVC. Tengo diferentes opiniones sobre esto. No creo que la capa de negocios y las clases de capa DAO sean parte del marco MVC. Por lo general, una aplicación web es una arquitectura de tres capas, a saber, la representación del servicio de datos. MVC es en realidad parte de la capa de presentación.
Servlet de despachador (controlador de primavera)
En la aplicación Spring MVC más simple, el controlador es el único servlet que necesita configurar en el archivo de descripción de implementación web de Java (es decir, el archivo web.xml). Controlador MVC Spring: comúnmente conocido como Servlet de despachador, implementa el patrón de diseño del controlador frontal. Y cada solicitud web debe pasar a través de ella para que pueda administrar todo el ciclo de vida de la solicitud.
Cuando se envía una solicitud web a una solicitud de Spring MVC, el servlet del despachador primero recibe la solicitud. Luego organiza componentes configurados en el contexto de la aplicación web Spring (como el controlador de procesamiento de solicitudes real y el resolución de la vista) o utilizando la configuración de anotaciones, todo lo cual requiere procesar la solicitud.
Defina una clase de controlador en Spring 3.0, que debe marcarse con la anotación @Controller. Cuando un controlador con anotación @Controller recibe una solicitud, buscará un método de controlador adecuado para manejar la solicitud. Esto requiere que el controlador asigne cada solicitud al método del controlador a través de una o más asignaciones de controladores. Para hacer esto, los métodos de una clase de controlador deben decorarse con la anotación @RequestMapping para hacerlos métodos de controlador.
Después de que el método del controlador ha procesado la solicitud, delega control a una vista con el mismo nombre de vista que el valor de retorno del método del controlador. Para proporcionar un método flexible, el valor de retorno de un método de controlador no representa la implementación de una vista sino una vista lógica, es decir, no hay extensión de archivo. Puede asignar estas vistas lógicas a la implementación correcta y escribir estas implementaciones en el archivo de contexto para que pueda cambiar fácilmente el código de la capa de vista sin siquiera modificar el código que solicita la clase del controlador.
Es responsabilidad del resolución de la vista hacer coincidir el archivo correcto para un nombre lógico. Una vez que la clase del controlador ha analizado un nombre de vista a una implementación de vista. Rendera el objeto correspondiente de acuerdo con el diseño implementado por la vista.
2 paquete de frasco de importación
Al menos deberían haber estos.
3 archivos de configuración
3.1 web.xml
<? xml versión = "1.0" encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" " xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" <SclawNname> SpringMVC_Helloworld </splay-Name> <Welcome-file-List> <Devenga-File> index.html </leadde-file> <Welcome-file> index.htm </welcome-file> <beeding-file> index.jsp </breve-file> <cile-file> default.html </welceed-file> <levle-file> default.htm </welcome-file> <velceed-file> default.jsp </Welcome-File> </Welcome-File-List> <!-Servlet para Spring MVC-> <!-Después de la inicialización, DispatcherServlet buscará directamente el archivo springmvc-servlet.xml en/web-inf/. La definición del parámetro de la etiqueta Servlet-Name debe corresponder al archivo XML-> <servlet> <ervlet-name> springmvc </servlet-name> <ervlet-class> org.springframework.web.servlet.dispatcherservlet </servlet-class> <load- on-startup> 1 </load-on-starp> </servlet> <ervlet-mapping> <Servlet-name> springmvc </servlet-name> <url-pattern>/</sl-pattern> </servlet-mapping> <context-param> <amamname> contextconfiglocation </amamname> <amam-value> classpath: applicationContext.xml </marr-value> </xt-param> <searcher> <Oyerer-class> org.springframework.web.context.contextloaderListener </ oyinger-class> </oyeyer> </seb-app>
3.2 springmvc-servlet.xml
El nombre de este archivo está determinado por <Servlet-name> </servlet-name> del despachador configurado en web.xml. La ruta está en contexto/web-inf/, que configura principalmente la relación correspondiente entre el nombre de la vista lógica y la vista física devuelta por el controlador.
<? xml versión = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" "" "" xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: context = "http://www.springframework.org/schema/schemt" " xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beanss.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd "> <!-Paquete de géxico automático-> <contexto: componente-scan-scan-package =" id = "ViewResolver"> <Property Name = "ViewClass" value = "org.springframework.web.servlet.view.jstlview" /> <!-El controlador devuelve un nombre lógico de vista después de un procesamiento pre-suffix a devolver a la vista física-> <name de propiedad = "prefix" value = " /webinf /jsp /" n. </bean> </beans>
4 Escribe una clase de dominio
Se utiliza para encapsular algunos datos de envío
paquete com.lin.helloworld.domain; public class HelloWorld {private String data; public helloworld () {super ();} public helloworld (string data) {super (); this.data = data;} public String String getData () {return data;} public void set data (data) [data = " + data +"] ";}} 5 Controlador de escritura
Este es el controlador en MVC. Lo que es diferente de Struts2 es que es una intercepción a nivel de método, y Struts2 es una intersección de nivel de clase.
paquete com.lin.helloworld.controller; import org.springframework.stereotype.controller; import org.springframework.web.bind.annotation.modelattribute; import og.springframework.web.bind.annotation.requestmapping; import orge.springframework.web.servlet.servlet; com.lin.helloworld.domain.helloworld; @controllerpublic class helloworldController {// aquí/hola es equivalente a una acción en struts2 // devuelve una cadena a la vista @requestmapping ("/hello") pública modelandview sayshello () {// El primer parámetro de la construcción de modelandview es equivalente a un resultado en el struts2 de struts2 de los struts2. namEmodelandView modelandView = new ModelAndView ("HelloWorld", "Msg", "HelloWorld!"); return ModelAndView;} // Devuelve un objeto a la vista //@modelattribute ("obj") es equivalente a un campo en la clase de acción de Struts2, // Los datos utilizados para el formulario de formulario se ponen en un objeto//la diferencia entre aquí y Struts2: Struts2: Manejo del formulario Sumisión: <input name = "obj.data" // Los datos enviados se encapsulan en los datos del objeto obj // springmvc es: <input name = "data" // Los datos enviados se encapsulan en los datos del objeto OBJ, // la premisa es usar @modelattribute Annotation @Requestmapping ("/Helloobj") sayshelloworld (@modelattribute ("obj") helloworld obj) {System.out.println (obj.ToString ()); modelandView modelandView = new ModelAndView ("HelloWorld", "Obj", OBJ); return ModelAndView;}}6 vistas
<%@ page lenguaje = "java" import = "java.util.*" pageEncoding = "utf-8"%> <%string path = request.getContextPath (); String basepath = request.getScheme ()+": //"+request.getServerNeN ()+":"+request.getServerPort ()+pATH+"/";%; "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<%= basePath%>" rel = "nofollow"> <title> my jsp 'helloworld.jsp' página inicial </title> <meta http-oquiv = "Pragma" Content = "No Cache" <MetAa http-equiv = "cache-confontrol" content = "no-cache"> <meta http-equiv = "expires" content = "0"> <meta http-equiv = "palabras clave" content = "keyword1, weyword 2, keyword3"> <meta http-oquiv = "descripción" Content = "esto es mi página" << type = "text/css" href = "styles.css" rel = "nofollow externo"> -> </head> <body> helloworld! Este es un ejemplo de marco de Spring MVC. <br> $ {msg} <hr/> <form de acción = "helloBj" método = "post"> <!- El envío de formulario aquí es diferente de Struts2. Name = "Data" corresponderá automáticamente al archivo del objeto -> <input type = "text" name = "data" size = "30"/> <br/> <input type = "subt" valor = "enviar"/> </form> <hr/> $ {obj.data} </body> </html>7 Estructura del directorio
Resumir
Lo anterior se trata del ejemplo de entrada de SpringMVC en este artículo, espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a este sitio:
Implementación de programación de Java del ejemplo de inicio de sesión simple de SpringMVC
La programación SpringMVC utiliza la interfaz del controlador para implementar el código de instancia del controlador
Explicación detallada de si el interceptor de SpringMVC implementa la sesión de monitoreo
Si hay alguna deficiencia, deje un mensaje para señalarlo. Gracias amigos por su apoyo para este sitio.