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 各层的职责如下:
- Model:负责对请求进行处理,并将结果返回给 Controller;
- View:负责将请求的处理结果进行渲染,展示在客户端浏览器上;
- Controller:是 Model 和 View 交互的纽带;主要负责接收用户请求,并调用 Model 对请求处理,然后将 Model 的处理结果传递给 View。
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 的常用组件
Spring MVC 的常用组件如下表:
组件 | 提供者 | 描述 |
---|---|---|
DispatcherServlet | 框架提供 | 前端控制器,它是整个 Spring MVC 流程控制中心,负责统一处理请求和响应,调用其他组件对用户请求进行处理。 |
HandlerMapping | 框架提供 | 处理器映射器,根据请求的 url、method 等信息查找相应的 Handler。 |
Handler | 开发人员提供 | 处理器,通常被称为 Controller(控制器)。它可以在 DispatcherServlet 的控制下,对具体的用户请求进行处理。 |
HandlerAdapter | 框架提供 | 处理器适配器,负责调用具体的控制器方法,对用户发来的请求来进行处理。 |
ViewResolver | 框架提供 | 视图解析器,其职责是对视图进行解析,得到相应的视图对象。常见的视图解析器有 ThymeleafViewResolver、InternalResourceViewResolver 等。 |
View | 开发人员提供 | 视图,它作用是将模型(Model)数据通过页面展示给用户。 |
Spring MVC 的特点
Spring MVC 具有以下特点:
- Spring MVC 是 Spring 家族原生产品,可以与 IoC 容器等 Spring 基础设施无缝对接;
- Spring MVC 支持各种视图技术,例如 JSP、Thymeleaf、 JSP 和 FreeMaker 等。
- Spring MVC 基于原生的 Servlet 实现,通过功能强大的前端控制器 DispatcherServlet,对请求和响应进行统一处理;
- Spring MVC 对表示层各细分领域需要解决的问题全方位覆盖,并提供一整套全面的解决方案;
- 代码清新简洁,大幅度提升开发效率;
- 内部组件化程度高,可插拔式组件即插即用,想要使用什么功能,配置相应组件即可;
- 性能卓著,尤其适合现代大型、超大型互联网项目的开发。
那么应该如何搭建Spring MVC框架呢?
包括配置环境、创建项目、配置框架等。
一、环境配置
在开始之前,确保已经完成以下环境配置:
- 安装Java开发工具包(JDK):确保电脑上已经安装了JDK,并正确配置了JAVA_HOME环境变量。
- 安装Java开发工具(IDE):可以选择Eclipse、IntelliJ IDEA等Java开发工具作为IDE。
- 下载Spring MVC框架:可以从Spring官方网站(https://spring.io )下载最新版本的SpringMVC框架。
二、创建项目
接下来,我们将创建一个新的Java项目来搭建Spring MVC框架。
- 打开IDE,并创建一个新的Java项目。
- 在项目中创建一个名为"lib"的文件夹,用于存放框架的JAR文件。
- 将从Spring官方网站下载的Spring MVC框架的JAR文件复制到"lib"文件夹中。
三、配置框架
现在,我们将配置Spring MVC框架。
1、在项目中创建一个名为"WEB-INF"的文件夹,用于存放Web应用程序的配置文件。
2、在"WEB-INF"文件夹中创建一个名为"web.xml"的文件,用于配置Servlet和其他Web应用程序设置。以下是一个基本的"web.xml"文件示例:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<!-- 配置DispatcherServlet -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
在上述示例中,我们配置了一个名为"springmvc"的servlet,并将其映射到根URL("/")。我们还通过contextConfigLocation
参数指定了Spring MVC的配置文件位置。
3、在"WEB-INF"文件夹中创建一个名为"applicationContext.xml"的文件,用于配置Spring MVC框架的相关设置。以下是一个基本的"applicationContext.xml"文件示例:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 启用Spring MVC注解驱动 -->
<context:annotation-config/>
<context:component-scan base-package="com.example"/>
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
在上述示例中,我们通过context:annotation-config
启用了Spring MVC的注解驱动,并使用context:component-scan
指定了需要扫描的基础包。我们还配置了一个视图解析器InternalResourceViewResolver
,用于解析JSP视图。
4、在"WEB-INF"文件夹中创建一个名为"views"的文件夹,用于存放JSP视图文件。
四、创建Controller
现在,我们将创建一个简单的控制器来处理用户请求。
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视图示例:
<!DOCTYPE html>
<html>
<head>
<title>Spring MVC Example</title>
</head>
<body>
<h1>${message}</h1>
</body>
</html>
在上述示例中,我们使用${message}
来展示从控制器传递过来的数据。
六、部署和运行
完成以上步骤后,就可以按照以下步骤部署和运行Spring MVC应用程序:
- 将项目部署到Web服务器(如Tomcat)中。将整个项目目录打包为WAR文件,然后将WAR文件部署到Web服务器的webapps目录下。
- 启动Web服务器。根据使用的Web服务器不同,启动命令可能有所不同。
- 在Web浏览器中访问应用程序。使用URL
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企业实用开发技术