dinamic框架分析以及核心类说明

来源:互联网 发布:淘宝优惠券潜伏机器人 编辑:程序博客网 时间:2024/06/07 05:38

       最近一直在研究dinamic框架,这个框架是基于mvc的一个框架,主要的目的就是通过进行简单的配置文件和业务逻辑(不是必须的)完成相应的应用的开发,其余的工作开发者不再考虑。

 

       它的设计流程图:

         

        通过这个设计流程图中我们就能看得出来所有灰色部分的内容都是框架本身提供的,而白色部分需要开发人员来自己动手来实现的,而白色部分的内容就是三个类型的配置文件,数据库信息,和一些必要的业务逻辑。这样软件开发者可以省去很多开发工作和成本。

        另外我们能够通过这个图看出这个框架是一个基于mvc的框架,首先有template作为呈现层,有Controller Module作为servlet中间层,后面的一些业务逻辑层和一些处理数据库的实现类作为业务逻辑层和数据持久层。这样就形成了v(template)-c(servlet)-m(业务逻辑层和数据持久层)的mvc设计模式结构。

        这里面有几个比较关键的文件和类:

          

        config.xml文件:这个主要是软件开发者配置的,具体的作用就是配置transaction和output标签,这两个的作用就是下面要说的两个GenericTransaction和GenericOutput类的作用,一个是主要是负责传输一个负责输出。

         类似这样的配置文件:

           

<?xml version="1.0" encoding="UTF-8"?><config><summary>Login</summary><log>false</log><transaction><classname>dinamica.GenericTransaction</classname><validator>false</validator><transaction>false</transaction><jdbc-log>false</jdbc-log><recordset id="Hello.sql" source="sql" scope="transaction"/></transaction><output><classname>dinamica.GenericOutput</classname><template>test.html</template><set-http-headers>true</set-http-headers><content-type>text/html</content-type><expiration>0</expiration><print mode="table" recordset="Hello.sql" tag="rows" alternate-colors="true"/></output></config>


 

        注:其实这个配置文件的信息在服务器运行起来的时候dinamic框架中有一个叫Config的类来存储这些信息,我们可以看到上面的所有标签(示例中的标签还不全)会在config类中作为属性存储。这个用Config类存储config.xml内容的过程在Controller类中实现(具体见下面)

 

        Sql文件:这个sql文件主要是对数据库进行的操作的sql语句,这个主要是体现在config.xml文件中transaction和output中的recordset标签和recordset属性。框架本身就是通过哥标签和属性来获得sql文件,并且通过DB类来完成数据库的操作并且把相应的数据存到RecordSet类中。

         

       示例:

      

select username,age,name,passwordfrom t_user


 

        test.html:这个是模板文件,名称可以随便起,但是在config.xml文件中配置template标签的时候就要和这个模板文件名称一致。

这个模板文件主要是显示相应的信息的页面,当然这个页面里面会有一些特定的标签,这些标签会通过框架本身所产生的业务数据所替代,从而形成显示的页面并呈现给客户端。

        示例:

        

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><center><table class="grid" width="90%"><tr><th>username</th><th>age</th><th>name</th><th>password</th></tr><rows><tr><td ${fld:_rowStyle}><a href="${def:context}/action/param?id=${fld:username}">${fld:username}</a></td><td ${fld:_rowStyle}>${fld:age}</td><td ${fld:_rowStyle}>${fld:name}</td><td ${fld:_rowStyle}>${fld:password}</td></tr></rows></table></center></body></html>


 

        Controller类:这个类是核心控制类,继承httpServlet类,重写了service方法,所有的控制工作都在service方法中,这里主要实现了这样几个内容:1、获得路径,并且获得相应的config.xml文件,这个步骤在将config.xml配置文件中说道了,Controller类就是通过路径读取config.xml文件,将config文件信息放到Config类里面的2、从JDNI中lookup出来dataSource,根据dataSource来创建数据库连接;这里面的实现用到了框架底层的一个JNDI类,这个类的主要作用就是获得数据源(仅有这么一个方法)3、获得GenericTransaction对象,这个对象执行service方法之后将transaction标签中的值都读出来,并且通过source标签的值获取相应的RecordSet,也就是这个类是处理config.xml配置文件中的transaction标签中的信息的。4、获得GenericOutput对象,这个对象首先获得config.xml里面的output标签下的template标签的值,也就是我上面示例中的test.html,将这个文件中的信息存储到一个String类型的变量中。之后创建模板对象TemplateEngine,调用GenericOutput的print方法将GenericTransaction参数和TemplateEngine参数传入,也就是将GenericTransaction里面的相应的RecordSet中的值利用mplateEngine对象替换文件中的标签;终跳转到相应的路径中将模板文件显示出来。

         这个Controller类就表示了一个核心控制的类,它的作用就是控制这整个流程图的走向,当我们把Controller类的执行代码研究透了,那么我们这个dinamic框架的具体实现流程和原理也就清楚了。而这个Controller的执行代码就是通过我讲述的上面四个步骤实现的,大家可以从Dynamic官方网站:http://www.martincordova.com/上下载一份源代码,分析一下那个controller类。

 

        TemplateEngine类:这个将Controller类的时候已经说了这个是一个模板引擎类,主要是作用就是将模板文件中的特定标签换成我们所需要的业务数据。

 

          GenericOutput类:这个类是控制输出的类,主要是负责将所需的业务数据打印到模板文件中,在这个过程中是根据config.xml文件中的信息类判断那些是所需的业务数据【这些业务数据是通过DB类根据sql文件从数据库中读取出来的,并且放到了RecordSet类中】,在这个类中有个最主要的方法就是print方法,这个方法就是完成将业务数据打印到模板文件中的方法

 

         Db类:操作数据库的类,也可以称作数据库助手类

 

         RecordSet类:一个广义上的RecordSet类,这个类和jdk中的RecordSet不同,它是框架本身封装的一个RecordSet,不仅仅能够获得数据库中的记录集,还可以将一起其他的数据放到这里面,包括配置文件的信息。

 

         GenericTransaction类:这个类主要的作用就是将Config.xml里面的Transaction标签中的值存储起来,并且调用service方法将recordset标签的信息存储到RecordSet对象中。

 

        当我们把这些类弄明白了的时候,我们对dinamic框架的原理就有个大概的认识了,当然我们也就可以尝试的用这个框架写一些简单的示例了。当我们写demo的时候我们会发现dinamic的优势非常明显,我们仅仅需要写一个config.xml,模板.html,sql三个文件我们就能够实现简单的应用了。