首页> 中国专利> 一种基于java的web开发中间件

一种基于java的web开发中间件

摘要

提供了一种基于java的web开发中间件,包括:动作模块,负责接收http请求数据,并把该数据发往指定的逻辑处理单元进行处理,然后,把相应逻辑处理单元处理的结果生成需要格式的网页数据,在浏览器显示。在逻辑处理中,本发明以插入拦截器的方式,来适应个性化处理的需要;在网页生成中,本发明同时提供了模板和非模板方式,其中模板方式,以一种基于XML标记方式的模板,定义要生成网页的格式;数据访问模块,负责接收并执行对数据库的操作请求,利用MQL脚本语言,实现数据库和javabean对象的自动映射,将对数据库的复杂操作转化为对javabean对象的操作。利用上述的开发中间件,使得web开发灵活快捷,简化了繁琐的数据库操作,可以缩短web开发周期,提高开发效率。

著录项

  • 公开/公告号CN102968307A

    专利类型发明专利

  • 公开/公告日2013-03-13

    原文格式PDF

  • 申请/专利权人 中国传媒大学;

    申请/专利号CN201210501132.3

  • 发明设计人 李星;杨成;

    申请日2012-11-29

  • 分类号G06F9/44(20060101);

  • 代理机构11327 北京鸿元知识产权代理有限公司;

  • 代理人陈英俊

  • 地址 100024 北京市朝阳区定福庄东街1号

  • 入库时间 2024-02-19 17:28:06

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-02-24

    授权

    授权

  • 2013-04-10

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20121129

    实质审查的生效

  • 2013-03-13

    公开

    公开

说明书

技术领域

本发明属于计算机领域,涉及到web开发技术和数据库访问技术,更为 具体地,涉及基于java的web开发中间件。

背景技术

由于网络的飞速发展,出现了很多基于java的web开发框架,其中, Struts,Spring,Hibernate是当前流行的java web开发架构,分别属于不同开源组 织或者公司,并且针对于特定的领域实现其功能:struts负责外部数据的采集, hibernate负责数据库的持久化,spring则负责对象的实例,远程调用等。三者 组合起来可以形成一个java web的开发结构,当前这三者已经发展得十分庞 大,导致在一些小型应用中如果采用此结构会造成系统开发臃肿,学习成本 过高,一些基于web的技术需要在此基础单独开发才能形成效果。

另外开发java web应用时,不使用模板或者架构,如果从底层基础构建, 就会造成效率低下,开发周期长,维护困难,培训周期长,重复的web技术 开发。

另一方面,使用模板开发,确实会提高开发效率,但是模板开发都会固 定好一些基础内容,使用者并不能随心所欲的进行全面自主设计,并在瓶颈 问题上会处于被动的状态,无法做优化。

同时,web开发中数据库操作也是一个让开发人员头痛的问题,需要建 立一种便捷的数据库、对象映射,简化数据库操作。

发明内容

鉴于上述,本发明的目的在于提供一种轻量快捷的基于java的web开发 中间件,提供接收web请求,进行逻辑处理,并将其返回的处理结果生成网 页的开发框架;同时,还提供一种基于MQL的数据库、对象映射方式。该中 间件的逻辑处理中,提供了以插入拦截器的方式,来满足多变的个性化需求。 在网页生成中提供了模板和非模板两种方式,同时兼顾生成页面的灵活性和 快捷性。基于MQL的数据库、对象映射,简化了繁琐的数据库操作。应用本 发明,可以使web开发灵活高效,缩短开发周期。

本发明所述的基于java的web开发中间件,包括:

动作模块,负责接收http请求数据,并把该数据发往指定的逻辑处理单 元进行处理,然后,用相应逻辑处理单元处理的结果生成需要格式的网页数 据,在浏览器中显示,在网页生成中,提供了基于模板和不基于模板两种方 式,在基于模板方式中,采用预先定义的XML模板限定规则,设定了生成网 页的格式;在逻辑处理中,通过地插入拦截器,以完成个性化的处理需求; 动作模块包括的组件及其典型的执行顺序如附图1,动作模块包含如下组件:

任务分配组件,依据配置文件,将不同的web请求交给指定的处理逻辑;

web数据转换组件,将从web接收的数据转换为任务处理组件指定的数据 对象;

任务处理组件,用于完成所需的逻辑处理;

拦截器组件,用于在任务处理组件处理前,对web请求进行处理,开发者 可以自己定义拦截器,以完成自己需要的个性化功能;

结果返回组件,将逻辑处理单元的处理结果数据转换为网页数据,返回给 浏览器显示。

结果返回组件返回的结果类型包括base类型,redirect类型,redirectAction 类型,json类型等类型,其中:

Base类型直接返回响应的内容;

Redirect类型返回跳转连接;

redirectAction类型将数据发给下一个action处理;

json类型返回具有{key:value,……}格式的json串;

在base类型中,可以使用一种基于预先定义的XML限定规则的模板,按 模板格式生成网页。

动作模块中的各组件的典型执行顺序见附图1,http请求先通过任务分配 组件指定对应的处理逻辑;然后,通过web数据转换组件将所述请求的中的 数据转换为逻辑处理中需要的类型;之后,如果有拦截器,则按拦截器配置 的先后顺序依次调用个拦截器;再后,通过逻辑处理组件做逻辑处理;最后, 将上述逻辑处理的结果通过结果处理组件生产网页,送浏览器显示。

数据访问模块,负责接收和执行数据库的操作请求,利用MQL脚本语言, 实现数据库和javabean对象的自动映射,将数据库的复杂操作转化为对 javabean对象的操作;数据访问模块包含的组件及其典型的执行顺序如附图2 所示,数据访问模块包括如下组件:

数据库操作接口组件,用于提供可变粒度的数据库查询接口;

会话管理组件,用于完成web交互中的会话管理;

事务处理组件,用于执行数据库事务;

回滚处理组件,用于执行数据库操作的回滚;

基本操作组件,用于执行普通的数据库增、删、改、查操作;

数据库、对象映射组件,用于实现数据库和javabean对象的映射,其中, 使用MQL脚本语言,将数据库中的表和指定的javabean对象关联起来,完成 数据和对象间的映射;该关联的Javabean带有特定的注解,以完成数据和对 象间的映射。

数据访问模块中各个组件的典型执行顺序如附图2所示:首先,通过数 据库操作接口组件,发起数据操作;然后,会话管理组件会建立一个会话, 并管理这个会话;之后,依据数据库操作的粒度和类型,决定调用基本操作 组件、事务处理组件或回滚处理组件;再后,通过数据库、对象映射组件将 操作映射到数据库,取得数据库操作结果。

附图说明

根据下述参照附图进行的详细描述,本发明的特征和优点将变得更加显 而易见。在附图中:

图1示出了动作模块处理web请求的数据流程;

图2示出了动作模块中模板生成网页数据的流程;

图3示出了数据访问模块处理数据库操作请求时的数据流程;

图4示出了动作模块的一种实现;

图5示出了数据访问模块的一种实现;

图6示出了用MQL实现对象映射的处理流程;

具体实施方式

下面描述本发明的实现。应该明白的是,本文的实施可以以多种多样形 式具体体现,并且在本文中公开的任何具体结构、功能或两者仅仅是代表性 的。基于本文的教导,本领域技术人员应该明白的是,本文所公开的一个方 面可以独立于任何其它方面实现,并且这些方面中的两个或多个方面可以按 照各种方式组合。

基于java的web开发中间件,主要包含两个模块:动作模块和数据访问 模块。

动作模块负责接收http请求数据,并把该数据发往指定的逻辑处理单元, 然后,把相应逻辑处理单元处理的结果生成需要的网页数据格式,在浏览器 中显示。附图4是动作模块的一种实现:

在本实施方式中与网页交互的是BasicFilter类,其核心是Forward类,它 负责了整个任务分配,相当路由功能,它会根据配置文件的信息指定哪个逻 辑来处理哪个web页面,BasicFilter、Forward类一起构成了本发明所述的任 务分配组件。接下来的DefaultActionInvocation类是一个类型适配器,实现数 据类型转换,变量映射等,它构成了本发明的web数据转换组件。然后是若 干个拦截器,interceptor1,interceptor2,....,拦截器为开发者自己定义,拦截器 为开发者提供个性化功能定制,用来满足一些开发者自己需要定制的的特殊 能力,这些拦截器构成了本发明所述的拦截器组件。

返回结果由对象IResult来封装,返回结果的类型可以是基本的base类型, redirect类型,这两种都是直接将数据发回浏览器;redirectAction类型,它是 将数据直接发往下一个action动作形成一条action动作逻辑处理链,json类型, 返回具有{key:value,……}格式的数据,然后发回浏览器。

关于模板,模板技术主要是为了解决诸如报表,图表等设计的,在开发 中,开发者往往面临最多的是数据如何显示,所以模板的提供也是快速开发 一种方式。

本实施例中的模板也是IResult的一个实现,当中间件判断开发者是使用 Template时,就会根据配置文件获取模板文件,模板文件设计为中间件约束 的XML格式,如<tablelist>将会将数据显示为列表,最终模板文件将翻译成 标准的html格式,当然如果开发者想自己翻译其它格式,则只要实现相关接 口就行了,在翻译结束后,送往浏览器显示。如下是Template的一个示例:

数据访问模块负责接收业务逻辑的数据库操作请求,利用MQL脚本语 言,实现数据库和javabean对象的自动映射,将对数据库的复杂操作转化为 对javabean对象的操作。附图5是数据访问模块的一种实现:

本实施例中,数据访问模块的核心是Session,它和ConnectionProvider、 SessionFactoryc、SessionUtil一起构成了本发明所述的会话管理组件。 SessionQuery用于进行数据库的基本操作,Transaction用于管理数据库事务, Rollback用于数据库事务的回滚,因为操作数据库是存在粒度的,所以在面向 开发者时又往上封装了一层Query接口。其中数据访问模块与数据库的映射采 用javabean的形式,具体的影视方法采用了MQL脚本语言,通过MQL,数据 库中的表将与指定的javabean进行关联,达到自动数据映射,简单实现ORM模 型。例如:MQL:updateDs_basic set college_nameDs_basic<='#{college_name}'where idDs_basic=<#{id1}and nameDs_basic='#{name2}',在本实施例中,首先会将 其格式化为标准格式,然后提取变量,如本例中的#{id1},将被转换成一个 类,替换变量后的第二步开始映射数据表,Ds_college表达的是开发者的一 个javaBean,这个javaBean必须要是具有特殊注解(如Entity,Field)的javaBean, 中间件将把Ds_college关联的表的信息提取出来,形成最终的SQL,然后把 MQL的解析数据送往数据访问模块的其它组件来执行数据库操作,其具体使 用流程如下。

开发者输入,

MQL:updateDs_basic set college_nameDs_basic<='#{college_name}'where  idDs_basic=<#{id1}and nameDs_basic='#{name2}',

其中具有标记的(没有被#{}括住)系统将自动映射到相应表,并且对 相应字段也进行映射;被#{}的地方一般指的是参数信息。

开发者自定义的带注解的javabean,如下形式:

其中开始的语句为注解,

注解Entity(table="abc")指定了该javabean映射到数据库的表为abc;

注解Field(name="cname")指定了college_name成员变量映射为数据库表abc 的cname字段。其余标记可以以此类推。

若该对象有如下赋值:

Ds_basic Ds_basic_object=new Ds_basic();

Ds_basic_object.college_name=’cuc’;

Ds_basic_object.id=23;

Ds_basic_object.name=’xiaolee’;

系统最终会生成如下sql语句:

update abc set cname<='cuc'where id=<23 and name='xiaolee'

如果是查询语句,系统会根据查询信息进行返回对象或对象集合。

附图6中给出了MQL实现对象映射的处理流程。其中MQL解释器接收 来自业务层的请求后,利用MQL语言以及javabean对象和数据库之间的映射 关系,生成对应的实际数据库操作语句,并执行该语句,以完成对数据库的 操作。如果该语句没有返回对象,则直接返回业务层,如果有返回对象,则 经过MQL解释器后,返回结果对象给业务层。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号