文章目录
- 前言
- 一、SpringMVC 简介
- 二、请求与响应
- 三、REST 风格
- 四、SSM 整合
- 五、拦截器
- 总结
前言
跟着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 配置环境
- 配置类
- 扫 Controller
- 开启 @EnableWebMvc
② domain 中的实体类
- 图书 book 类
③ 在 controller 中开发
4.2.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:与顺序配置相反,可能不运行
总结
以上就是本章要讲的内容,本文仅仅简单复述了老师讲课的文本内容,内容有误麻烦联系。