English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Spring MVC教程

Spring MVC是一个Java框架,用于构建Web应用程序。它遵循Model-View-Controller设计模式。它实现了核心Spring框架的所有基本功能,例如控制反转,依赖注入。

Spring MVC通过 DispatcherServlet 提供了一种优雅的解决方案,可以在Spring框架中使用MVC。在这里, DispatcherServlet 是一个类,用于接收传入的请求并将其映射到正确的资源,例如控制器,模型和视图。

Spring Web Model-View-Controller

Model-模型包含应用程序的数据。数据可以是单个对象或对象的集合。 Controller-控制器包含应用程序的业务逻辑。在这里,@ Controller批注用于将类标记为控制器。 View-视图以特定格式表示所提供的信息。通常,JSP + JSTL用于创建视图页面。尽管spring还支持其他视图技术,例如Apache Velocity,Thymeleaf和FreeMarker。 Front Controller-在Spring Web MVC中,DispatcherServlet类用作前端控制器。它负责管理Spring MVC应用程序的流程。


了解Spring Web 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.


Ventajas del framework Spring MVC

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.


Ejemplo del framework Spring Web MVC

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


Estructura de directorios de Spring MVC

Estructura de directorios de Spring MVC utilizando Maven


Archivos jar necesarios o dependencias de Maven

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.

1、en el archivo pom.xml proporcionar información del proyecto y la configuración.

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>

2、创建控制器类

要创建控制器类,我们使用两个注释@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";
  } 
}

3、在web.xml文件中提供控制器的条目

在此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>

4、在xml文件中定义bean。

这是重要的配置文件,需要在其中指定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>

5Mostrar mensajes en la página JSP

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:



Índice MVC de Spring