一种实现flex与servlet交互的方法技术

技术编号:12743115 阅读:51 留言:0更新日期:2016-01-21 10:27
本发明专利技术公开了一种实现flex与servlet交互的方法,该方法包括:客户端上的flex组件发送请求报文至服务器上的servlet组件;其中,所述servlet组件为公共servlet组件;所述servlet组件从所述请求报文中提取类名和方法名,利用java反射机制动态加载实际的业务处理类,调用所述业务处理类对应的业务处理方法获得处理结果,并将所述处理结果进行封装后生成报文结果,向所述flex组件返回所述报文结果;所述flex组件接收所述报文结果。该方法实现在不改变已有代码结构的条件下满足新功能模块的扩展,实现OCP原则。

【技术实现步骤摘要】

本专利技术涉及计算机应用
,特别是涉及一种实现flex与servlet交互的方 法。
技术介绍
目前,flex可以通过HTTPService发送请求与后台java进行交互,请求中包含的 xml报文封装了交互所需要的参数,后台servlet在接收到get/post请求后,解析xml报 文中的参数,调用需要的处理类及方法,并将调用结果进行封装响应,flex解析后台返回的 结果进行页面展示或者其他操作。这种传统的基于HTTPService进行交互一般有两种方 式,一种是不同的业务需求由不同的servlet进行处理,这种方式下需要定义并配置多个 servlet进行实现,会产生大量的重复操作,比如对请求信息的解析,对响应信息的封装等, 不利于代码的后期维护。flex指代客户端上的flex组件,servlet指代服务器上的servlet 组件。 另一种方式是使用公共servlet接收请求,公共servlet能够处理不同种类的 业务需求,在servlet内部通过传递的参数判断进行不同的处理类及方法的调用,这种 方式虽然满足了代码唯一性的条件,但是在存在新增请求时即实现模块扩展时,需要不 断修改判断条件,需要在servlet中增加额外的处理类方法调用,需要修改servlet,来 完成新增请求的处理,即完成servlet的功能扩展,不满足程序设计的OCP(Open-Closed Principle,开闭原则),软件设计中的开闭原则的意思是一个软件实体应当对扩展开放,对 修改关闭。也就是说,在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被 扩展,换句话说就是,应当可以在不必修改源代码的情况下改变这个模块的行为。所以在使 用公共servlet的交互方式中,该交互方式不满足程序设计的OCP原则。
技术实现思路
本专利技术的目的是提供,以实现在不改变已有 代码结构的条件下满足新功能模块的扩展,实现OCP原则。 为解决上述技术问题,本专利技术提供,该方法 包括: 客户端上的flex组件发送请求报文至服务器上的servlet组件;其中,所述 servlet组件为公共servlet组件; 所述servlet组件从所述请求报文中提取类名和方法名,利用java反射机制动态 加载实际的业务处理类,调用所述业务处理类对应的业务处理方法获得处理结果,并将所 述处理结果进行封装后生成报文结果,向所述flex组件返回所述报文结果; 所述flex组件接收所述报文结果。 优选的,所述请求报文为xml报文,所述xml报文中含有元素<class>〈/class>和 元素〈methodX/method〉,元素 <class>〈/class> 和元素〈method>〈/method> 分别指定实际 处理请求的业务处理类和业务处理方法。 优选的,所述请求报文中包括所述servlet组件的映射地址url。 优选的,所述servlet组件从所述请求报文中提取类名和方法名,包括: 所述servlet组件在doPost/doGet方法中解析请求报文,从请求报文中提取出实 际处理的类名称、方法名称以及类型为Element的业务参数。 优选的,所述servlet组件从所述请求报文中提取类名和方法名,包括: 所述servlet组件通过调用Class. forName ()方法从请求报文中获取处理类定义 class,并通过class. getlnstanceO方法创建类实例; 所述servlet组件根据class. getMethodO方法和请求报文中传递的方法名称获 取要调用的方法定义method。 优选的,所述servlet组件利用java反射机制动态加载实际的业务处理类,调用 所述业务处理类对应的业务处理方法获得处理结果,包括: 所述servlet组件通过method, invoke ()方法、类实例以及业务参数,调用实际的 业务处理方法进行业务处理并返回结果。 优选的,所述客户端上的flex组件发送请求报文至服务器上的servlet组件之 后,还包括: 若请求报文需要进行拦截操作,所述servlet组件通过doPost/doGet方法对所述 请求报文进行统一的拦截处理。 优选的,所述拦截操作包括验证请求、计算请求花费时长、记录日志或者请求相应 参数转换。 本专利技术所提供的,客户端上的flex组件发 送请求报文至服务器上的servlet组件;其中,所述servlet组件为公共servlet组件;所 述servlet组件从所述请求报文中提取类名和方法名,利用java反射机制动态加载实际的 业务处理类,调用所述业务处理类对应的业务处理方法获得处理结果,并将所述处理结果 进行封装后生成报文结果,向所述flex组件返回所述报文结果;所述flex组件接收所述报 文结果。可见,该方法利用Java反射机制,直接通过类名和方法名调用实际的业务处理类 及处理方法,完成请求报文的响应,实现flex与servlet之间的交互,这样在存在新的请求 报文时,仍然只需要依据该请求报文中的类名及方法名,采用Java反射机制调用实际业务 处理类和处理方法,不需要在交互过程中对新增请求进行判断,不需要修改判断条件,无需 对servlet进行更改,就能完成flex与servlet之间的交互,实现servlet能够对新的请 求报文进行处理,即servlet实现新功能的扩展,所以该交互方法实现在不改变已有代码 结构的条件下满足新功能模块的扩展,实现OCP原则。【附图说明】 为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据 提供的附图获得其他的附图。 图1为本专利技术所提供的的流程图。【具体实施方式】 本专利技术的核心是提供,以实现在不改变已有 代码结构的条件下满足新功能模块的扩展,实现OCP原则。 为了使本
的人员更好地理解本专利技术方案,下面将结合本专利技术实施例中的 附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是 本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员 在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。 请参考图1,图1为本专利技术所提供的的流程 图,该方法包括: Sll :客户端上的flex组件发送请求报文至服务器上的servlet组件; 其中,servlet组件为公共servlet组件。请求报文为xml报文,xml报文中 含有元素〈class>〈/class> 和元素 <method>〈/method>,元素 <class>〈/class> 和元素 〈method>〈/method>分别指定实际处理请求的业务处理类和业务处理方法。请求报文中包 括servlet组件的映射地址Url 0 S12 :servlet组件从请求报文中提取类名和方法名,利用java反射机制动态加载 实际的业务处理类,调用业务本文档来自技高网
...

【技术保护点】
一种实现flex与servlet交互的方法,其特征在于,包括:客户端上的flex组件发送请求报文至服务器上的servlet组件;其中,所述servlet组件为公共servlet组件;所述servlet组件从所述请求报文中提取类名和方法名,利用java反射机制动态加载实际的业务处理类,调用所述业务处理类对应的业务处理方法获得处理结果,并将所述处理结果进行封装后生成报文结果,向所述flex组件返回所述报文结果;所述flex组件接收所述报文结果。

【技术特征摘要】

【专利技术属性】
技术研发人员:胡叶
申请(专利权)人:浪潮北京电子信息产业有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1