Spring Web MVC是Spring框架中用于构建Web应用程序的重要模块。它基于Model-View-Controller(MVC)设计模式,旨在将应用程序的业务逻辑、用户界面和用户输入分离,提高代码的可维护性和可扩展性。
1. MVC设计模式概述
MVC模式将应用程序分为三个核心部分: - Model(模型):处理数据和业务逻辑。模型与数据库交互,并提供业务操作。 - View(视图):负责呈现数据给用户。通常是一个HTML页面,可能包含JSP、Thymeleaf等视图技术。 - Controller(控制器):接受用户请求并调用相应的服务来处理这些请求,最后选择一个视图来展示返回的结果。
2. Spring Web MVC的基本结构
Spring Web MVC的核心组成部分有: - DispatcherServlet:前端控制器,负责接收用户请求并将其分发到相应的控制器。 - Controller:处理具体的请求逻辑。 - ViewResolver:解析视图名称,并获取视图的实现。 - ModelAndView:是用来封装模型和视图的对象。
3. Spring Web MVC示例
3.1 项目结构
假设我们要创建一个简单的应用,项目结构如下:
my-spring-mvc-app
│
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── example
│ │ │ ├── controller
│ │ │ │ └── HelloController.java
│ │ │ └── config
│ │ │ └── WebConfig.java
│ │ └── resources
│ │ └── templates
│ │ └── hello.html
│ └── webapp
│ ├── WEB-INF
│ │ └── web.xml
│ └── static
│ └── css
└── pom.xml
3.2 Maven依赖
在pom.xml
中添加Spring相关依赖:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.12</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.12</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
<version>3.0.12.RELEASE</version>
</dependency>
</dependencies>
3.3 Spring配置
在web.xml
中配置DispatcherServlet
:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
在WebConfig.java
中进行Spring的基本配置:
package com.example.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example.controller")
public class WebConfig {
}
3.4 控制器实现
创建HelloController.java
处理请求:
package com.example.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HelloController {
@GetMapping("/hello")
public String hello(Model model) {
model.addAttribute("message", "Hello, Spring MVC!");
return "hello"; // 返回视图名称
}
}
3.5 视图模板
在hello.html
中定义视图:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Hello Page</title>
</head>
<body>
<h1 th:text="${message}">Default Message</h1>
</body>
</html>
4. 运行和测试
运行web应用,访问http://localhost:8080/hello
,你应该会看到“Hello, Spring MVC!”的消息。
结论
Spring Web MVC的设计理念和灵活性使得开发Web应用程序变得更加简单、清晰。通过使用MVC模式,可以将业务逻辑、数据模型和用户界面分开,从而提高代码的可维护性和可扩展性。借助Spring提供的各项功能,开发者可以快速构建功能强大且高效的Web应用程序。