【Spring】Spring MVC的项目准备和连接建立

简介: 【Spring】Spring MVC的项目准备和连接建立

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 规范的产品包括 TomcatWeblogicJettyJbossWebSphere 等,它们都被称为“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 主要关注有两个点:

  1. MVC
  2. 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 项目就可以感知到用户的请求,并给予响应。我们也是主要学习如何通过浏览器和用户程序进行交互,主要分为以下三个方面:

  1. 建立连接:将用户(浏览器)和 Java 程序连接起来,也就是访问一个地址能够调用到我们的 Spring 程序
  2. 请求:用户请求的时候会带一些参数,在程序中要想办法获取到参数,所以请求这块主要是获取参数的功能
  3. 响应:执行了业务逻辑之后,要把程序执行的结果返回给用户,也就是响应

比如用户区银行存款

  1. 建立连接:去柜台
  2. 请求:带着银行卡,身份证去存款
  3. 响应:银行返回一张存折

对于 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";  
    }  
}


相关文章
|
24天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
16天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
20天前
|
机器学习/深度学习 算法 大数据
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
2024“华为杯”数学建模竞赛,对ABCDEF每个题进行详细的分析,涵盖风电场功率优化、WLAN网络吞吐量、磁性元件损耗建模、地理环境问题、高速公路应急车道启用和X射线脉冲星建模等多领域问题,解析了问题类型、专业和技能的需要。
2577 22
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
|
18天前
|
人工智能 IDE 程序员
期盼已久!通义灵码 AI 程序员开启邀测,全流程开发仅用几分钟
在云栖大会上,阿里云云原生应用平台负责人丁宇宣布,「通义灵码」完成全面升级,并正式发布 AI 程序员。
|
3天前
|
JSON 自然语言处理 数据管理
阿里云百炼产品月刊【2024年9月】
阿里云百炼产品月刊【2024年9月】,涵盖本月产品和功能发布、活动,应用实践等内容,帮助您快速了解阿里云百炼产品的最新动态。
阿里云百炼产品月刊【2024年9月】
|
2天前
|
存储 人工智能 搜索推荐
数据治理,是时候打破刻板印象了
瓴羊智能数据建设与治理产品Datapin全面升级,可演进扩展的数据架构体系为企业数据治理预留发展空间,推出敏捷版用以解决企业数据量不大但需构建数据的场景问题,基于大模型打造的DataAgent更是为企业用好数据资产提供了便利。
163 2
|
20天前
|
机器学习/深度学习 算法 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
2024年中国研究生数学建模竞赛C题聚焦磁性元件磁芯损耗建模。题目背景介绍了电能变换技术的发展与应用,强调磁性元件在功率变换器中的重要性。磁芯损耗受多种因素影响,现有模型难以精确预测。题目要求通过数据分析建立高精度磁芯损耗模型。具体任务包括励磁波形分类、修正斯坦麦茨方程、分析影响因素、构建预测模型及优化设计条件。涉及数据预处理、特征提取、机器学习及优化算法等技术。适合电气、材料、计算机等多个专业学生参与。
1576 16
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
|
22天前
|
编解码 JSON 自然语言处理
通义千问重磅开源Qwen2.5,性能超越Llama
击败Meta,阿里Qwen2.5再登全球开源大模型王座
977 14
|
4天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
221 2
|
17天前
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
734 9