Spring MVC 教程

1. 概述

Spring MVC 是 Spring 框架的一部分,用于构建基于 Java 的 Web 应用程序。它遵循模型-视图-控制器(MVC)设计模式,提供了灵活且强大的方式来开发 Web 应用。

1.1 MVC 设计模式

MVC 是一种软件设计模式,将应用程序分为三个核心组件:

  • 模型(Model):表示数据和业务逻辑。
  • 视图(View):负责显示数据。
  • 控制器(Controller):处理用户输入,调用模型和视图。

2. Spring MVC 核心组件

2.1 DispatcherServlet

DispatcherServlet 是 Spring MVC 的前端控制器,负责将请求分发到相应的控制器。

2.2 控制器(Controller)

控制器处理用户请求并返回响应。通常使用注解来定义控制器类和方法。

@Controller
public class HelloController {

    @RequestMapping("/hello")
    public String hello(Model model) {
        model.addAttribute("message", "Hello, Spring MVC!");
        return "hello";
    }
}

2.3 视图解析器(ViewResolver)

ViewResolver 负责将逻辑视图名称解析为实际的视图对象。

@Bean
public InternalResourceViewResolver viewResolver() {
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setPrefix("/WEB-INF/views/");
    resolver.setSuffix(".jsp");
    return resolver;
}

2.4 模型(Model)

模型用于在控制器和视图之间传递数据。

@RequestMapping("/hello")
public String hello(Model model) {
    model.addAttribute("message", "Hello, Spring MVC!");
    return "hello";
}

3. 配置 Spring MVC

3.1 web.xml

在 web.xml 中配置 DispatcherServlet。

<web-app>
    <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>

3.2 Spring 配置文件

创建一个 Spring 配置文件(如 dispatcher-servlet.xml)来配置视图解析器和其他组件。

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

4. 实践练习

4.1 创建一个简单的 Spring MVC 项目

  1. 创建项目结构:

    • src/main/java:Java 源代码
    • src/main/webapp/WEB-INF/views:JSP 视图文件
    • src/main/webapp/WEB-INF/web.xml:Web 配置文件
    • src/main/resources/dispatcher-servlet.xml:Spring 配置文件
  2. 编写控制器:

@Controller
public class HelloController {

    @RequestMapping("/hello")
    public String hello(Model model) {
        model.addAttribute("message", "Hello, Spring MVC!");
        return "hello";
    }
}
  1. 编写视图:
<html>
<head>
    <title>Hello Spring MVC</title>
</head>
<body>
    <h1>${message}</h1>
</body>
</html>
  1. 配置 web.xml 和 dispatcher-servlet.xml:
<!-- web.xml -->
<web-app>
    <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>

<!-- dispatcher-servlet.xml -->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>
  1. 运行项目:
    • 将项目部署到 Web 容器(如 Tomcat)。
    • 访问 http://localhost:8080/your-app-context/hello,你应该会看到 "Hello, Spring MVC!" 的消息。

5. 总结

Spring MVC 是一个强大的框架,用于构建 Web 应用程序。通过本教程,你学习了 Spring MVC 的核心组件、配置方法以及如何创建一个简单的 Web 应用。继续深入学习,你将能够构建更复杂的 Web 应用。

6. 进一步学习

  • Spring Boot:简化 Spring 应用的初始搭建和开发过程。
  • RESTful API:使用 Spring MVC 构建 RESTful 服务。
  • Spring Security:为你的 Web 应用添加安全功能。

通过不断实践和学习,你将能够掌握 Spring MVC 并应用于实际项目中。