苏长明
(成都大学信息科学与技术学院,四川成都 610106)
目前,J2ME(Java Micro Edition)平台为嵌入式消费类电子产品,如移动电话、PDA、电视机顶盒等提供了一个通用的开发平台,其具有移植性好、部署灵活、安全性高等优点.J2EE(Java Enterprise Edition)是一种使用在服务器端,并利用Java 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构,J2EE以先进的架构成为企业级应用的首选.本研究基于J2ME与J2EE技术设计开发了一种校园移动信息查询系统.
客户端采用J2ME技术来实现,J2ME平台由多种配置(Configuration)、简表(Profile)和可选包(Optional Package)[1]组成,其体系结构如图1所示.
图1 J2ME平台的体系结构
J2ME平台包含:连接设备配置(Connected Device Configuration,CDC)和连接受限设备(Connected Limited Device Configuration,CLDC).CLDC是两个配置中较小的一个,主要为具有间断性联网能力、较慢的处理器和有限内存的设备设计的,例如移动电话、双向呼叫和入门级的PDA等.CDC是为了处理能力强、内存空间更大、联网能力更出色的设备设计的,例如电视机顶盒、车载娱乐系统、高端PDA等.为了给目标设备提供完整的运行环境,配置必须和简表组合.
通常,简表位于配置之上,其主要是为目标设备提供完备的应用程序运行环境而设计的.基于CLDC和CDC的几个重要简表包括:移动信息设备简表(Mobile Information Device Profile,MIDP),基础简表(Foundation Profile,FP)、个人配置简表(Personal Profile,PP)、个人基础简表(Personal Basic Profile,PBP).其中,MIDP主要针对移动电话等低端PDA,FP是CDC中Profile的基础,PP主要针对需要用户界面的设备,PBP为网络连接的设备提供了应用程序环境,例如机顶盒等.
可见,J2ME的跨平台技术可以使客户端程序很容易部署到各种移动设备上.
本研究设计的校园移动信息查询系统是一个典型的移动电子商务系统,它基于J2ME与J2EE技术实现移动客户端访问服务器端,即使移动设备功能受限,但客户端通过无线网络仍然可以实现各种复杂的应用.
J2EE技术用于服务器端,其典型的架构分为3层:表示层(Presentation)、业务逻辑层(Business logic)及持久化层(Infrastructure)[2],其框架如图2所示.
图2 服务器端框架图
J2ME客户端的访问通过无线和有线网络转发到J2EE端,借助于J2EE端的服务器来处理用户的请求,并把处理结果返回到J2ME端.
J2ME技术提供了丰富的联网功能,支持包括TCP协议、UDP协议以及HTTP协议等主要网络协议[3-4].在MIDP中处理移动设备网络连接功能的最主要技术是,javax.microedition.io中各个类和接口,以及java.io包中的各种I/O接口为数据流提供了系统输入和输出功能.Web Services通过标准的HTTP协议来传输数据,可以很方便地跨越 Intranet或者Intranet网段,通过适当的配置,对Web Services的访问可以很轻易地穿透防火墙.由于 Socket只有MIDP2.0的手机才支持,综合考虑通用性与安全性,本系统摒弃了Socket连接的方式,而采用更加通用的HTTP连接方式.
本研究设计的校园移动信息查询系统的主要功能如图3所示.
在校园移动信息查询系统中,数据的传输通过移动设备发送数据到无线基站,无线基站将数据再传送到GPRS/3G/4G网络中,从而很方便地接入到Internet中,最终到达校园服务器进行会话.
由于本系统采用HTTP协议进行网络连接,并使用DataInputStream/DataOutPutStream进行数据传输.考虑到部分地方需要向服务器端传输大量信息,所以在传输方法上,系统采用了POST方法,而实际操作中,考虑到通过URL进行传值的方便性,在绝大多数情况下,优先使用URL进行传值.对于部分涉及到中文通过URL传输造成乱码的情况,系统采用字符编码转换方法进行处理,系统架构如图4所示.
图3 校园移动信息查询系统User Case图
图4 系统架构示意图
2.3.1 客户端的实现.
用户登录时,需要传入登录URL、用户名、密码,然后通过HttpConnection进行网络连接,通过DataInputStream和DataOutputStream进行数据通信.在服务器端通过Spring控制转到相对应的Action调用Service的接口方法进行数据库的查询,最终返回查询结果.移动设备端程序主界面设计并处理与服务器的连接,其核心代码如下:
2.3.2 服务器端的实现.
本系统服务器端采用 Struts1.3、Hibernate3.2、Spring2.5.6技术组合设计.
(1)Struts的实现.
Struts负责表示层.ActionFormBean接收表单提交的数据,然后通过Action进行处理,再Forward到对应的网页,这个方法在struts-config.xml中定义, ActionServlet会加载.
具体过程为:表单→提交给ActionServlet→调用ActionForm存储表单信息(struts-config.xml文件中定义)→根据
Struts配置核心代码如下:
(2)Spring的实现.
Spring负责业务层,即Service(或Manager).Service为Action提供统一的调用接口、封装持久层的DAO.Spring对接口方法进行管理的核心代码如下:
Spring对Hibernate进行管理的核心代码如下:
(3)Hibernate的实现.
Hibernate负责持久化层,完成数据库的增删查改操作,提供OR/Mapping.对象的调用流程是:客户端→Action→Service→DAO→Hibernate.数据的流向是通过DataInputStream或Requset接受用户的数据,在Action中将数据取出,封装成VO或PO,再调用业务层的 Bean类,完成各种业务处理后再通过DataOutputStream输出结果.而业务层Bean收到这个PO对象之后,会调用DAO接口方法,进行持久化操作.
2.3.3 系统的实现.
通过以上步骤的设计,具体实现了校园移动信息查询系统,系统程序的运行结果如图5所示.
图5 校园移动信息查询系统运行结果图
移动通讯设备的普及使移动信息系统得到广泛应用,这类系统为经常外出的客户进行信息查询提供了极大方便.有理由相信,随着移动信息技术的迅猛发展,利用移动通讯设备开展的各类电子商务将主导着电子商务的发展方向.
[1]彭政.基于J2ME和J2EE的移动学习平台研究与设计[J].科技广场,2010,23(6):28-30.
[2]张军.基于J2EE技术实现J2ME嵌入式系统访问的网络数据库[J].考试周刊,2010,4(30):153-154.
[3]杨丽萍,王薇.基于手机平台的教学信息系统的研发[J].长春大学学报,2009,19(8):15-17.
[4]吴江寿,刘世洪,苏晓路.基于JavaME与WAP的移动信息系统实现[J].微计算机信息,2009,25(12):127-128, 136.