《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > 用JAVA手机购物

用JAVA手机购物

2009-01-06
作者:曹斌

一、概述 

    本文主要阐述了基于motorola388 手机的手机购物系统的设计思想和实现原理。该系统是桌面型客户关系管理系统在智能移动终端上的扩展,应用于广大的手机用户(包括个人用户及企业级用户)。手机购物打破传统的购物理念,人们不必亲自去商场选购商品,可以通过手机的服务实现随时随地购买商品,享受服务。系统开发时,我们采用了Java 无线应用技术(参见『1』),在J2ME(CLDC+MIDP) + JSP平台上实现企业级的多层分布式体系架构,并利用XML 技术进行数据传输和交换。 

二、需求分析 

◆  系统需求 

    本系统是一个纯Java解决方案的End2End的移动商务(m-Commerce)系统,它以无线的方式向用户提供商品的购买和相关的一系列服务。该系统限于支持Java的手机用户使用。 

    为提高商家的服务项目及服务质量,满足客户的需求,以人为本,使人感到方便快捷,达到随时随地购买商品,享受服务。使用的开发工具及软件:J2SDK1.3.1 + JBuilder7 + J2Mewtk1.0.3 + jakarta-tomcat-4.0 + Access。 

◆  客户需求分析 

●  购买商品,满足客户需要 

●  提供送货上门服务,方便客户 

●  提供餐饮食品即食服务 

◆  运营设想 

    目前有很多很成功的办理即食餐饮业服务的公司,例如startbucks(星巴克)『2』,他们的运营方式很值得借鉴: 

    (1)注册:用户首先通过网络注册,包括用户信息注册以及汇预付款(或者用招商银行一卡通网上转帐)。由于目前国内支付方式的限制,预付款是一个很好的负费解决方案,用一卡通直接转帐也是方案之一。 

    (2)购买:用户完成注册后即可通过无线客户端进行商品的购买,尤其是食品,满足客户在任何地点享受餐饮服务的需要。为方便用户,可选择上次所购买的商品,简洁快速,缩短客户的选购时间。客户既可以通过手机连接到网络,进行选购,也可以通过PC机,登陆到服务商的网站上,进行商品的选购。 

三、系统设计与实现 

    考虑到系统的安全性、扩展性和可维护性,我决定在 JSP 平台下开发服务器端程序,这样做的复杂度低,成本低,系统性能优越。系统客户端是运行在motorola388 手机上的,因此必须充分考虑其特点,并在开发中加以应用。也可考虑使用其他型号的手机,只要支持Java技术。系统设计的目标是分开数据库、业务逻辑层和表示层,是一个典型的三层构架模式。如下图所示: 

             

    下文将对其设计思想和实现原理进行详细阐述。 

1.客户端 

    客户端获得用户请求并提交远程服务器,得到结果并加以表现。客户端分为两部分,一部分是在手机上运行的,另一部分是在电脑的浏览器上运行的。中间通过HTTP协议与服务器端连接。我选择在J2ME(CLDC+MIDP)平台上开发客户端程序,由于MIDlet 程序开发具有内存小、界面简单、有限的运算能力和网络性能等特点,需要重点设计以下几个方面: 

    ① 与服务器之间的通信 

    J2ME 支持打开网络连接并传送数据,访问远程服务器资源。首先,用户在离线方式下设置系统参数,指定本公司Web服务器的IP地址、端口和Web根目录,选择工作方式。随后,程序把相关信息写进本地数据库。每当系统启动或者切换工作方式时加载,使得MIDlet工作在适当的状态。 

MIDlet 编程支持Http 网络连接『3』: 

HttpConnection conn = (HttpConnection)Connector.open(url); 

    这样就在客户端与服务器之间建立了Http连接,其中url存储了请求参数信息,比如: 

url = “http://www.mcrm.com:8000/CRMRoot/custCreateAlias?id=001&name=…” 

    服务器中相应的servlet将调用doGet()方法处理请求,返回响应,从而把业务逻辑的处理交给了服务器端,达到了“瘦”客户端的设计目标。建好Http连接以后,就可以方便的操作数据流,进行数据读写了: 

InputStream in = conn.openInputStream(); 

int data; 

while (data=in.read()!=0){…} … 

    客户端编程的重点在于准确地提交用户请求参数:查询商品信息、所选的商品情况、地址信息和服务请求等,并可对查询到的结果进行更新、选择。 

    ② XML解析 

    XML(Extensible Markup Language)是一种独立于系统的表达数据信息的标记语言,现已成为网络系统中通用的数据交换格式。本系统采用XML技术进行数据交换,利用它的分级结构,很容易访问到所需的数据信息。这就意味着想要取得远程服务器端XML文档中的数据信息,MIDlet编程就必须支持XML解析技术。从网上不难得到J2ME端的XML解析器。由于手机上没有XML解析器,且手机的资源非常有限,本系统采用的是较小的KXML解析器,它是一种非确认(non-validating)、单步(single-step)的解析器。KMXL解析整个XML文档并把它转换成一棵元素树,可以通过调用方法getChildren、getTagName、getContents 等来遍历整棵树,得到数据信息。服务器端用JSP来接收参数,使用一个BEAN来封装对数据库的操作 

2.表示层 

    Servlets和JavaBeans构成了表示层。这是一种控制结构,减低了视图与模型之间的耦合性。当Servlet响应到一个HTTP GET 请求时,doGet()方法被service()方法的默认实现所调用,并把request对象和response对象作为参数传给该函数。程序覆盖了doGet()方法,所做主要工作是创建JavaBeans实例,传递request对象,调用bean方法,取得存放于bean中的数据,返回结果(XML 文档)。JavaBeans封装了更为复杂的业务逻辑Application,Server,JDBC,CommodityList方法执行各种数据存取的事务。它是一种可重用组件,提高代码复用性,加快了软件开发过程。如上所述,系统利用JAXP和W3C『4』提供的访问XML的接口DOM来处理XML文档。 

3.业务逻辑层 

    目前,业务逻辑层仅用了JSP,JavaBeans,Servlet来实现,以后将升级为EJB的版本。主要完成客户端与服务器端的连接及数据处理问题,包括客户申请服务,验证客户提交的信息是否符合格式要求,处理客户提交的请求,返回客户信息,上次的商品购买信息及商品列表,客户选择后,将所选商品列表及所在地址发送到服务器端,最后由服务器端确认后,完成这一系列的操作。 

    业务逻辑层包括用XML进行数据的传输,用Servlet实现。从数据库中得到所需数据,将其以XML的格式输出,并不需要建立具体的XML文件。用XML传输数据也便于客户端的接收,是数据的传输统一规范。 

4.数据库 

    数据库端我使用的是Microsoft Access,利用SUN公司提供的JDBC API可以很方便地操作关系型数据库(RDBMS),如上所述,JavaBeans要与数据库表建立了一种良好的映射关系,设计数据库时要注意主键值,它是唯一标识。 

    本系统数据库共建立了三张表,见下表: 

       

    在整个开发周期中,需不断精化和细化用户需求,改进用例与建模,改变数据库中的表,迭代构造和测试,使系统趋于完善。 

四、结束语 

利用Java无线应用技术,结合J2ME和JSP平台,可以设计并开发出健壮、高效的企业级无线应用程序,帮助企业提升经济效益。还可以使用J2EE平台『5』,将更好的完善服务器端,具有更好的安全性,更高的效率。现在,越来越多的电信厂商生产出性能优越的Java手机,而且在电信运营商、电信设备制造商和应用程序开发者之间存在着一种较好的盈利模式。Java手机也在不断的发展,屏幕增大,使用彩屏,等等。相信Java无线应用会有更加美好的发展。 

参考文献: 

『1』http://wireless.java.sun.com 

『2』http://www.cooltown.com/mpulse/0902-starbucks.asp 

『3』http://wireless.java.sun.com/midp/articles/tutorial2/ 

『4』http://www.w3.org/ 

『5』http://java.sun.com/j2ee/tutorial/index.html 

一些商品信息: 

Coffee:  http://www.starbucks.com/shop/category.asp?category%5Fname=Coffee 

Ice cream:  http://www.starbucks.com/grocery/icecream.asp 

StarbucksDoubleShot:   http://www.starbucks.com/grocery/dblshot.asp  

bottledFrappuccino:  http://www.starbucks.com/grocery/frappuccino.asp 

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。