文章目录
- 1. 什么是 Spring Web MVC
-
- 1.1 MVC 定义
- 1.2 什么是 Spring MVC
- 2. 学习 Spring MVC
-
- 2.1 项目准备
- 2.2 建立连接
1. 什么是 Spring Web MVC
Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从已开是就包含在 Spring 框架中。它的正式名称“Spring Web MVC”是自其源模块的名称(Spring-webmvc),但它通常被称为“Spring mvc”
[!quote] 什么是
Servlet
Servlet
是一种实现动态页面的技术。准确来讲Servlet
是一套Java Web
开发的规范,或者说是一套 JavaWeb 开发的技术标准。只有规范并不能做任何事,必须要有人去实现它。所谓实现Servlet
规范,就是真正编写代码去实现Servlet
规范提到的各种功能,包括类、方法、属性等。Servlet
规范是开放的,除了Sun
公司,其他公司也能实现Servlet
规范,目前常见的实现了Servlet
规范的产品包括Tomcat
、Weblogic
、Jetty
、Jboss
、WebSphere
等,它们都被称为“Servlet
容器”。Servlet
容器用来管理程序猿编写的Servlet
类
从上述定义我们可以得出一个信息:Spring Web MVC
是一个 Web
框架。下面我们简称“Spring MVC
”
然而要真正理解什么是 Spring MVC
,我们首先要搞清楚什么是 MVC
1.1 MVC 定义
MVC 是 Model View Controller 的缩写,它是软件工程中的一种软件架构设计模式,它把软件系统分为:模型、视图和控制器三个部分
-
View
(视图):指在应用程序中专门用来与浏览器进行交互,展示数据的资源 -
Model
(模型):是应用程序的主体部分,用来处理程序中数据逻辑的部分 -
Controller
(控制器):可以理解为一个分发器,用来决定视图发来的请求,需要用哪一个模型来处理,以及处理完后需要跳回哪一个视图。即用来连接视图和模型
我们去饭店吃饭,我们坐下,服务员让我们点单。点完之后,服务员就把单给到前台,然后前台把单给到后厨
- 服务员 ==>
View
,接待我们的- 前台==>
Contriller
,出现一些冲突(菜不对等等情况),就会去前台- 后厨 ==>
Model
,菜做好之后,把菜品给到前台,前台再把菜给到服务员,服务员给我们上菜
我们是和服务员进行交互,前台是控制他们两个之间的关系
去面试,HR 和部门的负责人对接。候选人到达公司,HR 接待;HR 去找部门的负责人安排面试;部门的负责人安排一个小伙去进行面试
- HR ==>
View
- 部门负责人 ==>
Controller
- 面试官 ==>
Model
1.2 什么是 Spring MVC
MVC
是一种设计模式,也是一种思想,而 Spring MVC
是对 MVC
思想的具体实现。除此之外,Spring MVC
还是一个 Web
框架
总结来说:Spring MVC
是一个实现了 MVC
模式的 Web
框架
所以,Spring MVC
主要关注有两个点:
MVC
-
Web
框架
Spring MVC
全称是Spring Web MVC
其实,Spring MVC
我们在前面已经用过了,在创建 Spring Boot
项目的时候,我们勾选的 Spring Web
框架,其实就是 Spring MVC
框架:
可以看到,Spring Web
的介绍是:
- Build web, including RESTful, applications using Spring MVC. Uses Apache Tomcat as the default embedded container
- 使用
Spring MVC
构建Web
应用程序,包括 RESTful 应用程序。使用 Apache Tomcat 作为默认的嵌入式容器。
前面创建的不是 Spring Boot
项目吗?为什么又变成了 Spring MVC
项目?它们之间到底有着什么样的关系?
Spring Boot
是 2014 年发布的,Spring
是 2004 年发布的,在 2014 发布之前,就不能用 Spring
实现 MVC
了吗?显然不是
-
Spring Boot
只是实现Spring MVC
的其中一种方式而已 -
Spring Boot
可以添加很多依赖,借助这些依赖实现不同的功能。Spring Boot
通过添加Spring Web MVC
框架,来实现Web
功能
比如,厨房可以用来做饭,但真实实现做饭功能的是火以及各种做饭相关的工作和食材。厨房就好比是
Spring Boot
,厨房可以装柜子,实现收纳功能,装燃气灶,实现做饭功能。做饭这个事,就是MVC
,在几千年前,有火就可以实现做饭
不过 Spring
在实现 MVC
的时候,也结合自身项目的特点,做了一些改变,相对而言,下面这个图也许更加适合一些
不过核心没变
- 比如上面的例子中,去饭店吃饭。一些饭店是前厅来负责接待客户,帮助客户点餐,也就是
Controller
来负责接收用户的请求- 去公司面试,直接由面试官来接待候选人,省去了中间
HR
的交接环节
2. 学习 Spring MVC
既然是 Web
框架,那么当用户在浏览器中输入了 URL
之后,我们的 Spring MVC
项目就可以感知到用户的请求,并给予响应。我们也是主要学习如何通过浏览器和用户程序进行交互,主要分为以下三个方面:
-
建立连接:将用户(浏览器)和
Java
程序连接起来,也就是访问一个地址能够调用到我们的Spring
程序 - 请求:用户请求的时候会带一些参数,在程序中要想办法获取到参数,所以请求这块主要是获取参数的功能
- 响应:执行了业务逻辑之后,要把程序执行的结果返回给用户,也就是响应
比如用户区银行存款
- 建立连接:去柜台
- 请求:带着银行卡,身份证去存款
- 响应:银行返回一张存折
对于 Spring MVC
来说,掌握了以上三个功能就相当于掌握了 Spring MVC
2.1 项目准备
Spring MVC
项目创建和 Spring Boot
创建项目相同,在创建的时候选择 Spring Web
就相当与创建了 Spring MVC
的项目
在项目创建的时候,勾选上 Spring web
模块即可,如下图所示:
2.2 建立连接
在 Spring MVC 中使用 @RequestMapping
来实现 URL
路由映射,也就是浏览器连接程序的作用
创建一个 UserController
类,实现用户通过浏览器和程序的交互,具体实现代码如下:
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@RequestMapping("/sayHello")
public String sayHi() {
return "hello, spring mvc";
}
}
- 方法名和路径名称无需一致
- 接下来访问:
http://127.0.0.1:8080/sayHi,就可以看到程序返回的数据了