五大框架主要知识点总结(待完善)

来源:互联网 发布:未来房价发展趋势知乎 编辑:程序博客网 时间: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都有一块缓存区域,彼此互不影响;
            当事务提交或出现增删改查的操作时,会清空缓存数据,避免脏读
原创粉丝点击