1.struts1运行流程:

    1.1 struts1大体流程:

    发布Struts Web服务时,根据web.xml初始化ActionServlet,ActionContext等内容.在接到一个HttpRequest请求后,ActionServlet 根据struts-config.xml中的配置内容,将请求的参数传 到对应的Formbean中,并设置session.然后根据请求中的Action参数,在struts-config.xml中查找指定的Action,并调用此Action来处理请求.根据Action的处理结果,会返回一个forward变量,此时通过mapping.findForward()查找出对应的forward所标示的Action或者JSP页面,将请求转到下一个处理.如果是forward指向JSP页面,则输出到前台

    1.2 struts1详细流程:

     用户从页面以*.do的形式发送url请求---->被ActionServlet类进行拦截 根据请求方式调doGet 或 doPost 方法 ---->无论是doGet 还是doPost 都会 调用该类的process 方法进行---->该方法利用工厂模式产生一个RequestProcessor实例并调用 processor方法---->并在该方法中得到 一个path(该path 没有任何前缀和后缀) 并在session 找到一个 浏览器的Locale信息 如果没有就直接得到浏览器的Locale信息 并把Locale实例保存在ssion范围内---->然后根据用户的url也就是 上面得到的path 找到对应 Actionmapping 如果没有找到 则返回对应的错误信息-->根据ActionMapping里面的属性信息利用反射机制填充到ActionForm-->然后进行验证 如果不通过则把请求转发到struts-config文件里面input属性指定的 web组件 如果通过 就根据ActionMapping 利用单例模式得到Action对象 因为是单例模式 所以后面的对象覆盖前面的对象 这也是struts1中一个不足点 ---->然后调用 Action中的execute方法返回ActionForward---->根据struts-config.xml 配置文件进行匹配并跳转页面

2.struts2运行流程:

     一个请求在Struts2框架中的处理大概分为以下几个步骤:

     1.客户端发送request请求(*.action)
        先经过一系列的过滤器(过滤器:ActionContextCleanUp(第一个过滤器):整合struts和其他框架(freemarker))
        其他过滤器:OtherFilters[SiteMesh]:-->FilterDispatcher(永远是最后一个过滤器,该过滤器一旦执行,就会终止过滤器链)
    2.FilterDispatcher会询问对应的filterMapping,查看当前的请求是否应该被拦截,
        如果不应该拦截,会报404错误;
        否则:FilterDispatcher创建Action代理类(帮助action完成一些功能,通用的功能)
        功能例如:对请求数据进行解析,将解析数据映射为Action的属性(params拦截器),文件上传,国际化,验证等
    3.ActionProxy代理类读取struts.xml配置文件;把配置文件的配置信息保存在ActionInvocation(action环境的调度者)中
        ActionInvocation:进行调度,如哪个action由哪个action代理类处理
    4.ActionInvocation带着请求参数(*)去相应的包中(package)中查找对应的action
    5.找到action(name)之后,如果action节点下有对应的拦截器的引用(interceptor-ref),先执行拦截器里面的代码,再去找Action类
    6.创建Action对象,执行valiator()方法:执行过程中如果产生了error(FiledError/ActionError)信息,自动生成一个"input"
    7.此时调度者ActionInvocation去配置文件中查找匹配的result结果集,返回相应的视图
    8.如果没有错误信息,执行execute()方法,返回字符串;也去配置文件中去匹配result结果集,返回相应的视图

3.hibernate运行流程:

Hibernate的工作流程:1. 读取并解析配置文件2. 读取并解析映射信息,创建SessionFactory3. 打开Sesssion4. 创建事务Transation5. 持久化操作6. 提交事务7. 关闭Session8. 关闭SesstionFactory

Hibernate的详细运行过程如下:
A:应用程序先调用Configration类,该类读取Hibernate的配置文件及映射文件中的信息,并用这些信息生成一个SessionFactpry对象。
B:然后从SessionFactory对象生成一个Session对象,并用Session对象生成Transaction对象;可通过Session对象的get(),load(),save(),update(),delete()和saveOrUpdate()等方法对PO进行加载,保存,更新,删除等操作;在查询的情况下,可通过Session对象生成一个Query对象,然后利用Query对象执行查询操作;如果没有异常,Transaction对象将 提交这些操作结果到数据库中。