总结
Spring MVC
- Spring MVC 是 Spring 给我们提供的一个用于简化 Web 表现层开发的框架,是对Servlet的封装
- 第一部分:Spring MVC应用
- [理解] 回顾对Spring MVC 的认知
- 从三层架构&MVC模式引入
- Spring MVC是什么
- 本质:Spring MVC 本质是对servlet的封装,简化了我们serlvet的开发
- 作用:1)接收请求 2)返回响应,跳转页面
- Spring MVC 工作机制
- [掌握] Spring MVC 开发过程(编程模型)
- 1)配置DispatcherServlet前端控制器
- 2)开发处理具体业务逻辑的Handler(@Controller、@RequestMapping)
- 3)xml配置文件配置controller扫描,配置springmvc三大件
- 4)将xml文件路径告诉Spring MVC(DispatcherServlet)
- [理解] Spring MVC 的请求处理流程
- [了解] Spring MVC 九大件
- HandlerMapping(处理器映射器)
- HandlerAdapter(处理器适配器)
- HandlerExceptionResolver(处理器异常解析器)
- ViewResolver(视图解析器)
- RequestToViewNameTranslator(请求视图名转换器)
- LocaleResolver(区域化解析器)
- ThemeResolver(主题解析器)
- MultipartResolver(多部件解析器)
- FlashMapManager(闪存管理器)
- [掌握] Spring MVC 开发过程(编程模型)
- [掌握] Spring MVC 请求参数绑定
- Servlet API
- 绑定简单类型参数
- 绑定Pojo类型参数
- 绑定Pojo包装对象参数
- 绑定日期类型参数(需要配置自定义类型转换器,实现Converter接口)
- [掌握] Spring MVC 对Restful风格请求的支持
- @PathVariable注解的使用
- [掌握] Spring MVC 对Ajax Json 的支持
- @RequestBody
- @ResponseBody
- @ResponseBody注解的作用是将Handler方法返回的对象转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据
- 注意:在使用此注解之后不会再走视图处理器,而是直接将数据写入到输出流中,他的效果等同于通过response对象输出指定格式的数据
- [理解] 回顾对Spring MVC 的认知
- 第二部分:Spring MVC 高级技术
- [掌握]拦截器(Inteceptor)
- 监听器、过滤器和拦截器对比
- 拦截器的执行流程
- 单个拦截器
- 多个拦截器
- 自定义拦截器(实现HandlerInterceptor接口)
- [掌握]处理Multipart形式的数据
- 注意配置MultipartResolver,id固定为multipartResolver
- [掌握]异常处理机制
- [了解]基于Flash属性的跨重定向请求数据传递
- [掌握]拦截器(Inteceptor)
- 第三部分:手写 MVC 框架
- [理解]思路梳理
- [掌握]编码部分
- 第四部分:源码剖析
- 前端控制器DispatcherServlet的代码结构
- 重要时机点分析
- Handler方法的执行时机
- 页面渲染时机(打断点并观察调用栈)
- 得出结论
- SpringMVC处理请求的流程即为org.springframework.web.servlet.DispatcherServlet#doDispatch方法的执行过程
- 1)调用getHandler()获取到能够处理当前请求的执行链 HandlerExecutionChain(Handler+拦截器)
- 但是如何去getHandler的?后面进行分析
- 2)调用getHandlerAdapter();获取能够执行1)中Handler的适配器
- 但是如何去getHandlerAdapter的?后面进行分析
- 3)适配器调用Handler执行ha.handle(总会返回一个ModelAndView对象)
- 4)调用processDispatchResult()方法完成视图渲染跳转
- 核心步骤剖析
- 核心步骤getHandler方法剖析
- 核心步骤getHandlerAdapter方法剖析
- 核心步骤ha.handle方法剖析
- 核心步骤processDispatchResult方法剖析
- SpringMVC九大组件初始化
- 第五部分:SSM 整合
- 注意方法策略!!!
- 整合策略
- SSM = Spring + SpringMVC + Mybatis = (Spring + Mybatis)+ SpringMVC
- 先整合 Spring + Mybatis
- 然后再整合 SpringMVC
- Mybatis整合Spring整合目标
- 数据库连接池以及事务管理都交给Spring容器来完成
- SqlSessionFactory对象应该放到Spring容器中作为单例对象管理
- Mapper动态代理对象交给Spring管理,我们从Spring容器中直接获得Mapper的代理对象
- 再整合SpringMVC
- 思路:在已有工程基础之上开发一个SpringMVC入门案例而已
Spring Data Jpa
- Spring Data Jpa 是应用于Dao层的一个框架,简化数据库开发的,作用和Mybatis框架一样,但是在使用方式和底层机制是有所不同的。最明显的一个特点,Spring Data Jpa 开发Dao的时候,很多场景我们连sql语句都不需要开发。由Spring出品。
- 第一部分:Spring Data JPA 介绍回顾
- 什么是 Spring Data JPA
- Spring Data JPA 是 Spring 基于JPA 规范的基础上封装的一套 JPA 应用框架,可使开发者用极简的代码即可实现对数据库的访问和操作。它提供了包括增删改查等在内的常用功能!学习并使用 Spring Data JPA 可以极大提高开发效率。
- 说明:Spring Data JPA 极大简化了数据访问层代码。
- 如何简化呢?使用了Spring Data JPA,我们Dao层中只需要写接口,不需要写实现类,就自动具有了增删改查、分页查询等方法。
- 使用Spring Data JPA 很多场景下不需要我们自己写sql语句
- 什么是 Spring Data JPA
- 第二部分:Spring Data JPA、JPA规范和Hibernate之间的关系
- 第三部分:Spring Data JPA 应用
- 开发步骤
- 创建工程导入坐标(Java框架于我们而言就是一堆jar)
- 配置 Spring 的配置文件(配置指定框架执行的细节)
- 编写实体类 Resume,使用 JPA 注解配置映射关系
- 编写一个符合 Spring Data JPA 的 Dao 层接口(ResumeDao接口)
- public interface ResumeDao extends JpaRepository<Resume,Long>, JpaSpecificationExecutor<Resume>
- 操作 ResumeDao 接口对象完成 Dao 层开发
- Dao层应用方式
- 调用继承的接口中的方法 findOne(),findById()等
- 可以引入jpql
- 可以引入原生的sql语句
- 可以在接口中自定义方法,而且不必引入jpql或者sql语句,这种方式叫做方法命名规则查询,比如:findByNameLikeAndAddress
- 动态查询Specification
- 开发步骤
- 第四部分:Spring Data JPA 执行过程源码分析