五大框架主要知识点总结(待完善)
来源:互联网 发布:未来房价发展趋势知乎 编辑:程序博客网 时间:2024/06/12 20:55
一、struts2:
处理一个请求的简单流程:
1 请求经过一系列过滤器filter
2 接着struts2核心过滤器FilterDispatcher被调用,询问ActionMapper来决定是否调用某个action
3 决定后,FilterDispatcher将请求交给ActionProxy
4 ActionProxy通过configurationManager查找框架的配置文件struts.xml,寻找匹配的Action
5 ActionProxy创建一个ActionInvocation实例,调用Action前后涉及拦截器intercepter的调用
特点:拥有独立的struts标签库,且支持ognl表达式;可通过ActionContext来访问ServletAPI
获得参数的方式:属性驱动,对象驱动,模型驱动
值栈(ValueStack):底层是map的数据结构,封装了很多域对象,key部分为root(一个栈),value部分为ActionCOntext数据中心
二、spring:
1 BeanFactory时Spring IOC的核心接口;ApplicationContext时beanFactory的子接口,扩展了很多功能
2 Spring AOP(面向切面思想)
思想:横向重复,纵向抽取
原理:动态代理(代理对象和被代理对象实现同一套接口),cglib代理(继承关系)
关键名词: 连接点(目标对象中所有可以增强的方法)
切入点(正在增强的方法)
通知(增强的代码)
切面(切入点+通知)
织入(增强过程)
代理(形成的代理对象)
3 事务:
特性:acid 原子性,一致性,隔离性,持久性
并发问题:脏读,幻读,不可重复读
隔离级别:读已提交,读未提交,可重复读,串行化
4 Spring管理事务的方式:XML配置文件(aop);注解(aop);编码式
三、hibernate:
一个完全的面向对象的orm(关系映射)框架
需要配置文件和映射文件
可以通过实体和映射文件创建数据库,也可以通过数据表根据映射创建实体对象
三种状态: 瞬时状态(无id,不在session缓存中)
持久化状态(有id,在session缓存中)
游离状态(有id,不在session缓存中)
三种查询方式:HQL(面向对象的查询方式) QBC (单表快捷查询)SQL
一级缓存:
程序先从hibernate框架中查询是否存在所需要的对象,如果有则直接返回缓存中的对象。如果没有,发送sql语句到数据库中查询,返回一个ResultSet,将ResultSet的内容
组装成一个对象一份存入session缓存,一份返回给程序
快照:
在返回ResultSet结果集并封装对象后,存入快照一份,当程序修改了对象,hibernate会将修改后的对象和缓存做对比,不一致则将修改同步到数据库中
四 SpringMVC
流程:
1 用户发送请求到前端控制器DispatcherServlet
2 前端控制器处理请求,项处理器适配器HandlerMapping寻找匹配的URL对应的Hander
3 返回一个处理器执行链给前端控制器
4 前端控制器项处理器适配器HandlerAdapter发送请求,执行队形的Handler
5 处理器适配器调用处理器执行逻辑,返回ModelAndView对象给前端控制器
6 前端控制器将视图传给视图解析器解析,返回View对象
7 前端控制器对视图进行渲染(将数据封装到JSP文件形成静态文件)返回给用户浏览器端
SpringMVC和Struts2区别:
入口:Struts2依靠核心过滤器Filter;SpringMVC依靠一个前端控制器Servlet
单例和多例:Struts2是多例 每次访问创建一个Action(注解Scope为prototype);SpringMVC为单例,通过每次访问映射方法的模板实现多线程
是否有值栈:Struts2设计了值栈,封装了很多域对象,实现前台与后台的数据共享;SpringMVC通过ModelAndView对象封装了Jsp路径和要传递的对象
返回给视图解析器,解析后在传给前端控制器进行渲染
五 Mybatis
主要是手写Sql语句实现对数据库的查询;核心配置文件 sqlMapCOnfig.xml;mapper.xml 记录了很多操作数据库的sql语句;
mapper.java 接口的方法与mapper.xml想对应;可以通过动态代理的方法创建接口实现类完成对sql语句的调用
流程:通过配置文件创建SqlSessionFactory会话工厂,再建立sqlSession会话对象
一级缓存: 每个sqlSession都有一块缓存区域,彼此互不影响;
当事务提交或出现增删改查的操作时,会清空缓存数据,避免脏读
处理一个请求的简单流程:
1 请求经过一系列过滤器filter
2 接着struts2核心过滤器FilterDispatcher被调用,询问ActionMapper来决定是否调用某个action
3 决定后,FilterDispatcher将请求交给ActionProxy
4 ActionProxy通过configurationManager查找框架的配置文件struts.xml,寻找匹配的Action
5 ActionProxy创建一个ActionInvocation实例,调用Action前后涉及拦截器intercepter的调用
特点:拥有独立的struts标签库,且支持ognl表达式;可通过ActionContext来访问ServletAPI
获得参数的方式:属性驱动,对象驱动,模型驱动
值栈(ValueStack):底层是map的数据结构,封装了很多域对象,key部分为root(一个栈),value部分为ActionCOntext数据中心
二、spring:
1 BeanFactory时Spring IOC的核心接口;ApplicationContext时beanFactory的子接口,扩展了很多功能
2 Spring AOP(面向切面思想)
思想:横向重复,纵向抽取
原理:动态代理(代理对象和被代理对象实现同一套接口),cglib代理(继承关系)
关键名词: 连接点(目标对象中所有可以增强的方法)
切入点(正在增强的方法)
通知(增强的代码)
切面(切入点+通知)
织入(增强过程)
代理(形成的代理对象)
3 事务:
特性:acid 原子性,一致性,隔离性,持久性
并发问题:脏读,幻读,不可重复读
隔离级别:读已提交,读未提交,可重复读,串行化
4 Spring管理事务的方式:XML配置文件(aop);注解(aop);编码式
三、hibernate:
一个完全的面向对象的orm(关系映射)框架
需要配置文件和映射文件
可以通过实体和映射文件创建数据库,也可以通过数据表根据映射创建实体对象
三种状态: 瞬时状态(无id,不在session缓存中)
持久化状态(有id,在session缓存中)
游离状态(有id,不在session缓存中)
三种查询方式:HQL(面向对象的查询方式) QBC (单表快捷查询)SQL
一级缓存:
程序先从hibernate框架中查询是否存在所需要的对象,如果有则直接返回缓存中的对象。如果没有,发送sql语句到数据库中查询,返回一个ResultSet,将ResultSet的内容
组装成一个对象一份存入session缓存,一份返回给程序
快照:
在返回ResultSet结果集并封装对象后,存入快照一份,当程序修改了对象,hibernate会将修改后的对象和缓存做对比,不一致则将修改同步到数据库中
四 SpringMVC
流程:
1 用户发送请求到前端控制器DispatcherServlet
2 前端控制器处理请求,项处理器适配器HandlerMapping寻找匹配的URL对应的Hander
3 返回一个处理器执行链给前端控制器
4 前端控制器项处理器适配器HandlerAdapter发送请求,执行队形的Handler
5 处理器适配器调用处理器执行逻辑,返回ModelAndView对象给前端控制器
6 前端控制器将视图传给视图解析器解析,返回View对象
7 前端控制器对视图进行渲染(将数据封装到JSP文件形成静态文件)返回给用户浏览器端
SpringMVC和Struts2区别:
入口:Struts2依靠核心过滤器Filter;SpringMVC依靠一个前端控制器Servlet
单例和多例:Struts2是多例 每次访问创建一个Action(注解Scope为prototype);SpringMVC为单例,通过每次访问映射方法的模板实现多线程
是否有值栈:Struts2设计了值栈,封装了很多域对象,实现前台与后台的数据共享;SpringMVC通过ModelAndView对象封装了Jsp路径和要传递的对象
返回给视图解析器,解析后在传给前端控制器进行渲染
五 Mybatis
主要是手写Sql语句实现对数据库的查询;核心配置文件 sqlMapCOnfig.xml;mapper.xml 记录了很多操作数据库的sql语句;
mapper.java 接口的方法与mapper.xml想对应;可以通过动态代理的方法创建接口实现类完成对sql语句的调用
流程:通过配置文件创建SqlSessionFactory会话工厂,再建立sqlSession会话对象
一级缓存: 每个sqlSession都有一块缓存区域,彼此互不影响;
当事务提交或出现增删改查的操作时,会清空缓存数据,避免脏读
阅读全文
0 0
- 五大框架主要知识点总结(待完善)
- 三大框架 主要知识点
- 待完善知识点
- Android动画使用总结(待完善)
- 递归总结(待完善)
- GNU Makefile学习专题(四) | GNU Make 常用内置函数的总结 | 零碎知识点的总结 | (待完善)
- java面试知识点整理之数据结构算法(待完善)
- 职业规划-大数据开发工程师(待完善)
- PHP扩展总结//待完善
- Hive_11. Join 总结 -- 待完善
- 查找方法总结---待完善
- 闲杂(待完善)
- EditText(待完善)
- TextView(待完善)
- Button(待完善)
- 布局(待完善)
- struts2入门学习知识点(待完善)
- 排序算法性能及选择总结(待完善)
- C语言学习历程(一)数据类型及变量之心得体会
- Hibernate(八)多表联查之双向一对一
- 简单实现多进程文件下载器
- HDU
- tomcat连接数与线程池概念
- 五大框架主要知识点总结(待完善)
- 371. Sum of Two Integers
- maven 报错
- Python学习摘要
- html5+css3
- hadoop-mapreduce进阶
- 网络编程(2)-socket
- Mysql数据库引擎区别
- 进程间的通信---共享内存