【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";  
    }  
}


相关文章
|
16天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
30 2
|
25天前
|
存储 前端开发 数据可视化
在实际项目中,如何选择使用 Flux 架构或传统的 MVC 架构
在实际项目中选择使用Flux架构或传统MVC架构时,需考虑项目复杂度、团队熟悉度和性能需求。Flux适合大型、高并发应用,MVC则适用于中小型、逻辑简单的项目。
|
2月前
|
设计模式 前端开发 Java
Spring MVC——项目创建和建立请求连接
MVC是一种软件架构设计模式,将应用分为模型、视图和控制器三部分。Spring MVC是基于MVC模式的Web框架,通过`@RequestMapping`等注解实现URL路由映射,支持GET和POST请求,并可传递参数。创建Spring MVC项目与Spring Boot类似,使用`@RestController`注解标记控制器类。
38 1
Spring MVC——项目创建和建立请求连接
|
2月前
|
Java 关系型数据库 MySQL
Maven——创建 Spring Boot项目
Maven 是一个项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,简化了项目的构建和管理过程。其核心功能包括项目构建和依赖管理,支持创建、编译、测试、打包和发布项目。Maven 仓库分为本地仓库和远程仓库,远程仓库包括中央仓库、私服和其他公共库。此外,文档还介绍了如何创建第一个 SpringBoot 项目并实现简单的 HTTP 请求响应。
132 1
Maven——创建 Spring Boot项目
|
2月前
|
Java 关系型数据库 MySQL
如何使用 maven 创建一个 Spring Boot项目
Maven 是一个强大的项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,提高开发效率。其核心功能包括项目构建和依赖管理。项目构建支持编译、测试、打包和发布等流程,而依赖管理则通过中央仓库、本地仓库和私有服务器获取和管理项目依赖。示例中展示了如何创建第一个 SpringBoot 项目并实现简单接口。
28 1
如何使用 maven 创建一个 Spring Boot项目
|
2月前
|
Java Apache Maven
Java/Spring项目的包开头为什么是com?
本文介绍了 Maven 项目的初始结构,并详细解释了 Java 包命名惯例中的域名反转规则。通过域名反转(如 `com.example`),可以确保包名的唯一性,避免命名冲突,提高代码的可读性和逻辑分层。文章还讨论了域名反转的好处,包括避免命名冲突、全球唯一性、提高代码可读性和逻辑分层。最后,作者提出了一个关于包名的问题,引发读者思考。
Java/Spring项目的包开头为什么是com?
|
3月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
2月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
184 2
|
4月前
|
缓存 Java Maven
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决
|
20天前
|
缓存 IDE Java
SpringBoot入门(7)- 配置热部署devtools工具
SpringBoot入门(7)- 配置热部署devtools工具
31 2
 SpringBoot入门(7)- 配置热部署devtools工具