Spring MVC

前言:全程Spring Web MVC,是Web的一个框架,简称Spring MVC。

1.什么是MVC?

MVC是model view controller的缩写,是软件工程的一种软件设计架构,它把软件系统分成3个部分:模型,视图,控制器。

eg:

但是当前阶段的话,前后端大部分时候已经完全分离了,后端只专注于干后端的事,所以这里的view没有了,返回的就是view所需要的数据而不是页面了。

2.Spring MVC

Spring MVC是基于Spring实现的MVC(Web)框架,现如今的Spring MVC框架图:

学习Spring MVC,首先就是使用其中的注解。

3.Spring MVC注解

(1)建立连接

a.@RequestMapping

路由映射。进行Web开发的前提,需要传入路径(一般是:类路径+方法路径),方法和类都可以修饰,支持get和post请求,可以通过其中method属性对请求类型做出限制。

b.@RestController

返回数据。是由@RequestBody和@Controller,@Controller只是返回视图,加上@RequestBody就是返回数据了

有了这两个基础的注解,我们才能在网络上进行得以找到目标进行传输数据以及返回。

(2)请求

这里就是了解请求是如何进行传参的,传入的参数有很多类型:

ps:下面所有参数的类型在java中最好都用包装类,有时候,如果没有参数传来的时候,就是null,用基本类型来接收会报错,自动拆箱(会调用方法,报空指针异常)。

a.传递单个参数

类型需要和前端传入的参数类型一致,只有一个参数的时候不需要名称相同。

b.传递多个参数

传入顺序可以不同,但是对应的类型需要相同,这个需要参数名称相同,所以此时为了规避java对象中属性名不同的问题,就引入了@RequestParam,使用该注解,就可指定传入参数的名称,java中的属性名就可以随意取名;该注解中有required属性,可以设置当前参数是否为必传参数。

c.传递对象

需要保证传递的参数名称和参数类型和java对象中的变量匹配的上,不一定对象中全部属性传完,传需要的参数,其他未传的参数就是null,使用的时候按需查询使用。

d.传递数组

需要保证传入的所有参数类型和数组类型相同,参数名称和数组名称随意。

e.传递集合

如果是List,则需保证传递的所有参数类型和List中的类型相同。且必须要使用@RequestParam(否则会报错),才能使用集合来进行接收(针对同一类型的不同数据,浏览器会自动帮我封装成一个数组)

f.传递Json数据

需要使用@RequestBody,一般使用对象来进行接收。

g.获取URL中的数据

需要使用@PathVariable。

h.传递文件

需要使用@RequestPart,和MultiPartFile类来进行接收文件。

I.获取Cookie

法一:使用Spring内置HttpServletRequest对象来获取,通过getCookies方法。

法二:使用@CookieValue,使用该方式只能一个一个去拿。

j.获取Session

法一:使用Spring内置HttpServletResponse对象,并通过getSession来获取session对象,setAttribute方法来设置session中的属性值和getAttribute方法来获取session中的属性值

法二:使用@SessionAttribute来获取属性值(一步到位),加了此注解说明参数是一个必传值。

k.获取Header

法一:使用Spring内置HttpServletRequest对象来获取,通过gerHeader方法

法二:使用@RequestHeader来获取,需要注明Header的名称(是一个必传参数)。

(3)响应:

a.返回静态界面

@Controller:返回视图

b.返回数据

@RequestBody:作用在类上,就是类中所有方法返回数据;作用在方法上,就是对应的方法返回数据。

c.返回Json

返回是对象/集合,content-type:application/json(响应类型)

返回是String类型,content-type:text/html

d.设置状态码和报头

都是使用Spring内置HttpServletResponse对象来进行设置。

4.应用分层

一共有三层:

(1)表现层(controller):接收请求,返回响应

(2)业务逻辑层(service):主要进行逻辑运算和算术处理

(3)数据处理层(dao):数据的存储,读取,修改

应用分层的思想正是体现了高内聚低耦合,也就是同一个板块中元素之间的关系要紧密,不同板块中的元素之间的依赖程度越低越好。

5.Spring,Spring MVC和Spring Boot之间的差别

Spring:是一个开发应用框架,主要功能就是管理对象,以及对象之间的依赖关系,面向切面编程,数据库事务管理,数据访问,Web框架支持。

Spring MVC:是基于Spring实现的一个MVC框架,主要应用网络接口和Web应用,所以Spring MVC是一个web框架。

Spring Boot:是对Spring的进一步封装,是为了简化Spring应用开发而诞生的,使用该框架可以更降低上手难度,极大地提高开发效率,可以集成各种框架从而进行相关功能的开发,eg:想进行web开发就引入MVC,想进行数据库的相关操作,就可以引入mybaits(极大提高开发效率),所以它只是辅助简化应用开发的,让开发变得更简单,甚至不需要额外的web服务器(内置了tomcat:Http服务器),直接打成jar包就可以直接部署运行了。

总结:

Spring包含Spring MVC和Spring Boot,Spring Boot 又包含Spring MVC,Spring MVC是基于Spring实现的MVC框架,Spring Boot是基于Spring的一套快速上手开发的整合包。

相关推荐
草履虫建模3 小时前
力扣算法 1768. 交替合并字符串
java·开发语言·算法·leetcode·职场和发展·idea·基础
qq_297574676 小时前
【实战教程】SpringBoot 实现多文件批量下载并打包为 ZIP 压缩包
java·spring boot·后端
老毛肚6 小时前
MyBatis插件原理及Spring集成
java·spring·mybatis
学嵌入式的小杨同学6 小时前
【Linux 封神之路】信号编程全解析:从信号基础到 MP3 播放器实战(含核心 API 与避坑指南)
java·linux·c语言·开发语言·vscode·vim·ux
lang201509286 小时前
JSR-340 :高性能Web开发新标准
java·前端·servlet
Re.不晚6 小时前
Java入门17——异常
java·开发语言
缘空如是6 小时前
基础工具包之JSON 工厂类
java·json·json切换
追逐梦想的张小年7 小时前
JUC编程04
java·idea
好家伙VCC7 小时前
### WebRTC技术:实时通信的革新与实现####webRTC(Web Real-TimeComm
java·前端·python·webrtc
南极星10057 小时前
蓝桥杯JAVA--启蒙之路(十)class版本 模块
java·开发语言