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应用程序。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部