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

相关推荐
所待.383几秒前
JavaEE之线程初阶(上)
java·java-ee
Winston Wood4 分钟前
Java线程池详解
java·线程池·多线程·性能
手握风云-9 分钟前
数据结构(Java版)第二期:包装类和泛型
java·开发语言·数据结构
喵叔哟29 分钟前
重构代码中引入外部方法和引入本地扩展的区别
java·开发语言·重构
尘浮生35 分钟前
Java项目实战II基于微信小程序的电影院买票选座系统(开发文档+数据库+源码)
java·开发语言·数据库·微信小程序·小程序·maven·intellij-idea
不是二师兄的八戒1 小时前
本地 PHP 和 Java 开发环境 Docker 化与配置开机自启
java·docker·php
爱编程的小生1 小时前
Easyexcel(2-文件读取)
java·excel
带多刺的玫瑰1 小时前
Leecode刷题C语言之统计不是特殊数字的数字数量
java·c语言·算法
计算机毕设指导62 小时前
基于 SpringBoot 的作业管理系统【附源码】
java·vue.js·spring boot·后端·mysql·spring·intellij-idea
Gu Gu Study2 小时前
枚举与lambda表达式,枚举实现单例模式为什么是安全的,lambda表达式与函数式接口的小九九~
java·开发语言