Spring MVC(全称 Spring Web MVC)是 Spring 框架提供的一款基于 MVC 模式的轻量级 Web 开发框架,是 Spring 为表示层(UI)开发提供的一整套完备的解决方案。
注:三层架构分为表示层(UI)、业务逻辑层(BLL)、数据访问层(DAL),表示层则包含前台页面和后台 Servlet。
Spring MVC 使用 MVC 架构模式的思想,将 Web 应用进行职责解构,把一个复杂的 Web 应用划分成模型(Model)、控制器(Contorller)以及视图(View)三层,有效地简化了 Web 应用的开发,降低了出错风险,同时也方便了开发人员之间的分工配合。
Spring MVC 各层的职责如下:
Spring MVC 本质是对 Servlet 的进一步封装,其最核心的组件是 DispatcherServlet,它是 Spring MVC 的前端控制器,主要负责对请求和响应的统一地处理和分发。Controller 接收到的请求其实就是 DispatcherServlet 根据一定的规则分发给它的。
Spring MVC 框架内部采用松耦合、可插拔的组件结构,具有高度可配置性,比起其他的 MVC 框架更具有扩展性和灵活性。此外,Spring MVC 的注解驱动(annotation-driven)和对 REST 风格的支持,也是它最具有特色的功能。
Spring MVC 是 Spring 框架的众多子项目之一,自 Spring 框架诞生之日起就包含在 Spring 框架中了,它可以与 Spring 框架无缝集成,在性能方面具有先天的优越性。对于开发者来说,Spring MVC 的开发效率要明显高于其它的 Web 框架,因此 Spring MVC 在企业中得到了广泛的应用,成为目前业界最主流的 MVC 框架之一。
Spring MVC 的常用组件如下表:
组件 | 提供者 | 描述 |
---|---|---|
DispatcherServlet | 框架提供 | 前端控制器,它是整个 Spring MVC 流程控制中心,负责统一处理请求和响应,调用其他组件对用户请求进行处理。 |
HandlerMapping | 框架提供 | 处理器映射器,根据请求的 url、method 等信息查找相应的 Handler。 |
Handler | 开发人员提供 | 处理器,通常被称为 Controller(控制器)。它可以在 DispatcherServlet 的控制下,对具体的用户请求进行处理。 |
HandlerAdapter | 框架提供 | 处理器适配器,负责调用具体的控制器方法,对用户发来的请求来进行处理。 |
ViewResolver | 框架提供 | 视图解析器,其职责是对视图进行解析,得到相应的视图对象。常见的视图解析器有 ThymeleafViewResolver、InternalResourceViewResolver 等。 |
View | 开发人员提供 | 视图,它作用是将模型(Model)数据通过页面展示给用户。 |
Spring MVC 具有以下特点:
在开始之前,确保已经完成以下环境配置:
接下来,我们将创建一个新的Java项目来搭建Spring MVC框架。
现在,我们将配置Spring MVC框架。
1、在项目中创建一个名为"WEB-INF"的文件夹,用于存放Web应用程序的配置文件。
2、在"WEB-INF"文件夹中创建一个名为"web.xml"的文件,用于配置Servlet和其他Web应用程序设置。以下是一个基本的"web.xml"文件示例:
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
/WEB-INF/applicationContext.xml
1
springmvc
/
在上述示例中,我们配置了一个名为"springmvc"的servlet,并将其映射到根URL("/")。我们还通过contextConfigLocation
参数指定了Spring MVC的配置文件位置。
3、在"WEB-INF"文件夹中创建一个名为"applicationContext.xml"的文件,用于配置Spring MVC框架的相关设置。以下是一个基本的"applicationContext.xml"文件示例:
在上述示例中,我们通过context:annotation-config
启用了Spring MVC的注解驱动,并使用context:component-scan
指定了需要扫描的基础包。我们还配置了一个视图解析器InternalResourceViewResolver
,用于解析JSP视图。
4、在"WEB-INF"文件夹中创建一个名为"views"的文件夹,用于存放JSP视图文件。
现在,我们将创建一个简单的控制器来处理用户请求。
1、在项目中创建一个名为"com.example"的包。
2、在"com.example"包中创建一个名为"HomeController.java"的类,作为我们的控制器。以下是一个基本的控制器示例:
package com.example;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HomeController {
@RequestMapping(value = "/", method = RequestMethod.GET)
public ModelAndView home() {
ModelAndView modelAndView = new ModelAndView("home");
modelAndView.addObject("message", "Hello, Spring MVC!");
return modelAndView;
}
}
在上述示例中,我们使用@Controller
注解标记了该类为控制器。通过@RequestMapping
注解,我们指定了处理根URL("/")的GET请求,并返回一个包含视图名和模型数据的ModelAndView
对象。
最后,我们将创建一个简单的JSP视图来显示响应。
在"views"文件夹中创建一个名为"home.jsp"的文件。以下是一个基本的JSP视图示例:
Spring MVC Example
${message}
在上述示例中,我们使用${message}
来展示从控制器传递过来的数据。
完成以上步骤后,就可以按照以下步骤部署和运行Spring MVC应用程序:
http://localhost:8080/
(根据Web服务器配置)来访问应用程序的根URL。当访问应用程序的根URL时,将会触发HomeController
中定义的home()
方法。该方法将返回"home"视图,并将"Hello, Spring MVC!"作为模型数据传递给视图。视图将显示该消息。
通过以上步骤,就成功搭建了一个简单的Spring MVC框架,并创建了一个处理请求和展示响应的控制器和视图。
需要注意的是,以上只是一个基本的Spring MVC框架搭建过程。在实际应用中,可能还涉及到更多的配置和功能,如数据持久化、表单处理、拦截器等。Spring MVC提供了丰富的功能和扩展点,能够构建复杂的Web应用程序。
黑马程序员SSM框架教程_Spring+SpringMVC+Maven高级+SpringBoot+MyBatisPlus企业实用开发技术