基于J2ME和J2EE的手机图书馆研究与设计

2010-04-14 03:35贺利娜李嫄源田增山
图书馆理论与实践 2010年12期
关键词:服务器端页面客户端

●贺利娜,李嫄源,田增山

(重庆邮电大学 a.移动通信技术重点实验室;b.科学技术处,重庆 400065)

随着3G(3rd-generation,第三代移动通信技术)等移动通信技术的迅猛发展以及无线设备的普及,市场对于移动应用服务的需求越来越广泛,手机图书馆也已经成为手机移动应用服务中增长势头迅猛且潜力巨大的一项增值服务。[1]但是目前的图书馆主要存在两大问题:一是多数的数字图书馆都要求用户借助PC机才能上网查阅、检索、阅读和下载图书,虽然有少数的图书馆实现了通过无线设备(如手机等)查询,但是多数采用的是短信和WAP(WirelessAppl-ication Protocol,无线应用协议) 方式,速度慢而且效率低。二是不同制造商生产的手机的硬件性能和操作系统不同,同一个图书馆系统在不同的手机上不能实现兼容。为了较好地解决以上两大弊端,开发一个不受手机本身性能限制的通用图书馆系统势在必行,这也是各个图书馆及相关机构研究的一个新方向。

J2ME(Java 2 Micro Edition,Java2微缩版) 和J2EE(Java2Platform Enterprise Edition,Java2平台企业版)是Java 2的两个版本,它们能够借助于JAVA良好的跨平台性,将手机应用软件顺利地移植到不同的系统平台中,同时J2ME支持离线查看。J2ME和J2EE技术的诸多优点为构建手机图书馆提供了一个新的切入点,对发展中国的图书馆事业具有特殊意义。本文旨在探讨如何使用J2ME和J2EE技术来研究和设计一个新型的手机图书馆系统。

1 技术背景介绍

1.1 无线设备访问网络方式

目前无线设备访问网络主要有三种方式:WAP、I-Mode和J2ME方式。[2]无线设备通过WAP方式上网时要求手机通过WAP网关访问互联网,用户只能访问WML格式的页面而不是主流的HTML页面,也不能显示复杂格式的图形,因此这种方式不够智能化,而且不能访问本地存储,反应速度慢;[3]WAP服务每次获取必须重新登录,而且只要在线,就需付费。I-Mode方式是基于数据信息包的传输技术,但是I-Mode必须使用网关将无线网络连接到服务器上,服务器上的站点必须是I-Mode格式。因此WAP和I-Mode均已不能满足人们对信息多样化、高速度、高效率阅读的要求。

1.2 J2ME技术

J2ME方式是一种高度优化的Java运行环境,具有与系统无关、与平台无关的优良特性。J2ME提供了强大的Socket和Http网络编程接口,通过记录管理系统支持本地存储,可以实现离线查看。J2ME采用分层软件系统结构,底层为宿主机的操作系统,内部包括三层:JVM(Java VirtualMachine,Java虚拟机)层、配置文件层和J2ME应用层。J2ME通过CLDC(Connected Limited Device Con figuration,联网的受限设备配置) 和MIDP(Mobile Information Device Profile,移动信息设备配置文件)来定义运行于手机之上的JVM的特性。为了加强J2ME在不同手机上的移植,CLDC/MIDP所定义的规范非常的低,基本上能够满足不同系统平台的要求,这也是本文采用J2ME技术来开发手机客户端应用程序的重要原因。[4,5]通用的J2ME架构和手机中的J2ME架构如图所示。[6]

通用J2ME架构与手机J2ME架构对比图

1.3 J2EE技术

J2EE是Java 2平台企业版的简称,拥有一套完全不同于传统应用开发的技术架构,包含许多组件和核心API函数。J2EE技术支持异构环境,能够开发部署在异构环境中的可移植程序。基于J2EE的应用程序不依赖任何特定的操作系统、中间件、硬件,因此设计合理的基于J2EE的程序只需开发一次就可部署到各种平台。

开发J2EE应用程序,采用J2EE典型的四层结构:运行在客户端机器上的客户层组件;运行在J2EE服务器上的Web层组件;运行在J2EE服务器上的业务逻辑层组件;运行在EIS服务器上的企业信息系统层软件。[7]J2EE的四层体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,J2EE大大降低了开发多层应用的费用和复杂性,同时对现有应用程序的集成提供强有力的支持,完全支持Enterprise JavaBeans,有良好的向导来支持打包和部署应用,增强了安全机制,提高了性能。

2 系统总体设计

2.1 系统架构

基于J2ME和J2EE技术的手机图书馆采用的是客户端的手机应用程序和后台服务器端相结合的方式。手机客户端通过无线网络接入点访问互联网,下载手机客户端应用软件。手机用户利用个人账号登录之后,可以通过客户端的MIDLet程序Tomcat服务器用来解释执行JSP网页中的动态部分,Apache服务器用来支持静态网页,同时向服务器端发送服务请求。Web服务器端的功能主要由Tomcat和Apache服务器来实现。Web服务器使用Servlet程序接收客户端的连接和请求,并通过JDBC-ODBC桥接技术与后台数据库连接,按SQL语句读取数据,对客户的请求提供服务。对后台数据库的操作主要有两种:一是Web服务器端将处理后的数据写入数据库,实现对数据信息的更新;二是Web服务器端将查询结果返回给用户。

整个手机图书馆系统的构建分为三层:表示层(手机客户端)、功能层(Web服务器端)和数据库服务器层。表示层采用J2ME技术来编写MIDLet组件,利用Swing技术开发可视化的图形用户操作界面,用于显示和接收用户输入的数据,完成用户与Web应用服务器之间的对话通信;功能层的核心是用J2EE编写的Servlet程序,它相当于中间件,拥有一系列的API函数,主要负责处理用户输入的信息、客户端和服务器或者服务器和服务器之间的通信。Web服务器端的Servlet程序可开启多个线程供多个用户同时访问;数据库服务器层主要完成对数据的读取和保存操作,保证DBMS能够高效率地实现数据的同步更新和检索。

2.2 系统功能

(1)读者导航。介绍图书馆的借阅制度、证件办理等信息。(2)用户身份认证。用户需要输入用户名和密码进行身份认证,系统只能授予合法用户相关的操作权限。(3)用户基本信息查询。用户可以查看读者卡号、失效日期、累计借书等基本信息。(4) 书籍借阅信息查询,用户通过手机上网查询自己的图书借阅情况,包括书名、借阅日期和应还日期等。(5)馆藏书目查询。根据题目、作者、出版社等信息查询图书,显示相关图书的书目信息和在馆信息。(6)在线浏览。通过手机在线浏览期刊、论文等图书馆电子资源。(7)下载电子图书。用户可以根据自己的需要下载相关的电子图书。(8)图书馆续借预约。用户通过手机上网可以输入自己需要预约或者续借的图书编号,系统响应该操作后返回结果。(9)动态催还。系统自行设置还书提醒时间,并发送提醒邮件到用户设定的电子邮箱。(10)读者卡挂失/寻回。用户可以输入读者卡卡号及证件号对读者卡进行挂失和寻回。(11) 图书馆公告信息。查看系统公告和相关的图书馆公告,方便及时了解图书馆的最近动态。(12) 系统设置。设置网络连接方式和显示字体等参数。

3 系统详细设计

3.1 客户端设计

手机客户端充当一个小型的移动数据库。手机客户端采用J2ME技术,可以使用J2ME技术来编写MIDLet程序。用户可以登录图书馆的主页面发送请求,手机将把数据发送到服务器端,服务器端进行相应的处理后把查询结果返回给客户端,客户端MIDLet程序会把查询结果显示在用户手机屏幕上。

基于J2ME设计手机图书馆的客户端的优势在于用户可以有两种读取电子资源的方式:一是网络断开时用户可以离线阅读已经下载过的电子图书。其关键在于如何从本地文件中读取数据。这里的本地文件主要指下载过的电子图书资源,它存储在MIDP提供的记录管理系统RMS中。RMS所在的包是javax.microedi tion.rms(),RecordStore类是 javax.microedition.rms包中仅有的类。采用RecordStore类的最大优势在于即使系统启动了另外一个MIDLet,甚至手机更换电池,这些记录也会持久保持,因此,在实现离线阅读时,程序将线程类HttpConnectThread和RMS中的Record-Store类结合起来,实现在HttpConnectThread类内部对RMS数据进行读取。[8,9]二是用户能够在线阅读或者下载新的电子图书。其关键是如何通过建立手机阅读程序与服务器之间的网络连接来远程共享电子资源。为了实现在不同类型的手机上进行移植,本系统采用Http作为网络连接的首选协议来实现手机与服务器之间的网络通信,这样能够重用服务器端的代码,这也是本系统的优势之一。

3.2 W eb服务器端设计

Web服务器主要实现对网页页面的支持,并对从手机客户端接收到的数据进行处理,根据用户的请求类型查询数据库,并将查询结果发送给手机用户。

Web服务器在程序设计时可以采用J2EE技术的一整套服务(Services)、应用程序接口(APIs) 以及协议来实现。J2EE技术用来实现网络程序的开发,在设计时可以采用Apache+Tomcat+Jdk方式作为Web服务器来用。Apache服务器为HTML页面服务;Tomcat服务器是一个Servlet程序,能解释Java程序,可以运行JSP页面和Java Servlet程序。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求之后对这些代码进行处理,然后将生成的HTML页面返回给客户端。

3.3 数据库设计

系统的后台数据库采用Microsoft SQL Server 2000数据库。由于微软的数据库不是用Java编写的,但是我们需要用Java语言连接微软的数据库,这就需要使用JDBC-ODBC桥连接技术来实现Java代码对数据库的操作。由于建立JDBC-ODBC桥连接时可能会发生异常,因此,程序设计时要捕获这个异常。建立桥连接的标准如下:

try{

Class.forName (“sun.jdbc.odbc.JdbcOdbcDriver”);

}catch(ClassNotFoundException e) {}

这里,Class是包java.lang中的一个类,该类通过调用静态方法forName加载sun.jdbc.odbc包中JdbcOdbc Driver类来建立JDBC-ODBC桥接器。

在Web服务器与数据库的连接过程中主要包括几个步骤:加载驱动程序;建立与后台数据库的连接;SQL语句查询;提交查询结果;读取结果等。

4 关键技术

4.1 手机与数据库服务器之间的信息交互

手机与数据库服务器之间信息交互的过程是这样的:客户端的MIDlet程序与Web服务器之间进行连接并发出访问请求,通过无线网络对各种状态的变化进行通知;Web服务器使用Servlet程序来监听和处理客户端的连接和请求,并将其初始化。同时Servlet程序根据Post请求类型发送请求信息给数据库服务器;Web服务器与数据库服务器建立连接,执行SQL查询语句,查找符合条件的结果;Web服务器收到数据库服务器传来的数据,Servlet程序将这些数据的格式转化为手机终端可以识别的WML格式并将查询结果返回给MIDLet程序,这样,用户就可以在手机屏幕上读取所需要的数据信息。

4.2 用户的鉴权认证

用户的鉴权认证包括两个方面:一是用户在手机客户端输入用户名和密码来对自己的身份进行认证;二是通过建立表与表之间的关联,赋予用户合法的权限。有用户、角色、用户角色、权限、角色权限5个表信息。在这5个表中,一个用户可以隶属于多个角色,一个角色可以拥有一定数量的权限,通过角色赋予用户权限。用户和角色均由管理员创建,系统可以通过用户角色表与角色权限表之间的关联来查看用户权限。用户浏览下载图书时,首先要对其身份进行验证,即在每个页面进行用户校验,可以通过在页面中设置参数来校验当前用户是否为合法用户。若为不合法用户,页面就强制回到登录页面,重新要求输入用户名和密码。若为合法用户,则授予该用户权限信息。如果超越权限,就给出提示信息,如果相关操作在用户权限内,就执行操作。

4.3 手机软件在屏幕上的显示

设计阅览器窗体时,各个控件的大小和位置是固定的,当应用软件移植到与程序中所设置的屏幕分辨率及尺寸大小不同的手机终端时,软件就会在手机上发生变型,因此程序设计时需使软件能够自适应手机屏幕的分辨率和尺寸大小,进而相应地调整控件的大小。

自适应调整控件大小主要考虑的是屏幕分辨率和尺寸大小。其主要思想是由GetSystemMetrics(SM_CYSCREEN) 和 GetSystemMetrics(SM_CXSCREEN) 来获得屏幕的分辨率及尺寸大小,然后把获得的屏幕分辨率和尺寸大小作为变量参与到控件尺寸的计算中,得到自适应后的正确尺寸,把正确尺寸画出来。如果屏幕分辨率发生了改变,则固定窗口大小不变,不改变空间left和top的位置,从横向和纵向对控件和字体的大小按比例进行调节;如果屏幕尺寸大小发生了改变,则可以用窗口的新的宽度和高度与改变前的值相对比,得到一个缩放比例,把这个比例与控件的left、top、width和height属性的乘积作为新的空间位置和大小,重新布局这些控件,进而完成软件的自适应调整。

4.4 连接网络时的超时问题

系统实现时可在程序中设置一个计时器和超时的处理程序来实现对连接时间的控制。当手机发送请求信息接入网络时,计时器开始计时。若连接成功,系统就将计时器关闭。若不能在规定的时间内完成连接,系统用超时处理程序来处理超时问题,终止连接并给用户发出提示信息,让用户选择重新连接或者放弃连接。

4.5 设置书签问题

选择“添加书签”时,程序会截取当前的句子作为书签名放入缓存,并记录当前打开的文件路径。当读者下次打开的时候,系统首先会判断打开的文件是否有阅读进度的记录。如果有阅读进度的记录,直接跳转到记录的位置;如果没有记录,直接返回到系统主目录。

5 结束语

本文结合J2EE和J2ME技术,提出了一种具有较好移植性和较高灵活性的手机图书馆设计方案。这一新型方案较好地运用了Java语言“编写一次,随处运行”的优良特性,将图书馆从传统模式扩展到无线应用领域,满足了用户随时、随地共享图书馆海量电子资源的要求,拓展了手机用户获取图书馆各种服务的渠道,大幅度提高了图书馆资源的整体利用率。

[1]朱全银,章蕙.基于J2ME和J2EE的移动网络游戏系统 [J].计算机工程, 2008, 34 (16): 135-137.

[2]唐润华,等.基于J2ME-J2EE移动集成查询系统的设计与实现 [J].科学技术与工程,2008,8(1): 87-90.

[3] 胡静.基于 J2ME的无线 Internet应用方案 [J].江苏通信技术, 2002, 18 (4): 17-19, 41.

[4]吕林涛,等. 一种基于J2ME的工程图纸档案管理平台 [J].计算机工程, 2007, 33 (24): 283-285.

[5] 百度百科.J2ME[EB/OL].(2010-01-21) [2010-03-19].http://baike.baidu.com/view/7125.htm.

[6]张璞,文登敏.基于J2ME和J2EE的移动电子商务系统研究 [J].成都信息工程学院学报,2006,21 (4): 504-507.

[7] 百度百科.J2EE[EB/OL]. (2010-03-05) [2010-04-11].http://baike.baidu.com/view/1507.htm.

[8] 百度百科.RMS[EB/OL]. (2010-03-18) [2010-03-23].http://baikke.baidu.com/view/413451.htm.

[9]赵刚,等.基于J2ME的无线设备编程源代码解析 [M].北京: 电子工业出版社, 2002: 101-103.

猜你喜欢
服务器端页面客户端
刷新生活的页面
Linux环境下基于Socket的数据传输软件设计
如何看待传统媒体新闻客户端的“断舍离”?
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用
Web安全问答(3)