当前位置: 首页 > news >正文

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的一套快速上手开发的整合包。

 


http://www.mrgr.cn/news/20540.html

相关文章:

  • golang学习笔记05——golang协程池,怎么实现协程池?
  • langchain 《斗破苍穹》智谱 RAG 问题搜索
  • typescript 学习笔记
  • 内核链表
  • 探索数据变换:Transform在数据分析中的重要性
  • SpringBoot学习(7)(Bean对象注册)(自定义组合注解)
  • 接口测试面试题,等你来看
  • PPT图片怎么去除背景?用AI智能抠图轻松搞定!
  • Python中的继承艺术:解锁代码复用的无限可能
  • 分布式系统漫谈:从一致到共识
  • 汇编语言在虚拟机中输出“Hello World!”
  • python科学计算:NumPy 简介与安装
  • Unity界面、组件以及脚本
  • [记录]-js中的==运算符和===运算符。
  • 加密与安全_ sm-crypto 国密算法sm2、sm3和sm4的Java库
  • Java【数组】
  • 国际标准图像分辨率测试ISO12233 - 2017中文翻译
  • 分享7款实现社会实践报告AI生成论文网站
  • boost和buck-boost拓扑原理
  • TinyWebSever源码逐行注释()_简单代码的整合