【黑马程序员】SSM框架——SpringMVC

文章目录


前言

跟着B站的黑马程序员学习SSM框架,语言为java,目前是第二个学习内容
课程传送门:SSM框架——SpringMVC


一、SpringMVC 简介

1. SpringMVC 概述

  • SpringMVC 技术与 Servlet 技术功能等同,均属于 web 层开发技术
  • SpringMVC 是一种基于 Java 实现 MVC 模型的轻量级 Web 框架
  • 优点
    ① 使用简单,开发便捷(相对于 Servlet)
    ② 灵活性强

在这里插入图片描述

  • SpringMVC 是一种表现层框架技术
  • SpringMVC 用于进行表现层功能开发

2. 入门案例

2.1 入门案例步骤

2.1.1 导入坐标

在这里插入图片描述

2.1.2 创建控制类

在这里插入图片描述

2.1.3 创建配置类

在这里插入图片描述

2.1.4 初始化容器

在这里插入图片描述

2.2 入门案例实现

2.2.1 导入坐标

在这里插入图片描述

2.2.2 创建控制类

在这里插入图片描述

2.2.3 创建配置类

在这里插入图片描述

2.2.4 初始化容器

在这里插入图片描述

2.3 常见注解

2.3.1 @Controller

在这里插入图片描述

2.3.2 @RequestMapping

在这里插入图片描述

2.3.3 @ResponseBody

在这里插入图片描述

2.4 AbstractDispatcherServletInitializer 类

  • AbstractDispatcherServletInitializer 类是 SpringMVC 提供的快速初始化 web3.0 容器的抽象类
  • AbstractDispatcherServletInitializer 提供三个接口方法供用户实现
2.4.1 createServletApplicationContext( ) 方法

加载 springMVC 容器配置
在这里插入图片描述

2.4.2 getServletMappings( ) 方法

设置哪些请求归属 springMVC 处理
在这里插入图片描述

2.4.3 createRootApplicationContext( ) 方法

加载 spring 容器配置
在这里插入图片描述

2.5 入门程序总结

在这里插入图片描述

3. 入门案例工作流程分析

3.1 入门案例容器初始化工作流程

在这里插入图片描述

3.2 入门案例单次请求工作流程

在这里插入图片描述

4. Controller 加载控制与业务 bean 加载控制

在这里插入图片描述
思考:因为功能不同,如何避免 Spring 错误的加载到 SpringMVC 的 bean?

:加载 Spring 控制的 bean 的时候,排除掉 SpringMVC 控制的 bean

4.1 SpringMVC 相关 bean 加载控制

  • SpringMVC 加载的 bean 对应的包均在 com.itheima.contriller 包内

4.2 Spring 相关的 bean 加载控制

① Spring 加载方式一
  • Spring 加载的 bean 设定扫描范围为 com.itheima,排除掉 controller 包内的 bean
    在这里插入图片描述
② Spring 加载方式二
  • Spring 加载的 bean 设定扫描范围为精确范围,例如 service 包、dao 包等
    在这里插入图片描述
③ Spring 加载方式三
  • 不区分 Spring 与 SpringMVC 的环境,加载到同一个环境中
    在这里插入图片描述
简化方式

在这里插入图片描述

4.3 常见注解

@ComponentScan

在这里插入图片描述

5. PostMan 工具介绍

5.1 PostMan 简介

在这里插入图片描述

5.2 PostMan 基础操作

在这里插入图片描述

二、请求与响应

1. 请求映射路径

思考:团队多人开发,每人设置不同的请求路径,冲突问题如何解决?

:设置模块名作为请求路径前缀

1.1 常用注解

1.1.1 @RequestMapping

在这里插入图片描述

1.2 请求方式

  • Get 请求
  • Post 请求

1.2.1 Get 请求传参

在这里插入图片描述

1.2.2 Post 请求参数

在这里插入图片描述

1.2.3 Post 请求中文乱码处理

在这里插入图片描述

2. 请求参数

2.1 参数种类

2.1.1 普通参数
① 地址参数名与形参变量名相同

在这里插入图片描述

② 地址参数名与形参变量名不同

在这里插入图片描述

2.1.2 POJO 类型参数

在这里插入图片描述

2.1.3 嵌套 POJO 类型参数
① 嵌套 POJO 参数概述

在这里插入图片描述

② 嵌套 POJO 类型参数的使用

在这里插入图片描述

2.1.4 数组类型参数

在这里插入图片描述

2.1.5 集合类型参数

在这里插入图片描述

2.2 常见注解

2.2.1 @RequestParam

在这里插入图片描述

2.3 传递 json 数据

2.3.1 创建步骤
① 添加 json 数据转换相关坐标

在这里插入图片描述

② 设置发送 json 数据

在这里插入图片描述

③ 开启自动转换 json 数据的支持

在这里插入图片描述
注意@EnableWebMvc 注解功能强大,该注解整合了多个功能,此处仅使用其中一部分功能,即 json 数据进行自动类型转换

④ 设置接收 json 数据

在这里插入图片描述

2.3.2 常见注解

① @EnableWebMvc

在这里插入图片描述

② @RequestBody

在这里插入图片描述

2.3.3 传递 json 数据类型

① json 数组

在这里插入图片描述

② json 对象(POJO)

在这里插入图片描述

③ json 数组(POJO)

在这里插入图片描述

2.3.4 @RequestBody 与 @RequestParam 区别

在这里插入图片描述

3. 日期类型参数传递

在这里插入图片描述

3.1 常见注解

@DateTimeFormat

在这里插入图片描述

3.2 类型转换器

在这里插入图片描述

4. 响应

4.1 响应页面

在这里插入图片描述

4.2 响应数据

4.2.1 文本数据

在这里插入图片描述

4.2.2 json 数据
① 对象转 json

在这里插入图片描述

② 对象集合转 json 数组

在这里插入图片描述

4.3 常见注解

@ResponseBody

在这里插入图片描述

4.4 类型转换器

4.4.1 HttpMessageConverter 接口

在这里插入图片描述

4.4.2 实现方式

在这里插入图片描述

三、REST 风格

1. REST 简介

在这里插入图片描述

1.1 REST 风格简介

在这里插入图片描述
在这里插入图片描述

2. RESTful 入门案例

2.1 RESTful 入门案例格式

① 设定 http 请求动作

在这里插入图片描述

② 设定请求参数

在这里插入图片描述

2.2 常见注解

@RequestMapping

在这里插入图片描述

@PathVariable

在这里插入图片描述

2.3 @RequestBody、@RequestParam、@PathVariable 的区别

在这里插入图片描述

3. REST 快速开发

在这里插入图片描述

3.1 常见注解

@RestController

在这里插入图片描述

@(Get、Post、Delete、Put)Mapping

在这里插入图片描述

4. 案例:基于 RESTful 页面数据交互

4.1 案例思路

4.1.1 制作 SpringMVC 控制器,并通过 PostMan 测试接口功能

在这里插入图片描述

4.1.2 设置对静态资源的访问

在这里插入图片描述

4.1.3 前端页面通过异步提交访问后台控制器

在这里插入图片描述

4.2 具体操作

4.2.1 先做后台功能,开发接口并调通接口
① 进行 SpringMVC 配置环境
  1. 配置类
  2. 扫 Controller
  3. 开启 @EnableWebMvc
② domain 中的实体类
  1. 图书 book 类
③ 在 controller 中开发

在这里插入图片描述

4.2.2 再做页面异步调用,确认功能可以正常访问
  1. 把页面添加进来
  2. SpringMVC 容器中拦截了所有,进行资源过滤
    在这里插入图片描述
4.2.3 最后完成页面数据展示

在这里插入图片描述

四、SSM 整合

内容过长,另起篇幅。
传送门点击前往:SSM 整合

五、拦截器

1. 拦截器概念

  • 拦截器(Interceptor)是一种动态拦截方法调用的机制
  • 作用
    ① 在指定的方法调用前后执行预先设定的代码
    ② 阻止原始方法的执行

在这里插入图片描述

1.1 拦截器与过滤器区别

拦截器 Filter过滤器 Interceptor
归属Servlet 技术SpringMVC 技术
拦截内容所有访问进行增强仅针对 SpringMVC 的访问进行增强

2. 入门案例

2.1 案例执行步骤

① 声明拦截器的 bean,并实现 HandleInterceptor 接口
在这里插入图片描述

② 定义配置类,继承 WebMvcConfigurationSupport,实现 addInterceptor 方法
在这里插入图片描述

③ 添加拦截器并设定拦截的访问路径,路径可以通过可变参数设置多个
在这里插入图片描述

④ 使用标准接口 WebMvcConfigurer 简化开发
在这里插入图片描述

2.1 执行流程

在这里插入图片描述

3. 拦截器参数

3.1 前置处理

在这里插入图片描述

3.2 后置处理

在这里插入图片描述

3.3 完成后处理

在这里插入图片描述

4. 拦截器链

4.1 拦截器链条配置方式

直接把多个拦截器按顺序填写,执行时会按照运行顺序前行。
在这里插入图片描述

4.2 拦截器链的运行顺序

  • preHandle:与配置顺序相同,必定运行
  • postHandle:与配置顺序相反,可能不运行
  • afterCompletion:与顺序配置相反,可能不运行

在这里插入图片描述


总结

以上就是本章要讲的内容,本文仅仅简单复述了老师讲课的文本内容,内容有误麻烦联系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值