SSH框架

struts原理:
        MVC简介:   Model—模型:负责系统的状态和业务逻辑javabean  
        View—视图:负责系统的视图呈现jsp  
        Controller—控制: 负责系统的逻辑控制servlet  
        核心的原则:   Jsp页面不出现java代码,servlet不出现html的东西。
传统的MVC架构:
       JSP-->VIEW   Servlet-->Controller   JavaBean-->Model
传统的流程图:
       客户端的Request请求到达servlet,获取用户输入,set到model中,model负责取值也业务逻辑,然后由view层get数据更新view,发送到client。
Struts架构:    
        Jsp+struts标签库-->View    ActionBean    
        ActionFormBean|-->Model    ActionServlet  
        AactionMapping |-->Controller
Struts流程:
        Controller作为接受所有客户端请求的入口点,由ActionServlet来决定需要那个动作类来执行相应的操作,同时通知 ActionFormBean来封装用户的表单输入,同时提交给ActionBean执行相应的业务逻辑,通过ActionMapping来决定需要反馈 给Client什么。 注意的事情:     Struts的模型主要有Action Bean 和 ActionForm Bean ,Action中封装了简单的逻辑操作。较为复杂的逻辑放在JavaBean或者EJB中来完成,然后在Action中调用,因此Action是解决“做 什么”,由其他的组件如(JavaBean)来解决“怎么做”的问题。     ActionForm封装了用户的表单输入,因此Action不用和表单交互,直接和ActionForm交互就可以了! Struts标签和ActionForm的元素之间一一映射
工作流程:
        struts1: 发布Struts Web服务时,根据web.xml初始化ActionServlet,ActionContext等内容. 在接到一个HttpRequest请求后,ActionServlet 根据struts-config.xml中的配置内容,将请求的参数传到对应的Formbean中,并设置session(开发中没有使用 Formbean).然后根据请求中的Action参数,在struts-config.xml中查找指定的Action,并调用此Action来处理请 求.根据Action的处理结果,会返回一个forward变量,此时通过mapping.findForward()查找出对应的forward所标示 的Action或者JSP页面(开发中没有转到另一个Action),将请求转到下一个处理.如果是forward指向JSP页面,则输出到前台.
         Struts2:: (1)客户端提交一个HttpServletRequest请求(.action或JSP页面) (2)请求被提交到一系列Filter过滤器,如ActionCleanUp和FilterDispatcher等 (3)FilterDispatcher是Struts2控制器的核心,它通常是过滤器链中的最后一个过滤器 (4)请求发到FilterDispatcher后,FilterDispatcher询问ActionMapper是否需要调用某个Action来处理 这个Request(一般根据URL后缀是否为.action来判断) (5)如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求交到ActioProxy,由其进行处理. (6)ActionProxy通过Configuration Manager(它会访问struts.xml)询问框架的配置文件,找到需要调用的Action类. (7)ActionProxy创建一个ActionInvocation实例,而ActionInvocation通过代理模式调用Action,(在调 用之前会根据配置文件加载相关的所有Interceptor拦截器) (8)Action执行完毕后,返回一个result字符串,此时再按相反的顺序通过Interceptor拦截器. (9) 最后ActionInvocation负责根据struts.xml中配置的result元素,找到与返回值对应的result,决定进行下一步输出.   
        简单的说struts2就是个单控制器,覆盖了以前的servlet。jsp里面的请求,通过单控制器的拦截,查看struts.xml查找你要响应的 Action。在Action里面处理事务,然后return一个参数(这个参数在XML里面配置,配置需要返回的界面)。

hibernate原理:
        Hibernate的核心是ORM,对象与关系映射。一对一,一对多,多对多。
        
Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了轻量级的对象封装,不仅提供了从 Java 类到数据表之间的映射,也提供了数据查询和恢复机制。 
        1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件//读取配置文件
        2.由hibernate.cfg.xml中的<mapping resource="com/xx/User.hbm.xml"/>读取并解析映射信息//读取映射信息
        3.通过config.buildSessionFactory();//创建SessionFactory
        4.sessionFactory.openSession();//打开Sesssion
        5.session.beginTransaction();//创建事务Transation
        6.persistent operate持久化操作
        7.session.getTransaction().commit();//提交事务
        8.关闭Session
        9.关闭SesstionFactory  
Hibernate的三种状态:
        瞬时状态,持久化状态,游离状态。
        举个例子我们把数据库比作一个登记薄,
当我们把信息登记到登记簿上的时候,这个过程就是持久化的过程。当登记完成之后,登记簿上的数据就是持久态数据,所谓持久态就是一直存在的状态。当我们需要用数据的时候,会从登记簿上查信息,我们查到的信息记录在临时的纸张或者脑海里,然后登记簿会放回原位,这时候临时纸张上或者脑海里的数据就是游离态,随时可能被遗忘,在hibernate中就是随时会被销毁的数据。瞬态数据和游离态数据有点儿类似,但是一点,就是他是存在持久化之前的数据,就是说我需要登记个人信息,我的个人信息还没有登记到登记簿上的时候,信息就是瞬态,一旦登记到登记簿上就变成持久态了,然后再查询到的就是游离态。

spring原理:
        核心是IOC(控制反转)和AOP(面向切面编程)。
        IOC
将 类与类的依赖关系写在配置文件中,程序在运行时根据配置文件动态加载依赖的类,降低的类与类之间的藕合度。它的原理是在 applicationContext.xml加入bean标签,在bean标签中通过class属性说明具体类名、通过property标签说明该类的 属性名、通过constructor-args说明构造子的参数。其一切都是返射,当通过applicationContext.getBean("id 名称")得到一个类实例时,就是以bean标签的类名、属性名、构造子的参数为准,通过反射实例对象,唤起对象的set方法设置属性值、通过构造子的 newInstance实例化得到对象。正因为spring一切都是反射,反射比直接调用的处理速度慢,所以这也是spring的一个问题。  
            AOP其 机理来自于代理模式,代理模式有三个角色分别是通用接口、代理、真实对象代理、真实对象实现的是同一接口,将真实对象作为代理的一个属性,向客户端公开的 是代理,当客户端调用代理的方法时,代理找到真实对象,调用真实对象方法,在调用之前之后提供相关的服务,如事务、安全、日志。其名称分别是代理、真实对 象、装备、关切点、连接点。

posted @ 2013-03-08 15:38  qiuhua  阅读(321)  评论(0编辑  收藏  举报