毕业设计Java基于RFID的景点导览系统_第1页
毕业设计Java基于RFID的景点导览系统_第2页
毕业设计Java基于RFID的景点导览系统_第3页
毕业设计Java基于RFID的景点导览系统_第4页
毕业设计Java基于RFID的景点导览系统_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西安理工大学毕业设计(论文)题目基于RFID的景点导览系统专业软件工程年级软件051学号324学生234指导教师234完成时间234摘要随着移动设备普及和无线通信技术的迅猛发展,无线射频识别技术应用的范围越来越广。本文从现实需求出发,设计一个基于RFID的景点导览系统。J2ME(Java2MicroEdition)是Java语言三大平台之一,它主要针对资源受限设备进行应用程序的开发。它将Java语言的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序。J2EEJava2平台企业版(Java2Platform,EnterpriseEdition)是一套全然不同于传统应用开发的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。本文采用这两种技术来进行基于RFID的景点导览系统的设计与开发。论文首先介绍了J2ME技术的一些基本概念及体系结构,MIDP的基本编程方法。然后介绍了J2ME的技术以及struts的相关知识。接着,重点的介绍了基于RFID的景点导览系统的设计与开发过程,根据总体设计,提出了系统设计模型。系统分为服务器端和客户端,服务器端由一系列struts框架开发实现,客户端利用开发MIDlet实现。服务器端有两种用户:管理员和游客,管理员功能主要是对景点信息的修改、标签的管理、景点客流量的统计、游客的旅游日志管理以及客户端服务信息管理功能。客户端功能主要是查询定位功能、地图展示、地图展示、行程规划以及随身贴士功能。本文重点介绍了这些功能的实现与设计。然后对系统设计与编码过程中所遇到的重点难点作了介绍,最后,对本文工作做出了总结,并提出了进一步工作的设想。关键词:RFID、J2ME、J2EE、struts、框架AbstractAlongwithmobileequipmentpopularandwirelesscommunicationtechnologyrapiddevelopment,thewirelessradiofrequencyrecognitiontechnologyapplication'sscopeisgettingmoreandmorebroad.Thisarticleembarksfromtherealisticdemand,designsonebasedontheRFIDscenicspotsurveysystem.J2ME(JAVA2MICROEDITION)isJAVAlanguageoneofthreebigplatforms,itmainlyaimsattheresourcestolimittheequipmenttocarryontheapplicationprocedurethedevelopment.ItthecharacteristicwhichhasnothingtodowiththeplatformtransplantstheJAVAlanguagetotheminiaturizedelectronicson,betweenthepermissionmigrationradioequipmentrepsharestheapplicationprocedure.J2EEtheJAVA2platformenterpriseversion(JAVA2PLATFORM,ENTERPRISEEDITION)isasetiscompletelydifferentinthetraditionalapplicationdevelopmenttechnicalconstruction,containsmanymodules,mainlymaysimplify,andthestandardapplicationsystem'sdevelopmentandthedeployment,thenenhancetheprobability,thesecurityandusethevalueagain.ThisarticleusesthesetwokindoftechnologiestocarryonbasedontheRFIDscenicspotsurveysystem'sdesignandthedevelopment.ThepaperfirstintroducedJ2MEtechnologysomebasicconceptsandthearchitecture,theMIDPbasicprogrammingmethod.ThenintroducedtheJ2MEtechnologyandtheSTRUTSrelatedknowledge.Then,thekeyintroductionbasedontheRFIDscenicspotsurveysystem'sdesignandtheperformancehistory,accordingtothesystemdesign,proposedthesystemdesignmodel.Thesystemdividesintotheserverendandtheclientside,theserveroriginaseriesofSTRUTSframedevelopmentrealizes,theclientsideusedevelopsMIDLETtorealize..Theserverendhastwokindofusers:Themanagerandthetourist,themanagerfunctionismainlytothescenicspotinformationrevision,label'smanagement,thescenicspotpassengercapacitystatistics,tourist'stravelingdiarymanagementaswellastheclientsideserviceinformationmanagementfunction.Theclientsidefunctionismainlyinquiresthelocalizationfunction,themapdemonstration,themapdemonstration,thetravelingscheduleplanaswellasalongwiththetipsfunction.Thisarticleintroducedwithemphasisthesefunction'srealizationwithdesigns.Thenthekeydifficultywhichmeetstothesystemdesignandthecodeprocessmakessaidthatfinally,workedtothisarticlehasmadethesummary,andproposedfurtherworkedtentativeplanKeywords:RFID、J2ME、J2EE、struts、Frame.目录第一章绪论 1课题背景与意义 11.1.1基于RFID的景点导览系统概述 11.1.2移动通信技术的发展现状及趋势 2射频识别系统的定义 2选题的目的和意义 21.2无线射频识别RFID 31.2.1RFID简介 31.2.2RFID组成及工作原理 41.2.3RFID的优势 51.3论文主要工作与结构 5第二章相关技术 72.1J2ME技术介绍 72.1.1Java技术的分类 72.1.2J2ME的优势 82.1.3J2ME的体系结构 82.2MIDP的编程方法 112.2.1J2MEWirelessToolkit的安装 112.2.2MIDlet程序的基本结构 112.2.3MIDlet的生命周期 132.2.4MIDlet应用程序开发流程 142.3struts开发 142.3.1struts的定义 142.3.2Struts的概念和体系结构 152.3.3struts配置 162.3.4struts的基本元素 172.3.5struts的国际化 182.3.6struts的特点 18第三章基于RFID的景点导览系统实现 20系统概述 20客户端功能模块实现 22查询定位功能 223.2.2地图展示功能 24行程规划功能 31旅游黄页功能 31景点介绍功能 32随身贴士功能 363.3服务器功能实现 36服务器访问数据库数据 363.3.2游客登陆注册 383.3.3游客订票服务 393.3.3景点查询功能 413.3.4景点维护功能 413.3.5系统设备管理功能 423.3.6游客信息管理功能 433.3.7客流量信息管理功能 453.3.8服务信息管理功能 483.4数据库功能实现 49第四章难点与对策 54struts学习 544.2J2ME地图处理 54第五章结论 56总结 56展望 56致谢语 57参考文献 57第一章绪论1.基于RFID的景点导览系统概述最近几年,RFID(无线射频识别技术)被广泛的利用在各方面,现在越来越多的移动设备都提供了无线上网功能,也有越来越多的地方开始设置无线网络基站以提供无线上网服务。移动设备与无线网络的结合将带给生活更多便利。同时,已经有很多款移动智能终端提供了RFID读写器配件,可以方便的将RFID技术和智能终端的无线网络服务相结合。现阶段,在旅游区所采用的导览服务大概分为如下两种方式:(1)用录音带的语音导览。它的优点是参观者可自由走动,选择本身有兴趣的展品或展区参观学习。但由于储存容量的限制,当参观者想多获取比较感兴趣的展品的一些相关知识时,其往往无法提供较全面的知识,且互动性不足,加之体积庞大,难吸引小朋友使用。此外,听障朋友们也无法享受语音导览的解说方式。(2)解说员导览方式。它由一名解说员带领一群参观者重点式地解说重要的文物或景点,其优点为可以即问即答,但是参与的参观者必须亦步亦趋地跟随解说员,且须凝神注意聆听解说,给参观者在学习中造成不便,且解说人员的数目有限,加之培养专业解说人员需要花费大量的人事开销,非常不符合经济效应。本文提出使用RFID技术开发出一套运行在移动终端的导览系统——基于RFID的景点导览系统。本系统可以在客户端通过查看电子阅读器来选择相关景点的图文声像的信息,也可以根据景点客流量以及喜好程度来选择导览线路,服务器端可以由管理员来管理相关的设备、游客和景点信息。移动通信技术的发展现状及趋势当前,移动、无线技术领域正处在一个高速发展的时期,各种创新移动、无线技术不断涌现并快速步入商用,移动、无线应用市场异常活跃,移动、无线技术自身也在快速演进中不断革新。在网络融合的大趋势下,3G、WiMAX、WLAN等各种移动、无线技术在演进中相互融合。在多元融合的大趋势下,3G、WiMAX、WLAN等各种无线技术在竞争中互相借鉴和学习,涌现出了同时被上述无线技术采用的新型射频技术,如MIMO和OFDM技术等。与此同时,在以ITU和3GPP/3GPP2为引领的蜂窝移动通信从3G到E3G,再走向B3G/4G的演进道路上,以及IEEE引领的无线宽带接入从无线个人域网到无线局域网、无线城域网,再到无线广域网的演进道路上,都开始增加对方的内容,例如:移动通信不断强化宽带传输性能,无线宽带接入不断增强漫游性能以及安全性能。射频识别系统的定义射频识别(RadioFrequencyIdentification,RFID):俗称电子标签,是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据,识别工作无须人工干预,可工作于各种恶劣环境。RFID技术可识别高速运动物体并可同时识别多个标签,操作快捷方便。它由标签(Tag)、阅读器(Reader)、天线(Antenna)组成。RFID技术的基本工作原理:标签进入磁场后,接收解读器发出的射频信号,凭借感应电流所获得的能量发送出存储在芯片中的产品信息(PassiveTag,无源标签或被动标签),或者主动发送某一频率的信号(ActiveTag,有源标签或主动标签);解读器读取信息并解码后,送至中央信息系统进行有关数据处理。选题的目的和意义“随着计算机技术、无线网络通信以及互联网技术飞速发展,RFID产业将在各个领域大放异彩。”,彼得•哈若普如是说。RFID应用领域日益扩大,现已涉及到人们日常生活的各个方面,并将成为未来信息社会建设的一项基础技术。RFID可以应用于图书与文档管理、门禁管理、定位与物体跟踪、环境感知和支票防伪等多种应用领域。但在旅游业上的应用还仅限于门禁管理。RFID技术作为未来最有前途的信息技术之一,更得到了全世界的广泛重视,在很短的时间内取得了巨大发展。近两年,社会各界也越来越重视RFID技术在国内的发展和应用。领域内的各大企业纷纷投入到研究、开发技术与应用的队伍中来。研究与开发RFID导览系统的目的是为参观者自动提供个性化和交互式的多媒体信息。参观者利用带有CFRFID读写器的PDA读取景点处的RFID标签后,关于此景点的详细数据、资料、图片或者影片等丰富的多媒体导览资讯马上显示出来。RFID导览系统让参观者可随兴趣,自然地取得景点的导览资料,给参观者带来极大的便利。1.2无线射频识别RFIDRFID简介RFID是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据,识别工作无须人工干预。作为条形码的无线版本,RFID技术具有条形码所不具备的防水、防磁、耐高温、使用寿命长、读取距离大、标签上数据可以加密、存储数据容量更大、存储信息更改自如等优点,已经被世界公认为本世纪十大重要技术之一,在生产、零售、物流、交通等各个行业等各个行业有着广阔的应用前景。利用智能电子标签来标识各种物品的一种新的识别技术,其核心是智能电子标签,这种标签根据无线射频标识原理RFID(RadioFrequencyIdentificationSystem)而生产,它与读写器通过无线射频信号交换信息,电子标签是未来标签市场的一种终极产品。现在,RFID是AIDC领域最热门的技术,尽管这种技术已经存在发展了许多年了,但它只有在从本领域众多的发明技术中总结规划出一个技术标准以后才能得到快速的切实的应用,ISO和AIM(AUTO-IDMANUFACTURES)正在进行这方面的工作,相信不久的将来,RFID会得到很快的发展。1.2.2RFID组成及工作原理(1)标签标签也被称为电子标签或智能标签,它是内存带有天线的芯片,芯片中存储有能够识别目标的信息。RFID标签具有持久性,信息接收传播穿透性强,存储信息容量大、种类多等特点。有些RFID标签解读器通过接收标签发出的无线电波接收读取数据。最常见的是被动射频系统,当解读器遇见RFID标签时,发出电磁波,周围形成电磁场,标签从电磁场中获得能量激活标签中的微芯片电路,芯片转换电磁波,然后发送给解读器,解读器把它转换成相关数据。控制计算器就可以处理这些数据从而进行管理控制。在主动射频系统中,标签中装有电池在有效范围内活动。支持读写功能,目标物体的信息能随时被更新。(2)读写器读写器分为手持和固定两种,由发送器,接收仪,控制模块和TRANSCEIVER组成,TRANSCEIVER和控制计算机或PLC连接从而实现它的沟通功能。解读器也有天线接收和传输信息。(3)数据传输和处理系统工作原理:解读器通过接收标签发出的无线电波接收读取数据。最常见的是被动射频系统,当解读器遇见RFID标签时,发出电磁波,周围形成电磁场,标签从电磁场中获得能量激活标签中的微芯片电路,芯片转换电磁波,然后发送给解读器,解读器把它转换成相关数据。控制计算器就可以处理这些数据从而进行管理控制。在主动射频系统中,标签中装有电池在有效范围内活动。1.2.3RFID的优势(1)RFID通过自动的方式迅速简便无误的获得关于产品,地点,时间,交易的信息。不用接触,看见目标,即使物品被牢固包装或是环境不适,也不会影响它的识别功能。这是它有别于条形码的一大特点。(2)RFID并不仅仅是代码,它能够读写数据,能够在处理系统中储存资料,并可以将其连接到PC或PLC网络上。RFID能够提高数据质量,货物管理,资料持久保存等。(3)RFID在供货链中的运用能够提高管理,加强终端对终端的连接。RFID的运作不需要人工介入,它无线运作,具有读写功能。1.3论文主要工作与结构本文的工作主要包括:(1)学习和了解了移动RFID相关概念、理论和设计方法。(2)分析现阶段RFID的设计原理和实现方法。(3)学习掌握sqlserver数据库、服务器开发原理及其应用,深入学习J2EE及J2ME的开发原理,采用三层结构模型。(4)基于J2ME技术,开发实现一个基于RFID的景点导览系统,系统包括三个层次:服务器端:A)采用tomcat服务器作为servlet的引擎,支持不同类型的应用服务程序。b)采用struts框架设计和设计和开发课题。客户端:a)采用J2ME的CLDC/MIDP规范,通过协议向服务器发出请求。b)采用多线程技术和消息队列处理用户操作和服务器消息,有效解决了响应及显示的及时性。数据层:a)采用数据库sqlserver2000数据。(5)对本文所开发的系统的重点难点作出了总结。论文共分5章,结构如下:第一章为前言,简单介绍了当前RFID应用的发展现状,RFID实现的意义和目标以及RFID的基本理论。第二章主要对景点导览系统的开发技术进行了介绍。对J2ME技术、J2EE技术、MIDP的编程方法进行详细的介绍。第三章是本文的重点,详细讲述了景点导览系统的实现过程。分别讲述了客户端的实现原理、代码及图示,服务器端的实现原理、代码及图示,比较清晰的展现了系统的功能实现。第四章主要是针对在开发过程中遇到的难点的一个回顾。因为在每个阶段都会遇到很多问题、难点,所以在这里列出几个来重点讲解一下,也从侧面来反映系统的开发过程。第五章是对整个学习过程的总结,讲述自己在学习过程中的心得体会。第二章相关技术2.1J2ME技术介绍Java技术的分类图2SEQ图表\*ARABIC\s11Java体系结构Java的最大目标和特点,就是“一次编写,到处运行”的平台无关性。但是,正如Sun认识到的,一套标准无法适应各式各样的需求。因此,Java技术目前共有三套,分别针对不同的平台的应用。Java2PlatformStandardEdition(J2SE,java标准版):针对桌面端的PC和工作站的个人和低端商务应用。Java2PlatformEnterpriseEdition(J2EE,java企业版):针对服务器端企业级应用,支持Servlet、JSP和XML等等。Java2PlatformMicroEdition(J2ME,java移动版):针对有限内存、显示和处理能力的设备,主要是消费电子和嵌入式设备领域(这实际正是Java语言设计最初的目标领域)。J2ME的优势移动设备PDA市场的繁荣发展造成了五花八门的厂商与品种异常广泛的设备例如两种设备也许具有相同的功能当实现的方法可能会有相当大的区别例如对PDA和手持来说都具有显示的功能但屏幕的实际尺寸却有很大的区别支持的色深也不相同重复的开发工作以及移植的不便性使得开发成本与开发难度不断提高这就使得设备厂商要求拥有一个统一的开发平台J2ME的体系结构值得注意的是,Java所宣称的“一次编译,到处运行”在这里是不适用的。这种“跨平台”在某些时候是毫无意义的。在J2SE上编译好的程序在J2ME上是没办法运行的,因为从两种平台所支持的类库到程序的结构都有所不同。所以在设计J2ME应用时应该充分考虑到这些因素。下图给出J2ME一个总体的构架。图22J2ME一个总体的构架下面我们分别来介绍这三部分:ConfigurationJ2ME将嵌入式设备分为两类:一种是CDC(ConnectedDeviceConfiguration,资源无限设备),另一种是CLDC(ConnectedLimitedDeviceConfiguration,资源受限设备)。资源受限设备一般指、PDA这种运算能力有限、电力供应依靠电池、网络带宽有限的设备。而资源无限设备是相对资源有限设备来说的,它们一般有充足的电力供应,如电视机顶盒等。在CDC和CLDC规范中,又分别定义硬件要满足的要求。如表2-1:表2-1CLDC和CDC的比较CDCCLDCJSR编号JSR-36JSR-30电源供应充足电池供电有限网络必须有连接网络的能力仅支持有线方式的网络连接功能主要应用电视机顶盒、高端PDAetc.、双向寻呼机、PDAetc.虚拟机CVMKVM支持的ProfileFoundationProfileMIDPRAM不小于256KRAM与ROM再加闪存要为128k~512kROM不小于512KRAM与ROM再加闪存要为128k~512k在规范中所定义的类库除了Java标准核心类库的子集外,也加入了与该类型的设备特性相符的扩充类库。整体来说,J2ME先把所有的嵌入式设备利用Configuration概念化分成两种类型,与其它Java版本对于核心类库与扩充类库的概念相比较。CLDC和CDC的范围应该如图23所示:图23CDC、CLDC的范围Profile通常同一个Java程序在不同的嵌入式设备上所显示的用户界面风格不完全一样。在不同设备上具体应该怎样显示就定义在Profile中。Profile中也定义了程序应该如何与用户或设备交互(例如,程序的生命周期,如何接受来自用户的信息)。Profile中定义的扩充类库是根据底层Configuration内所定义的核心类库所建立的,为了更符合特殊设备的需求,Profile会在Configuration中的类增加新的方法,或是让方法抛出新的异常。在Profile中也定义了特定种类嵌入式设备的最小配备需求。一般情况下Profile对显示功能、网络功能以及耗电量等相关需求会比Configuration中的需求要高。建立在CLDC上的Profile有:MIDP(MobileInformationDeviceProfile),这个Profile是针对移动设备所定义的,如、寻呼机等,本文客户端的实现就是采用MIDP2.0。所以说本系统的客户端不只是,而是所有采用MIDP2.0规范的移动设备。InformationModuleProfile,是为不需要图形界面的小型设备定制的。另外各个生产厂商也制定了自己的各种Profiles。OEMExtensions/OptionalPackage。除了Configuration和Profile之外,在J2ME规范中还定义了厂商选择性实现包。厂商选择性实现,通常是一些本身具有独立价值的API,厂商可以依照自己的需求,选择性的实现其中某些OptionalPackages规范。厂商选择性实现包与CLDC和MIDP的关系如下图2-4所示:图24CLDC和MIDP的关系2.2MIDP的编程方法J2MEWirelessToolkit的安装MIDP应用程序的外,还必须借助一些特殊的开发工具和程序库。因此必须要额外安装J2MEWirelessToolkit(简称WTK)。您可以该站点:2,下载该软件的最新版本J2MEWirelessToolkit2.2.1MIDlet程序的基本结构在MIDP中定义了一种新的应用程序模型MIDlet。MIDlet是一个可以执行的应用程序及基本单位,它继承自javax.microedition.midlet.MIDlet,被JAM(JavaApplicationManager)管理,同时MIDlet可以和JAM通信。通知应用管理软件自己状态的变化,通常是通过方法notifyDestroyed()和notifyPaused()实现的。MIDlet继承自javax.microedition.midlet.MIDlet。该类中定义了三个抽象方法startApp(),pauseApp()和DestroyApp()。因此,我们编写的程序必须重写这三个方法。一个MIDlet应用程的基本程序结构如下:代码importjavax.microedition.midlet.*;importjavax.microedition.lcdui.*;publicclassHelloWorldextendsMIDletimplementsCommandListener{privateCommandexitCommand;privateTextBoxtb;publicHelloWorld(){exitCommand=newCommand("Exit",Command.EXIT,1);tb=newTextBox("HelloMIDlet","Hello,World!",15,0);tb.addCommand(exitCommand);tb.setCommandListener(this);}protectedvoidstartApp(){Display.getDisplay(this).setCurrent(tb);}protectedvoidpauseApp(){}protectedvoiddestroyApp(booleanu){}publicvoidcommandAction(Commandc,Displayabled){if(c==exitCommand){destroyApp(false);notifyDestroyed();}}}MIDlet的生命周期MIDlet有三个状态,分别是Pause,Active和Destroyed。在启动一个MIDlet的时候,应用管理软件会首先创建一个MIDlet实例并使得他处于Pause状态,当startApp()方法被调用的时候MIDlet进入Active状态,也就是所说的运行状态。在Active状态调用destroyApp(booleanunconditional)或者pauseApp()方法可以使MIDlet进入Destroyed或者Pause状态。事实上,当destroyApp()方法被调用的时候,AMS通知MIDlet进入Destroyed状态。在Destroyed状态的MIDlet必须释放了所有的资源,并且保存数据。如果unconditional为false的时候,MIDlet可以在接到通知后,抛出MIDletStateChangeException而保持在当前状态。如果设置为true。的话,则必须立即进入destroyed状态。图25说明了MIDlet状态改变情况。图25MIDlet生命周期MIDlet应用程序开发流程图2-7所示是标准的Java程序的开发流程。首先编写代码,然后编译源代码为class文件。编译好的class文件还要经过预先审核才能在KVM上运行。根据MIDP规范,一个程序最终必须经过打包合成,才能被JAM顺利加载运行。所以最后利用JDK内附的jar.exe这个包装工具产生JAR文件。至此一个MIDlet应用程序的开发就完成了。一个完整的MIDlet应用程序是由两个文件组成:应用程序主体(JAR文件,ZIP压缩文件)和应用程序描述文件(JAD文件,纯文本文件)。JAD文件有两个作用:一是用户在下载MIDlet前可以先下载JAD文件,JAD文件一般体积比较小,看过JAD文件后决定是否下载应用程序,这样可以节省费用;二是在JAD文件中可以加入证书(Certificate),以确保通过网络传输的应用程序在传输过程中没有被篡改。2.3struts开发struts的定义框架(framework)是可重用的,半成品的应用程序,可以用来产生专门的定制程序[Johnson]。框架向开发人员提供一系列具有以下特征的骨架组件:(1)已经知道它们在其它程序上工作的很好;(2)它们随时可以在下一个项目中使用;(3)它们可以被组织的其它团队使用;Struts框架是基于Model2的架构。它提供一个控制器servlet来处理导航流和一些特殊类来帮助数据访问。随框架也提供一个丰富的标签库,以使Struts易于和JSP一起使用。Struts的概念和体系结构Struts有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts可以很容易的与数据访问技术相结合,包括EJB,JDBC和ObjectRelationBridge。在视图层,Struts能够与JSP,VelocityTemplates,XSL等等这些表示层组件相结合。strutsframework是MVC模式的体现,下面我们就从分别从模型、视图、控制器来看看struts的体系结构(Architecture)。下图显示了strutsframework的体系结构响应客户请求时候,各个部分工作的原理:图26struts的体系结构从视图角度(View)首先,Struts提供了Java类,Java开发者将该类细分来创建表单bean。在运行时,该bean有两种用法:(1)当JSP准备相关的HTML,表单以进行显示时,JSP将访问该bean(它保存要放入表单中的值)。那些值是从业务逻辑或者是从先前的用户输入来提供的。(2)当从Web浏览器中返回用户输入时,该bean将验证并保存该输入以供业务逻辑或(如果验证失败的话)后续重新显示使用。其次,Struts提供了许多定制JSP标记,它们的使用简单,但是它们在隐藏信息方面功能强大。例如,除了bean名称和给定bean中每个段的名称之外,页面设计者不需要知道有关表单bean的更多信息。从模型角度(Model)Struts虽然不直接有助于模型开发。在Struts中,系统模型的状态主要由ActiomFormBean和值对象体现。从控制器角度(Controller)在Strutsframework中,Controller主要是ActionServlet,但是对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成(也许这几个组件,应该划分到模型中的业务逻辑一块)。其中,Action扮演了真正的控制逻辑的实现者,而ActionMapping和ActionForward则指定了不同业务逻辑或流程的运行方向。struts配置(1)Struts可以不需要安装(2)拷贝strutslib下的所有的jar包到WEB-INF/lib下(3)修改文件,配置ActionServlet.ActionServlet</servlet-class>

<init-param>

<param-name>config</param-name>

<param-value>/WEB-INF/struts-config.xml</param-value>

</init-param>

<init-param>

<param-name>debug</param-name>

<param-value>3</param-value>

</init-param>

<init-param>

<param-name>detail</param-name>

<param-value>3</param-value>

</init-param>

<load-on-startup>0</load-on-startup>

<!--

0表示用时才加载,一般配置成正数,表示容器一启动就加载servlet,

-->

</servlet>

<servlet-mapping>

<servlet-name>action</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>(4)配置<struts-config>是Struts配置文件的根元素,和它对应的配置类为o。它的DTD定义如下:<!ELEMENTstruts-config(data-sources?,form-beans?,global-exceptions?,global-forwards?,action-mappings?,controller?,message-resources*,plugin-in*>。在Struts配置文件中,必须按以上DTD指定struts的基本元素视图:视图是由一组jsp文件组成。视图和控制器与模型之间交互,并为模型提供用户界面。模型:模型表示应有程序的状态和业务逻辑。业务逻辑常由EJB或javaBean组件实现。在MVC应用程序中,模型层通常是最大最重要的部分,它负责保存事务逻辑代码和数据库访问代码;模型是应用程序的核心。因此,模型决定了应用程序的功能。控制器:控制器由ActionServlet类和Action类实现。业务逻辑的操作主要由Action实现。ActionMapping、ActionForward这几个组件协调完成。Action扮演了真正的控制逻辑的实现者。ActionServlet继承自jav类。ActionServlet主要负责将的客户请求信息组装后,根据配置文件的指定描述,转发到适当的处理器按照Servelt的标准,所有的Servlet必须在web配置文件()声明。同样,ActoinServlet必须在WebApplication配置文件()中描述。struts的国际化STRUTS允许将不同语言的文字写在多个资源文件中,每个资源对应一种语言,而在JSP页面上则通过STRUTS标签来显示文字,该标签可以根据浏览器的当前语言设置确定从对应的语种资源文件中取出字符串,显示在页面上。资源文件的存放目录可以是/WEB-INF/classes/下的任意目录,为了便于管理,建议在/WEB-INF/classes/下建立目录resources,将所有的资源文件都放在该目录下。STRUTS通过配置文件配置资源文件的所在位置。struts的特点(1)Struts不仅是线程安全(thread-d-dependent)的。(2)Actionformbean最小化子类代码并缩短子类层次。(3)Struts标签库提供通用功能。(4)Struts组件对应用来说都是可重用的。(5)Struts是轻量型架构。(6)Struts是标准兼容的。(7)Struts是开源的,具有良好的文档。第三章基于RFID的景点导览系统实现3.1系统概述本系统采用B/S模式开发,并且详细设计了服务器端和客户端的功能模块,如图3-1所示:图3-1系统功能模块结构从图中可以看出,系统为三层结构:数据层、服务器层、客户层。服务器端实现管理员功能,游客功能;客户端实现查询定位、地图展示、行程规划、旅游黄页、景点介绍、随身贴士等功能。使用移动终端的导览示意图如图3-2所示,网络拓扑如图3-3所示。eeWLAN媒体库展品RFIDDBWebBrowser游客介绍/推荐服务器游客日志3-2使用移动终端的导览示意图3-2RFID网络结构示意图3.2客户端功能模块实现系统功能模块共分为六块:查询定位、地图展示、行程规划、旅游黄页、景点介绍、随身贴士。3查询定位功能J2ME查询定位功能分为三种,定点查询、模糊查询和类别查询。主要是通过客户端向服务器发送查询请求,通过服务器处理向客户端返回相应信息的地图。如图3-2所示:定点查询:通过输入所熟悉的游客的标签Id号,系统连接服务器,服务器返回该标签持有者所在的位置,以及该位置的景点详细信息。模糊查询:输入景点的代号(拼音首字母),系统连接服务器,服务器根据景点代号返回相应的景点的位置信息。类别查询:根据景点类别,服务器返回同一类别的景点的详细信息。图3-4查询定位实现连接的代码段:publicclassCommHandler{privateStringURL;publicCommHandler(StringURL){this.URL=URL;}//发送消息publicStringsendMessage(Stringmessage)throwsIOException{ConnectionConn;DataInputStreaminput;DataOutputStreamoutput;Stringresult;try{Conn=open();output=this.openDataOutputStream(Conn);output.writeUTF(message);output.close();input=this.openDataInputStream(Conn);result=input.readUTF();System.out.println(result);closeConnection(Conn,input,output);returnresult;}finally{}}//打开连接publicConnectionopen()throwsIOException{try{Connectionconnection=(Connection)Connector.open(URL);connection.setRequestProperty("User-Agent",Systems"));connection.setRequestProperty("Content-Type","application/octet-stream");connection.setRequestMethod(Connection.POST);returnconnection;}catch(IOExceptionioe){throwioe;}}//打开数据连接privateDataInputStreamopenDataInputStream(Connectionconn)throwsIOException{intcode=conn.getResponseCode();if(code==Connection._OK){returnconn.openDataInputStream();}else{thrownewIOException();}}3地图展示功能本系统对地图实行放大缩小和漫游等操作,并且可以定位到相应的景点上。对于图片的放大缩小,简单的来说就是图像的变形变换,就是把源图像每个点坐标通过变形运算转为目标图像相应点的新坐标,但是这样会导致一个问题就是目标点的坐标通常不会是整数。所以在做放大变换时,需要计算生成没有被映射到的点;而在缩小变换时,需要删除一些点。这样,最简单的办法就是插值算法:“最近邻域法”。顾名思义,就是把非整数坐标作一个四舍五入,取最近的整数点。而图片的漫游功能则是根据按键来选择,设计一个方法来根据按键的不同设置x、y坐标的变换。如图3-3所示:(原图)(缩小50%) (放大50%)图3-5地图的放大缩小功能//实现地图缩放功能的代码段:插值算法 privateImageZoomImage(ImagesrcImg,intdesW,intdesH){intsrcW=srcImg.getWidth();//原始图像宽intsrcH=srcImg.getHeight();//原始图像高//计算插值表int[]tabY=newint[desH];int[]tabX=newint[desW];intsb=0;intdb=0;inttems=0;inttemd=0;intdistance=srcH>desH?srcH:desH;for(inti=0;i<=distance;i++){/*垂直方向*//r

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论