Spring MVC模式

110 阅读2分钟

Spring MVC模式

Spring MVC 是一个基于 Java 的实现了 MVC 设计模式的 Web 框架,它是 Spring Framework 的一部分,用于处理 Web 应用程序中的请求。Spring MVC 通过使用 DispatcherServlet 来处理 HTTP 请求,并将请求分发给相应的处理器(Controller),然后将模型(Model)和视图(View)返回给客户端。

核心组件:

  1. DispatcherServlet:前端控制器,用于接收所有 HTTP 请求并将其分发给相应的处理器。

  2. HandlerMapping:将请求映射到处理器(Controller)。

  3. Controller:处理业务逻辑,并返回模型和视图。

  4. ModelAndView:包含了模型和视图的信息。

  5. ViewResolver:根据逻辑视图名解析出实际的视图。

  6. View:渲染模型数据,生成响应的 HTML 内容。

工作流程:

  1. 用户发送请求至前端控制器(DispatcherServlet)。

  2. DispatcherServlet 查询一个或多个 HandlerMapping,找到处理请求的 Controller。

  3. DispatcherServlet 将请求发送给相应的 Controller。

  4. Controller 执行业务逻辑,并返回一个 ModelAndView 对象。

  5. DispatcherServlet 查询一个或多个 ViewResolver,找到实际的视图。

  6. 视图渲染模型数据,生成响应的 HTML 内容。

  7. DispatcherServlet 将响应返回给用户。

优点:

  1. 高度可配置,提供了大量扩展点。

  2. 代码更加模块化,易于维护。

  3. 支持多种视图技术,如 JSP、Freemarker、Thymeleaf 等。

  4. 集成了 Spring Framework,方便进行依赖注入、声明式事务管理等。

  5. 提供了大量的内置功能,如文件上传、数据验证、类型转换等。

使用示例:

  1. 添加依赖
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.10</version>
        </dependency>
    </dependencies>
    
  2. 配置 web.xml
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    
  3. 创建 Controller
    @Controller
    public class HelloController {
        @RequestMapping("/hello")
        public ModelAndView hello() {
            ModelAndView modelAndView = new ModelAndView("hello");
            modelAndView.addObject("message", "Hello, World!");
            return modelAndView;
        }
    }
    
  4. 创建视图(hello.jsp):
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Hello</title>
    </head>
    <body>
    <h1>${message}</h1>
    </body>
    </html>
    

这样,当你访问 /hello 路径时,就会看到 "Hello, World!" 的消息。 这只是 Spring MVC 的一个非常简单的示例,实际上它有很多高级功能,如数据验证、文件上传、异常处理等。希望这个介绍能帮助你更好地理解 Spring MVC。