English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Spring MVC是一个Java框架,用于构建Web应用程序。它遵循Model-View-Controller设计模式。它实现了核心Spring框架的所有基本功能,例如控制反转,依赖注入。
Spring MVC通过 DispatcherServlet 提供了一种优雅的解决方案,可以在Spring框架中使用MVC。在这里, DispatcherServlet 是一个类,用于接收传入的请求并将其映射到正确的资源,例如控制器,模型和视图。
Model-模型包含应用程序的数据。数据可以是单个对象或对象的集合。 Controller-控制器包含应用程序的业务逻辑。在这里,@ Controller批注用于将类标记为控制器。 View-视图以特定格式表示所提供的信息。通常,JSP + JSTL用于创建视图页面。尽管spring还支持其他视图技术,例如Apache Velocity,Thymeleaf和FreeMarker。 Front Controller-在Spring Web MVC中,DispatcherServlet类用作前端控制器。它负责管理Spring MVC应用程序的流程。
如图所示,所有传入的请求都被充当前端控制器的DispatcherServlet拦截。 DispatcherServlet从XML文件获取处理程序映射的条目,并将请求转发给控制器。 El controlador devuelve el objeto ModelAndView. DispatcherServlet verifica la entrada del analizador de vistas en el archivo XML y llama al componente de vista especificado.
Veamos algunas ventajas del framework Spring MVC: -
Separación de roles-Spring MVC separa cada rol, donde pueden ser implementados por objetos especializados los objetos modelo, controlador, objeto de comando, analizador de vistas, DispatcherServlet, validadores, etc. Ligero-Usa un contenedor de servlet ligero para desarrollar y desplegar su aplicación. Configuración poderosa-Proporciona una configuración confiable para las clases del framework y las aplicaciones, incluyendo referencias fáciles de usar a través de contexto, como desde el controlador web hasta los objetos de negocio y los validadores. Desarrollo rápido-Spring MVC promueve el desarrollo rápido y paralelo. Código de negocio reusable-Sin necesidad de crear nuevos objetos, permite usar objetos de negocio existentes. Facil de probar-En Spring, generalmente creamos clases JavaBeans para que pueda inyectar datos de prueba utilizando métodos setter. Mapeo flexible-Proporciona comentarios específicos para facilitar la redirección de páginas.
Veamos un ejemplo simple del framework Spring Web MVC. Los pasos son los siguientes:
Cargar el archivo jar de Spring en Maven o agregar la dependencia Crear la clase controladora Proporcionar la entrada del controlador en el archivo web.xml Definir bean en un archivo XML separado Mostrar mensajes en la página JSP Inicie el servidor y despliegue el proyecto
Para ejecutar este ejemplo, debe cargar:
Archivo jar de Spring Core Archivo jar de Spring Web JSP + Archivo jar de JSTL (si utiliza otra tecnología de vistas, cargar el archivo jar correspondiente).
Descargue todos los archivos jar de Spring, incluyendo JSP y JSTL.
Si utiliza Maven, no es necesario agregar archivos jar. Ahora, debe agregar las dependencias de Maven al archivo pom.xml.
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.w3codebox</groupId> <artifactId>SpringMVC</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>SpringMVC Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.1.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>3.0-alpha-1</version> </dependency> </dependencies> <build> <finalName>SpringMVC</finalName> </build> </project>
要创建控制器类,我们使用两个注释@Controller和@RequestMapping。
@Controller注释将该类标记为Controller。
@Requestmapping批注用于映射具有指定URL名称的类。
HelloController.java
package com.w3codebox; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HelloController { @RequestMapping("/) public String display() { return "index"; } }
在此xml文件中,我们指定Servlet类DispatcherServlet充当Spring Web MVC中的前端控制器。 html文件的所有传入请求都将转发到DispatcherServlet。
web.xml
<?xml version="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/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>SpringMVC</display-name> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
这是重要的配置文件,需要在其中指定View组件。
context: component-scan元素定义了DispatcherServlet的基本包。将搜索控制器类。
此xml文件应位于WEB-INF目录内。
spring-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- Proporcionar soporte para el escaneo de componentes --> <context:component-scan base-package="com.w3codebox" /> <!--Proporcionar soporte para conversión, formateo y validación --> <mvc:annotation-driven/> </beans>
Esta es una página JSP simple que muestra el mensaje devuelto por el Controlador.
index.jsp
<html> <body> <p>Bienvenido a la Guía de Tutorial de Spring MVC</p> </body> </html>
Salida:
MVC de Spring
Formularios MVC
Aplicación MVC de Spring
Validación MVC
Tiles MVC