1、基于J2ME/J2EE的手机校友录系统设计摘要 随着手机的日益普及和Java功能在移动设备上的实现,Java应用程序产生的手机增值服务逐渐体现出其影响力,这对丰富人们的生活内容、提供快捷的资讯起着不可忽视的作用。第三代移动通信的脚步越来越近了,企业应用、多媒体应用和联网游戏逐渐成为了移动开发领域关注的热点。本文介绍了在基于Java 2 Micro Edition(J2ME)规范的手机上开发移动校友录系统。该系统的设计采用了面向对象的方法,对J2ME客户端体系架构,J2EE 服务器体系结构以及移动客户端与J2EE服务器集成进行了设计,实现了现有的Web校友录的基本功能。关键词 J2ME/J2EE
2、 手机 校友录系统The Design of Mobility Alumni System Based on J2ME/J2EEAbstract When cell phone is getting ever more popular nowadays, with the implementation of Java technology on mobile equipment, increment of capital on communication service exhibits its force on peoples everyday life, providing them ev
3、er fast information just in hand. As the third-generation wireless coming along, enterprise applications, multimedia applications and online games gradually become the hotspot in the field of the mobility development.This dissertation introduces that how to develop the mobile alumni system on the mo
4、bile phone with the Java 2 Micro Edition criterion.This system designed the architectures on the J2ME client and the J2EE server, designed the integration between the mobility client and the J2EE server using Object-Oriented technique. It implemented the base functions on the Web alumni in existence
5、.Key Word J2ME/J2EE,mobile telephone,Alumni System1目录第一章 引言11.1 论文研究背景与意义11.2 本课题研究内容与目标1第二章 开发环境及相关技术的介绍22.1 Java语言的特点22.2 J2ME 是什么?32.3 J2ME 总体架构32.4 关于Wireless Tool Kit42.5 关于Netbeans IDE 5.5和Mobility Pack 5.542.6 MIDP应用程序52.7 Java应用程序管理器52.8 预先审核52.9 开发环境的搭建6第三章 需求分析73.1 对功能的规定73.2 用例描述83.3 运行环境
6、规定15第四章 概要设计164.1 系统框架设计164.2 类-责任-协作模型174.3 对象-行为模型184.4 系统状态变迁图19第五章 详细设计205.1 系统体系结构设计205.1.1 客户端/服务器端间的通信205.1.2 服务器端的体系结构设计225.1.3 客户端的体系结构设计235.1.3.1 HTTP联网框架的设计235.1.3.2 用户界面的设计265.1.3.3 用户界面导航的设计275.2 数据结构设计285.2.1数据关系模型295.2.2 实体-关系模型295.2.3 数据字典305.2.4 对象-关系映射325.3系统出错处理设计335.3.1出错信息335.3.
7、2补救措施33结论34致谢语35参考文献361基于J2ME/J2EE的手机校友录系统设计第一章 引言1.1 论文研究背景与意义校友录是一种为用户提供网上交流、聚会的网络工具,它可以提供用户与朋友、同学、同事、老师和亲人等在网上有一个相互交流的机会。目前已有的校友录系统都是基于Web的,其中最著名的就是Sohu ChinaRen的校友录。基于Web的校友录系统可以利用网页丰富的元素和JavaScript等脚本语言构建出内容丰富的用户界面,但是它也存在一定的局限性。校友录系统的用户间的交互是非即时的,也就是主要以留言的方式,虽然目前PC已经普及,但用户还是无法做到随时随地得使用PC连接互联网来访问
8、Web校友录系统,再加上目前基于Web2.0的实名校园社区的出现,使得基于Web校友录的用户数量在逐渐减少。随着第三代移动通信脚步的临近,移动领域的应用将带来越来越巨大的商机。目前绝大多数的主流手机都支持J2ME应用程序,设计基于J2ME的手机校友录系统,结合了手机移动性,使得用户可以随时随地与友人交流,轻松地体验移动网络的方便性。1.2 本课题研究内容与目标本课题采用面向对象的方法,运用J2ME、J2EE、数据库等现有的技术,设计开发一个基于J2ME的手机校友录系统,实现传统的基于Web的校友录系统的基本功能。第二章 开发环境及相关技术的介绍2.1 Java语言的特点平台无关性Java的一个
9、显著优点就是运行时环境提供了平台无关性,它引进虚拟机原理,并运行于虚拟机,实现不同平台之间的Java接口。使用Java编写的程序能在不同的平台运行。Java的数据类型与机器无关,Java规范中没有“依赖具体实现”1的概念。Java中基本数据类型的大小及其算法都做了明确的规定。安全性Java的编程类似C+,但舍弃了C+的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针入侵系统。它提供了安全管理器,防止程序的非法访问。面向对象 Java吸收了C+面向对象的概念,将数据和操作封装于类中,实现了程序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复利用。分布式
10、Java建立在TCP/IP网络平台上,提供了用HTTP和FTP协议传送和接收信息的库函数,使用其相关技术可以十分方便的构建分布式应用系统。健壮性Java致力与检查程序在编译和运行时的错误,并自动回收内存,减少了内存出错的可能性。Java取消了C语言的结构、指针、#define语句、多重继承、goto语句、操作符、重载等不易被掌握的特性,提供垃圾收集器自动回收不用的内存空间。多线程多线程可以带来更好的交互响应和实时行为。适当地使用多线程可以更充分地利用系统资源,使程序的效率大大提升。Java对多线程的处理十分简单,在不同的平台上,调用多线程的代码是完全相同的。2.2 J2ME 是什么?Sun M
11、icrosystems 公司将J2ME 定义为“一种以广泛的消费性产品为目标的、高度优化的 Java 运行时环境,包括寻呼机、移动电话、可视电话、数字机顶盒和汽车导航系统。”1999年6月在Java One Developer Conference上声明之后,J2ME进入了小型设备开发的行列。J2ME通过Java的特性,遵循J2ME规范开发的Java程序可以运行在各种不同的小型设备上。Sun公司希望借助J2ME这把利剑对嵌入式设备这个混乱的领域进行统一,让Java的范围扩展到所有电子设备开发上。按照现在的发展速度,J2ME很快将被广泛应用于消费和嵌入式设备中。J2ME主要适用于小型嵌入式设备,
12、这些设备与PC或是服务器设备相比没有统一的硬件标准、外观与操作方式,其功能也是千差万别的。但是J2ME在适用于这些设备的同时也保留了Java的传统特性,即任何时候和任何地点的代码具有可移植性、部署灵活性、安全的网络传输性,以及代码稳定性。2.3 J2ME 总体架构J2ME 使用配置(Configuration)和简表(Profile)2定制 Java 运行时环境 (JRE)。作为一个完整的JRE,J2ME由配置和简表组成,配置决定了使用的 JVM,而简表通过添加特定于域的类来定义应用程序。配置将基本运行时环境定义为一组核心类和一个运行在特定类型设备上的特定 JVM。简表定义应用程序,特别地,它
13、向J2ME配置中添加特定于域的类,定义设备的某种作用。图2-1描述了不同的虚拟机、配置和简表之间的关系。它同时把 J2SE API和它的Java虚拟机进行了比较。虽然J2SE虚拟机通常被称为一种JVM,但是J2ME虚拟机、KVM 和 CVM 都是 JVM 的子集。KVM和CVM均可被看作是一种 Java虚拟机它们是J2SE JVM 的压缩版,并特定于J2ME。图2-1 不同的虚拟机、配置和简表之间的关系2.4 关于Wireless Tool KitWTK(Wireless Tool Kit)是Sun公司针对J2ME推出的用于手机和Palm等移动设备的开发包,是除手机厂商的专用开发包外唯一的手机
14、模拟器开发包。它通用性高,开发出的应用程序可保证能运行在大部分设备上,而不像专用厂商具有一定的不兼容性。虽然它没有强大的功能和完善的调试手段,但它提供运行模拟器的最基本组件,是其他IDE需集成采用的必备元素。2.5 关于Netbeans IDE 5.5和Mobility Pack 5.5Netbeans是一个开源项目,致力于为开发者提供稳定、出色的开发工具。Netbeans IDE和Netbeans平台是netbeans.org的两个著名产品。目前Netbeans IDE的稳定版本是5.5,Mobility Pack是Netbeans IDE用于开发、测试和调试MIDP应用程序的插件。Mobi
15、lity Pack 5.5可以和Netbeans IDE 5.5无缝集成,支持CLDC1.1和MIDP2.0开发环境。Mobility Pack还可以很容易地与第三方模拟器集成,为开发者提供所需的运行环境。本课题主要使用Netbeans IDE和Mobility Pack搭建开发环境并进行开发、测试与调试。2.6 MIDP应用程序MIDP引入了全新的应用程序模型MIDlet。MIDlet是应用程序的主类,被应用程序管理软件(Application Management Software,AMS)管理。多个MIDlet可以组成MIDlet套件,以jar包的形式发布。与jar文件一起发布的还有一个
16、文本文件Java应用程序描述符(Java Application Descriptor, JAD)。JAD文件的作用在于描述MIDlet套件的基本信息,AMS安装MIDlet套件时可以首先解析JAD文件的内容读取套件信息。按部署方式的不同,MIDP应用程序可分OTA和非OTA两种。MIDlet:是Jave一个类,扩展了javax.microediton.midlet.MIDlet抽象类。MIDlet生命周期分3种状态:运行状态、暂停状态、销毁状态等。 2.7 Java应用程序管理器手机中负责调配程序运行资源的管理后台是Java Application Manager。它所使用的传输媒体可以是红
17、外线、网络、以及其他可用来传输的媒体。Java Application Manager 会从网络上下载代表该Application Suite 的JAR 档,接着在手机上安装此MIDlet Suite,然后在手机开始执行该应用程序。2.8 预先审核由于移动设备的内存大小和处理器的能有都有一定的限制,因此原本在虚拟机中进行的class文件校验审核动作3一般在PC上执行,速度可以接受。为了是对安全的考虑,任何来自本地或者远程机器,都必须经过Byte Code审核器的验证,以防止程序在传输途中遭到恶意更改。2.9 开发环境的搭建1下载JDK和J2ME无线工具包()安装SUN JDK:jdk-1_5_
18、0_06-windows-i586-p.exe安装SUN J2ME SDK:j2me_wireless_toolkit-2_2-ml-windows.exe2下载并安装Netbeans IDE 5.5(beans.org)Netbeans IDE 5.5 集成了Apache Tomcat 5.5.173下载并安装Netbeans Mobility Pack 5.5(beans.org)4下载并安装MySQL5.0()第三章 需求分析3.1 对功能的规定该系统的用户类型分为普通用户和班级管理员用户,班级管理员除了具有普通用户所有的属性和操作外,还具有管理班级的操作。普通用户的基本操作:(1)用户
19、的注册申请和系统登录和注销,并且可以参看系统帮助文档;(2)维护个人信息,包括个人信息的修改和登录密码的修改,查看自己的登录次数和上次登录时间;(3)查找学校和班级,加入自己的班级,或者创建新的学校或班级;(4)查看自己的班级信息和班级成员信息,查看班级留言,添加班级留言,退出班级;(5)查看和发送纸条。班级管理员的基本操作:(1)所有普通用户的基本操作;(2)班级管理,包括班级成员管理。手机校友录系统的User Case如图3-1和图3-2:图3-1 User Case图1图3-2 User Case图2 3.2 用例描述(1)注册新用户用例描述:引言用户必须注册才能登录该系统。主事件流用户
20、在界面上选择“注册”按钮时,用例开始。用户通过按键输入用户名、密码(输入两次)以及其他个人信息,按“提交”按钮进行提交注册。系统验证用户名是否可用。若用户名不可用,系统提示重新输入一个用户名;若用户名可用,系统建立该用户,并返回“注册成功”的提示,该用例结束。异常事件流用户可以在任何时候按“取消”取消一个事务,该用例结束。异常事件流用户按“提交”按钮进行提交时,若用户输入的名不可用或者有一个项为空或者两次输入的密码不同,系统进行提示,并重新输入,用例重新开始。(2)用户登录用例描述:引言用户必须登录该系统,才能进行其他操作。主事件流用户在界面上选择“登录”按钮时,用例开始。用户通过按键输入用户
21、名、密码(输入一次),按“提交”按钮进行登录。系统验证用户名是否存在,并验证密码时候正确。若用户名存在且密码正确,系统承认这次登录,并返回“登录成功”的提示和用户上次登录的时间,用例结束。异常事件流用户可以在任何时候按“取消”取消一个事务,该用例结束。异常事件流用户按“提交”按钮后,若用户输入的用户名不存在,系统给出提示,用户重新输入用户名,重新开始该用例。或者用户选择“注册”按钮,开始一个注册新用户的用例。异常事件流用户按“提交”按钮后,若用户输入的密码不正确,系统给出提示,用户重新输入密码,重新开始该用例。(3)用户注销用例描述:引言用户离开该系统时应进行注销操作。主事件流用户登录后,在界
22、面上选择“注销”按钮,用例开始。系统进行该用户的注销,并返回“成功注销”的提示,用例结束。(4)查看或修改用户信息用例描述:引言用户可以查看或修改自己的个人信息。主事件流用户在界面上选择“个人信息”按钮时,用例开始。系统返回该用户的详细信息,包括用户名、真实姓名、性别、生日、QQ号码、电话号码、MSN帐号、Email地址、联系地址、工作单位,以及用户的访问次数。用户通过按键输入真实姓名、性别、生日、QQ号码、电话号码、MSN帐号、Email地址、联系地址、工作单位,按“提交”按钮进行提交。系统验证各项信息的正确性,若验证通过,系统更新数据库,并提示“用户信息修改成功”,用例结束。异常事件流系统
23、验证信息时发现有一个或多个选项不正确,提示用户重新输入,重新开始用例。异常事件流用户可以在任何时候按“取消”取消一个事务,该用例结束。(5)添加留言用例描述:引言用户可以在已加入的班级里添加留言。主事件流用户进入以加入的班级后,选择菜单“添加留言”项时,开始用例。用户通过按键输入留言内容,按“提交”按钮进行提交。系统将该留言添加进数据库,并提示“留言成功”,结束用例。异常事件流用户可以在任何时候按“取消”取消一个事务,该用例结束。(6)发送纸条用例描述:引言用户可以给班级成员发送纸条。主事件流用户在成员列表里选择“发送纸条”项时,或者查看纸条选择“回复”时,开始用例。用户通过按键输入纸条内容,
24、按“预览”按钮进行预览,按“发送”按钮进行发送。系统接受纸条并加入数据库,提示“纸条发送成功”,用例结束。异常事件流用户可以在任何时候按“取消”取消一个事务,该用例结束。(7)创建学校用例描述:引言用户所在的学校还没有创建时,用户可以创建自己所在的学校。主事件流用户选择“创建学校”按钮时,开始用例。用户通过键盘输入学校名称,通过选择学校所在的省份,按“提交”按钮进行提交。系统验证输入的学校是否已经存在,若不存在,则在数据库里创建该学校的纪录,并返回“学校创建成功”的提示,用例结束。异常事件流若输入的学校已经存在,系统给出提示,用例结束。异常事件流用户可以在任何时候按“取消”取消一个事务,该用例
25、结束。(8)创建班级用例描述:引言用户所在的班级还没有创建时,用户可以创建自己所在的班级。主事件流用户选择“创建班级”按钮时,用例开始。用户通过选择班级所在学校,通过键盘输入班级名称、班主任姓名,按“提交”按钮进行提交。系统验证输入的班级是否已经存在,若不存在,则在数据库里创建该班级的纪录,并返回“班级创建成功”的提示,用例结束。异常事件流若输入的班级已经存在,系统给出提示,用例结束。异常事件流用户可以在任何时候按“取消”取消一个事务,该用例结束。(9)加入班级用例描述:引言用户必须加入自己所在的班级,才能够和班级成员进行交流或者进行班级留言。主事件流用户选择了一个班级,并选择“加入班级”按钮
26、时,用例开始。用户通过按“提交”按钮进行提交。系统将更新数据库,用例结束。异常事件流若用户已经提交过请求,再一次进行提交请求,系统给出提示,用例结束。异常事件流用户可以在任何时候按“取消”取消一个事务,该用例结束。(10)脱离班级用例描述:引言用户可以脱离自己所在的班级。主事件流用户选择了自己所在的一个班级时,并选择“脱离班级”按钮时,用例开始。系统给出“是否要退出该班级”的提示,用户按“确认”,系统删除数据库中的纪录,并提示用户已经退出该班级。异常事件流系统给出“是否要退出该班级”的提示时,用户按“取消”按钮,用例结束。用户并未退出该班级。(11)查找学校用例描述:引言用户可以查找已有的学校
27、。主事件流用户选择“搜索班级”按钮进入搜索界面,选择“搜索学校”时,开始用例。用户通过选择学校所在省份或输入关键字,按“查找”按钮进行查找。系统根据所选择的省份或者根据用户所提供的关键字,从数据库中检索,并返回符合条件的学校列表,用例结束。异常事件流用户可以在任何时候按“取消”取消一个事务,该用例结束。(12)显示班级列表用例描述:引言用户可以查看一个学校的所有班级列表。主事件流用户选择“搜索班级”按钮进入搜索界面,选择“搜索班级”时,开始用例。用户通过输入关键字,按“查找”按钮进行查找。系统根据用户所提供的关键字,从数据库中检索班级,并返回该学校的班级列表。用例结束。异常事件流用户可以在任何
28、时候按“取消”取消一个事务,该用例结束。(13)显示班级留言用例描述:引言用户可以查看所在班级的留言。主事件流用户在所在班级选择“查看班级留言”按钮时,开始用例。系统返回该班级的留言列表。用户选择一条留言,并按“查看留言内容”按钮,系统返回该留言的内容、留言者ID、留言者姓名、留言时间。用例结束。异常事件流用户可以在任何时候按“取消”取消一个事务,该用例结束。(14)显示班级成员列表用例描述;引言用户可以查看所在班级的成员。主事件流用户在所在班级选择“查看班级成员”按钮时,开始用例。系统返回该班级的成员列表。用例结束。异常事件流用户可以在任何时候按“取消”取消一个事务,该用例结束。(15)显示
29、成员详细信息用例描述:引言用户可以查看所在班级成员的成员的详细信息。主事件流用户选择“查看成员详细信息”按钮时,开始用例。系统返回用户选择的成员的具体联系信息,包括成员的ID、姓名、性别、生日、QQ号码、电话号码、MSN帐号、Email地址、联系地址、工作单位,以及该成员的访问次数。用例结束。异常事件流用户可以在任何时候按“取消”取消一个事务,该用例结束。(16)显示纸条用例描述:引言用户可以查看自己的纸条,包括发送的纸条和接收到的纸条。主事件流用户选择“我的纸条”按钮时,开始用例。系统返回该用户的纸条列表。用户选择“查看纸条内容”按钮,系统返回该纸条的内容、发送者ID、发送者姓名、接收者ID
30、、接收者姓名、发送时间。用例结束。异常事件流用户可以在任何时候按“取消”取消一个事务,该用例结束。(17)踢除班级成员用例描述:引言班级管理员可以踢除班级里面的成员。主事件流班级管理员在班级成员列表里,选择一个成员,并按“踢出本班”按钮时,用例开始。系统提示“是否真的要将某某成员踢出本班?”,并给出“确认”和“取消”按钮。管理员若按“确认”按钮,系统将该成员与该班级解除关系,并返回“操作成功”的提示。用例结束。异常事件流用户可以在任何时候按“取消”取消一个事务,该用例结束。3.3 运行环境规定客户端支持J2ME MIDP 2.0并可以连接互联网的手机服务器端PC机或服务器应用程序服务器:Apa
31、che Tomcat 5.5.17数据库系统:MySQL 5.0第四章 概要设计4.1 系统框架设计该系统分为客户端和服务器端两部分。其中,客户端处于J2ME的手机设备上。由于目前无线网络受到传输质量的约束,手机与服务器的通信应尽量减少4;而且手机为资源受限的设备,其计算能力远不如PC机或服务器,因此应让其主要的业务功能处理、运算等交给服务器来完成5,手机只简单地作为表现层。服务器端采用Servlet来进行业务逻辑处理。Servlet可以直接处理HTTP的请求,可以减小客户端与服务器端之间的耦合度,也容易进行后期的扩展,如用JSP等技术构建网页,用PC机上的浏览器登陆后台进行的维护和管理,还可
32、以扩展为用内容更加丰富的Web校友录系统。服务器端则划分为3层。业务逻辑层:主要用Servlet来实现,负责与客户端通信和处理业务数据等功能。持久层 : 采用开源的Hibernate框架,负责访问数据库,提供对业务数据的保存、更新、删除和查询等操作。数据库层: 采用开源的关系数据库系统MySQL。通过以上的分层,将会提高系统的伸缩性、可维护性、可扩展性、可重用性、可管理性等性能。具体的系统框架如图4-1所示:图4-1 系统框架图4.2 类-责任-协作模型根据需求分析中的功能规定和用例描述,可以抽取出以下各个分析类:用户、学校、班级、访问记录、班级留言、纸条。系统具体的类-责任-协作(Class
33、-Responssbility-Collaborator,CRC)模型6如表4-1到表4-7所示:表4-1 User类的CRC模型类名:User类的类型:角色类的属性:用户编号、用户名、密码、真实姓名、性别、生日、QQ号码、电话号码、MSN帐号、Email地址、联系地址、工作单位责任:协作:修改用户密码修改个人信息加入班级与Classes类协作脱离班级与Classes类协作创建班级与Classes类、School类协作创建学校与School类协作发送纸条与Scrip类协作添加班级留言与Classes类协作表4-2 Classes类的CRC模型类名:Classes类的类型:角色类的属性:班级编号
34、、班级名称、班主任姓名、所在学校编号、创建时间责任:协作:创建班级与User类、Member类协作加入成员与User类、Member类协作踢除成员与User类、Member类协作表4-3 School类的CRC模型类名:School类的类型:角色类的属性:学校编号、学校名称、所在省份责任:协作:创建学校与User类协作创建班级与User类、Classes类协作表4-4 Record类的CRC模型类名:Record类的类型:交互类的属性:记录编号、用户编号、登录时间、登录IP责任:协作:查看上一次登录时间与User类协作统计登录次数表4-5 Message类的CRC模型类名:Message类的类
35、型:交互类的属性:留言编号、班级编号、作者编号、留言内容、留言时间责任:协作:添加留言与User类、Classes类协作查看留言与User类、Classes类协作表4-6 Scrip类的CRC模型类名:Scrip类的类型:交互类的属性:纸条编号、纸条内容、发送者编号、接收者编号、发送时间责任:协作:发送或回复纸条与User类协作查看纸条与User类协作表4-7 Member类的CRC模型类名:Member类的类型:交互类的属性:成员记录编号、班级编号、成员编号、管理员标记责任:协作:加入成员与User类、Classes类协作踢除成员与User类、Classes类协作4.3 对象-行为模型用户通
36、过主界面菜单和用户界面导航,可以进行各种操作。用户的网络操作都是通过选择或输入数据,然后由HTTP连接类将请求发送到服务器,然后有相应的Servlet调用相应的业务逻辑方法,将结果返回给客户端或返回错误的响应代码。具体的对象-行为模型如图4-2所示:图4-2 对象-行为模型4.4 系统状态变迁图当用户启动客户端应用程序时,应用程序启动,并处于未登录状态。当用户登录成功后,系统处于已登录状态,可以进行各种操作。当用户注销后,系统处于未登录状态,可重新登录,或退出应用程序。具体的系统状态变迁图如图4-3所示:图4-3 系统状态变迁图第五章 详细设计5.1 系统体系结构设计5.1.1 客户端/服务器
37、端间的通信在移动信息设备简表MIDP(MobileInformationDeviceProfile)中由包javax.microedition.io定义其网络功能。J2ME以接口的形式定义一些能够覆盖网络和文件IO的抽象方法,而将这些接口的实现留给了各个设备制造商。设备制造商可以根据其设备的实际功能选择要在它的特定MIDP中实现哪个接口。MIDP的io包中定义了如下几种通讯类型:*基本串行输入(javax.microedition.io.InputConnection)*基本串行输出(javax.microedition.io.OutputConnection)*数据报通信(javax.mic
38、roedition.io.DatagramConnection)*Client-Server的套接字通信通知机制(javax.microedition.io.StreamConne-ctionNotifier)*与Web服务器进行的基本HTTP通信(javax.microedition.io.HttpConnection)所以J2ME的网络连接方式可以按照通信协议分为多种类别:低级别的IP连接(包括套接字、数据报、串口和文件IO通讯),安全连接(为了和基于WebService进行安全通讯而提供的额外接口,这些接口由IP网络上的HTTPS和SSL/TLS协议7提供)和HTTP连接(用于移动设备和
39、Web服务器互连)。J2EE的客户端通常采用HTTP作为网络传输的协议,HTTP和其他传输协议相比有以下一些优点:广泛的应用背景,几乎每一台计算机都有基于HTTP的Web浏览器,这使得应用的部署更为简单;健壮性和简单性;可以穿透防火墙,因为有大量的HTTP应用,所以一般的防火墙都设置成可以让HTTP通过。在MIDP2.0中,HTTP(或HTTPS)是目前唯一被实现了的网络传输协议,HTTP提供了MIDP和J2EE应用间最合适的传输模式。HTTP是基于请求响应的协议,MIDP客户端传送一个HTTP请求到J2EE的Web服务器,经过处理后返回一个HTTP响应。MIDP标准支持HTTP1.1,包括一
40、系列的API用于产生HTTP GET、POST、HEAD请求,基本的HEAD操作,基于流的处理和传输。本课题采用HTTP协议进行客户端与服务器端之间的通信。另外,中国移动将GPRS分为CMNET和CMWAP两种接入方式8,不同之处在于,CMNET使用直接连接互联网的方式与服务器通信,而CMWAP则是通过WAP网关代理,由WAP网关连接服务器,然后将服务器返回的结果转发给客户端。CMWAP实际上是一种客户端-WAP网关-服务器的连接方式,而CMNET采用的是客户端-服务器端的直连方式。由于存在这两种接入方式,我们的联网代码必须视实际情况而定,如用CMNET方式接入,代码如下所示:public H
41、ttpConnection openConnection() throws IOException HttpConnection conn = (HttpConnection)Connector.open(HOST + /loginAction); return conn;如果手机用户是使用CMWAP方式连接服务器,那么上面的代码必须修改为如下所示:public HttpConnection openConnection() throws IOException HttpConnection conn = (HttpConnection)Connector.open(http:/10.0.0.
42、172+ /loginAction); conn.setRequestProperty(X-Online-Host, 172.22.9.162:8083); return conn;经由CMWAP方式接入时,MIDlet和WAP网关建立连接,地址是10.0.0.172。同时,MIDlet应该在HTTP头(Header)中添加下面的请求信息,X-Online-Host:联网服务器的域名和端口,这样WAP网关作为代理向服务器转发请求。在开发环境中,模拟器连接服务器是直接连接的,所以开发调试的时候用类似CMNET的方式,而发布MIDlet应用程序时,代码则必须根据实际情况而定。目前中国移动的CMNE
43、T方式上网费用昂贵,大部分手机用户采用CMWAP或CMWAP包月方式,所以实际发布时,可按照CMWAP接入方式编写代码。5.1.2 服务器端的体系结构设计服务器端采用的服务器软件是Apache Tomcat Web服务器和MySQL数据库服务器。在逻辑上,将服务器分为3个层次,即业务逻辑层、持久化层和数据库层。其中,业务逻辑层由Tomcat容器的Servlet实现,可以通过HTTP协议直接和客户端进行通信。持久化层采用开源的中间件Hibernate,通过对象-关系映射(Object-Relation Mapping,ORM)模式9将实体对象持久化,并封装数据库的访问细节。这样为服务器端分层可以
44、提高服务器端代码的伸缩性、可维护性、可扩展性、可重用性、可管理性等性能。服务器端的分层体系结构如图5-1所示:图5-1 服务器端体系结构5.1.3 客户端的体系结构设计5.1.3.1 HTTP联网框架的设计通用联网框架应用最为广泛的领域是基于HTTP协议的应用程序开发。本课题提出一个基本的基于J2ME的HTTP开发框架myhttp。设计这个框架可以在J2ME客户端分离网络连接和用户界面,使客户端代码更为清晰,更便于维护。同时,myhttp框架的实现使得J2ME在基于HTTP协议的应用程序中可以重用代码。(1)使用POST方法进行数据传输HTTP最简单、最方便、最灵活的形式就是传送一个HTTP
45、GET或POST请求(Request)给J2EE Server,然后等待Server返回一个响应(Response)。在GET请求中,请求的信息数据被附加到URL中传送到服务器,而POST请求的数据则是和URL分开传送的,这样有两个好处:一是对传送的数据量大小没有限制,二是数据以分开的流传输,可以是其他的各种格式,包括二进制数据,而且对用户是不可见的。服务器端用字节流的形式返回必要的数据给客户端,最大限度地减少网络传输量,同时也减少了用户等待的时间。(2)模仿HTML表单采集数据通常,从Form中读取Item数据时,都是调用Item相关的getXXX()方法,这多少有些麻烦。对比之下,Web应用程序中的HTML标记FORM中的元素是不需要代码处理的,只要为元素指定名称属性即可。浏览器会把整个Form提交给
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922