物聯(lián)網(wǎng)中間件基本概念_第1頁
物聯(lián)網(wǎng)中間件基本概念_第2頁
物聯(lián)網(wǎng)中間件基本概念_第3頁
物聯(lián)網(wǎng)中間件基本概念_第4頁
物聯(lián)網(wǎng)中間件基本概念_第5頁
已閱讀5頁,還剩123頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第5章物聯(lián)網(wǎng)中間件物聯(lián)網(wǎng)中間件基本概念5.1物聯(lián)網(wǎng)中間件關(guān)鍵技術(shù)5.2物聯(lián)網(wǎng)中間件編程實(shí)例5.3物聯(lián)網(wǎng)中間件基本概念第1頁5.1物聯(lián)網(wǎng)中間件基本概念

5.1.1物聯(lián)網(wǎng)中間件定義和分類5.1.2物聯(lián)網(wǎng)中間件基本組成和特點(diǎn)

5.1.3物聯(lián)網(wǎng)中間件舉例物聯(lián)網(wǎng)中間件基本概念第2頁5.1.1物聯(lián)網(wǎng)中間件定義和分類

1.中間件定義:獨(dú)立系統(tǒng)軟件或服務(wù)程序。應(yīng)用于客戶機(jī)、服務(wù)器操作系統(tǒng),管理計(jì)算機(jī)資源和網(wǎng)絡(luò)通信。連接兩個(gè)獨(dú)立應(yīng)用程序或獨(dú)立系統(tǒng)軟件,使相連接系統(tǒng)即使含有不一樣接口,利用中間件依然能相互交換信息。執(zhí)行關(guān)鍵路徑是信息傳遞。物聯(lián)網(wǎng)中間件基本概念第3頁2.中間件示意圖物聯(lián)網(wǎng)中間件基本概念第4頁3.中間件發(fā)展史最早含有中間件技術(shù)思想及功效軟件是IBMCICS,而CICS不是分布式環(huán)境產(chǎn)物,所以人們普通把Tuxedo作為第一個(gè)嚴(yán)格意義上中間件產(chǎn)品。

物聯(lián)網(wǎng)中間件基本概念第5頁3.中間件發(fā)展史 Tuxedo是1984年在當(dāng)初屬于AT&T貝爾試驗(yàn)室開發(fā)完成,因?yàn)榉植际教幚懋?dāng)初并沒有在商業(yè)應(yīng)用上取得像今天一樣成功,Tuxedo在很長一段時(shí)期里只是試驗(yàn)室產(chǎn)品,以后被Novell收購,在經(jīng)過Novell并不成功商業(yè)推廣之后,1995年被現(xiàn)在BEA企業(yè)收購。物聯(lián)網(wǎng)中間件基本概念第6頁3.中間件發(fā)展史 BEA企業(yè)1995年收購Tuxedo才成為一個(gè)真正中間件廠商。IBM中間件MQSeries也是20世紀(jì)90年代產(chǎn)品,其它許多中間件產(chǎn)品也都是最近幾年才成熟起來。物聯(lián)網(wǎng)中間件基本概念第7頁4.中間件主要特點(diǎn)滿足大量應(yīng)用需要運(yùn)行于各種硬件和OS平臺(tái)支持分布計(jì)算,提供跨網(wǎng)絡(luò)、硬件和OS平臺(tái)透明應(yīng)用或服務(wù)交互支持標(biāo)準(zhǔn)協(xié)議支持標(biāo)準(zhǔn)接口物聯(lián)網(wǎng)中間件基本概念第8頁5.什么是物聯(lián)網(wǎng)中間件 在物聯(lián)網(wǎng)中采取中間件技術(shù),以實(shí)現(xiàn)多個(gè)系統(tǒng)和各種技術(shù)之間資源共享,最終組成一個(gè)資源豐富、功效強(qiáng)大服務(wù)系統(tǒng)。物聯(lián)網(wǎng)中間件基本概念第9頁6.物聯(lián)網(wǎng)中間件分類 基于目標(biāo)和實(shí)現(xiàn)機(jī)制不一樣,業(yè)內(nèi)將中間件分為以下幾類:遠(yuǎn)程過程調(diào)用中間件(RemoteProcedureCall)面向消息中間件(Message-OrientedMiddleware)對(duì)象請(qǐng)求代理中間件(ObjectRequestBrokers)物聯(lián)網(wǎng)中間件基本概念第10頁

幾類中間件可向上提供不一樣形式通信服務(wù),在這些基本通信平臺(tái)之上,可構(gòu)筑各種框架,為應(yīng)用程序提供不一樣領(lǐng)域內(nèi)服務(wù),如事務(wù)處理監(jiān)控器、分布數(shù)據(jù)訪問、對(duì)象事務(wù)管理器等。物聯(lián)網(wǎng)中間件基本概念第11頁7.物聯(lián)網(wǎng)中間件發(fā)展三個(gè)階段應(yīng)用程序中間件階段(ApplicationMiddleware)

架構(gòu)中間件階段(InfrastructureMiddleware)

處理方案中間件階段(SolutionMiddleware)。物聯(lián)網(wǎng)中間件基本概念第12頁

當(dāng)前,物聯(lián)網(wǎng)中間件最主要代表是RFID中間件,其它還有嵌入式中間件、數(shù)字電視中間件、通用中間件、M2M物聯(lián)網(wǎng)中間件等。下面,重點(diǎn)介紹一下RFID中間件。物聯(lián)網(wǎng)中間件基本概念第13頁

RFID中間件飾演RFID標(biāo)簽和應(yīng)用程序之間中介角色,從應(yīng)用程序端使用中間件所提供一組通用應(yīng)用程序接口(API),即能連到RFID讀寫器,讀取RFID標(biāo)簽數(shù)據(jù)。物聯(lián)網(wǎng)中間件基本概念第14頁 這么一來,即使存放RFID標(biāo)簽數(shù)據(jù)數(shù)據(jù)庫軟件或后端應(yīng)用程序增加或改由其它軟件取代,或者讀寫RFID讀寫器種類增加等情況發(fā)生時(shí),應(yīng)用端不需修改也能處理,省去多對(duì)多連接維護(hù)復(fù)雜性問題。物聯(lián)網(wǎng)中間件基本概念第15頁8.RFID中間件三大類發(fā)展階段(1)應(yīng)用程序中間件發(fā)展階段(2)基礎(chǔ)架構(gòu)中間件發(fā)展階段(3)處理方案中間件(SolutionMiddleware)發(fā)展階段。物聯(lián)網(wǎng)中間件基本概念第16頁

5.1.2物聯(lián)網(wǎng)中間件基本組成和特點(diǎn)

基本組成:實(shí)現(xiàn)全球物品統(tǒng)一編碼,給物品打上電子標(biāo)簽。要實(shí)現(xiàn)每個(gè)小應(yīng)用環(huán)境或系統(tǒng)標(biāo)準(zhǔn)化以及它們之間通信,必須設(shè)置一個(gè)通用平臺(tái)和接口,也就是中間件。物聯(lián)網(wǎng)中間件基本概念第17頁以RFID為例,下列圖描述了中間件在系統(tǒng)中位置和作用。物聯(lián)網(wǎng)中間件基本概念第18頁物聯(lián)網(wǎng)特點(diǎn):(1)獨(dú)立于架構(gòu)。(2)數(shù)據(jù)流。(3)處理流。(4)標(biāo)準(zhǔn)化。物聯(lián)網(wǎng)中間件基本概念第19頁(1)ASPIRE特征:輕量級(jí)、可重新編程、智能、適合當(dāng)前標(biāo)準(zhǔn)、可升級(jí)、安全性高、完整。ASPIRE處理方法是完全開源和免版權(quán)費(fèi)用,這大大降低了總開發(fā)成本。5.1.3物聯(lián)網(wǎng)中間件舉例

物聯(lián)網(wǎng)中間件基本概念第20頁(2)Hydra定位于操作系統(tǒng)和應(yīng)用之間中間件層。中間件包含了眾多軟件組成部分,它們被設(shè)計(jì)用于處理各種任務(wù),以完成一個(gè)有效利用成本智能物聯(lián)網(wǎng)應(yīng)用開發(fā)過程。能夠在新和已經(jīng)存在分布式設(shè)備網(wǎng)絡(luò)上協(xié)作。5.1.3物聯(lián)網(wǎng)中間件舉例

物聯(lián)網(wǎng)中間件基本概念第21頁(2)Hydra它是基于語義模式驅(qū)動(dòng)架構(gòu)。Hydra中間件利于實(shí)現(xiàn)環(huán)境感知行為和處理在資源受限設(shè)備中處理數(shù)據(jù)持久性問題。Hydra安全框架布署了一個(gè)規(guī)則框架。虛擬化結(jié)構(gòu)。5.1.3物聯(lián)網(wǎng)中間件舉例

物聯(lián)網(wǎng)中間件基本概念第22頁5.2物聯(lián)網(wǎng)中間件關(guān)鍵技術(shù)

5.2.1web服務(wù)5.2.2嵌入式中間件技術(shù)

5.2.3萬維物聯(lián)網(wǎng)5.2.4上下文感知技術(shù)物聯(lián)網(wǎng)中間件基本概念第23頁Web服務(wù)(WebServices)就是一個(gè)能夠經(jīng)過Web描述、公布、定位和調(diào)用模塊化應(yīng)用。Web服務(wù)能夠執(zhí)行各種功效,從簡單請(qǐng)求到復(fù)雜業(yè)務(wù)過程。一旦Web服務(wù)被布署,其它應(yīng)用程序或是Web服務(wù)就能夠發(fā)覺而且調(diào)用這個(gè)布署服務(wù)。5.2.1web服務(wù)

物聯(lián)網(wǎng)中間件基本概念第24頁

Web服務(wù)(WebServices)向外界提供一個(gè)能夠經(jīng)過Web進(jìn)行調(diào)用API(ApplicationProgrammingInterface,應(yīng)用程序編程接口),能夠用編程方法經(jīng)過Web來調(diào)用這個(gè)應(yīng)用程序。我們把調(diào)用這個(gè)WebServices應(yīng)用程序叫做客戶。物聯(lián)網(wǎng)中間件基本概念第25頁WebServices舉例:

創(chuàng)建一個(gè)WebServices,功效是返回當(dāng)前天氣情況。物聯(lián)網(wǎng)中間件基本概念第26頁WebServices定義:

建立可互操作分布式應(yīng)用程序平臺(tái)。WebServices平臺(tái)是一套標(biāo)準(zhǔn),它定義了應(yīng)用程序怎樣在Web上實(shí)現(xiàn)互操作性。WebServices為實(shí)現(xiàn)物聯(lián)網(wǎng)應(yīng)用與服務(wù)提供了一個(gè)基本框架。物聯(lián)網(wǎng)中間件基本概念第27頁 WebServices經(jīng)過簡單對(duì)象訪問協(xié)議(SimpleObjectAccessProtocol,SOAP)來調(diào)用。

SOAP是一個(gè)輕量級(jí)消息協(xié)議,它允許用任何語言編寫任何類型對(duì)象在任何平臺(tái)之上相互通信。

物聯(lián)網(wǎng)中間件基本概念第28頁 SOA(Service-OrientedArchitecture,面向服務(wù)體系結(jié)構(gòu))是一個(gè)組件模型,它將應(yīng)用程序不一樣功效單元經(jīng)過這些服務(wù)之間定義接口和協(xié)議聯(lián)絡(luò)起來。物聯(lián)網(wǎng)中間件基本概念第29頁 接口是采取中立方式進(jìn)行定義,它應(yīng)該獨(dú)立于實(shí)現(xiàn)服務(wù)硬件平臺(tái)、操作系統(tǒng)和編程語言。這使得構(gòu)建在各種這么系統(tǒng)中服務(wù)能夠用一個(gè)統(tǒng)一和通用方式進(jìn)行交互。這種含有中立接口定義特征稱為服務(wù)之間松耦合。物聯(lián)網(wǎng)中間件基本概念第30頁松耦合系統(tǒng)優(yōu)勢(shì)主要有兩點(diǎn):一點(diǎn)是它含有很高靈活性另一點(diǎn)是當(dāng)組成整個(gè)應(yīng)用程序每個(gè)服務(wù)內(nèi)部結(jié)構(gòu)和實(shí)現(xiàn)逐步地發(fā)生改變時(shí),它能夠繼續(xù)存在物聯(lián)網(wǎng)中間件基本概念第31頁 嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),而且軟硬件可裁剪,適合用于應(yīng)用系統(tǒng)對(duì)功效、可靠性、成本、體積、功耗有嚴(yán)格要求專用計(jì)算機(jī)系統(tǒng)。5.2.2嵌入式中間技術(shù)服務(wù)

物聯(lián)網(wǎng)中間件基本概念第32頁 嵌入式中間件是在嵌入式應(yīng)用程序和操作系統(tǒng)、硬件平臺(tái)之間嵌入一個(gè)中間層,通常定義成一組較為完整、標(biāo)準(zhǔn)應(yīng)用程序接口。。物聯(lián)網(wǎng)中間件基本概念第33頁1.嵌入式Web嵌入式Web服務(wù)主要含有以下優(yōu)點(diǎn)。(1)統(tǒng)一客戶界面(2)平臺(tái)獨(dú)立性(3)高可擴(kuò)展性(4)并行性與分布性物聯(lián)網(wǎng)中間件基本概念第34頁1.嵌入式WebWeb服務(wù)器

對(duì)Web服務(wù)器而言,在物理設(shè)備上是指存放那些供客戶訪問信息資源計(jì)算機(jī)或嵌入式系統(tǒng);在軟件上是指能夠按照客戶請(qǐng)求將信息資源傳送給客戶應(yīng)用程序。物聯(lián)網(wǎng)中間件基本概念第35頁1.嵌入式WebWeb客戶端 對(duì)Web客戶端而言,在物理設(shè)備上是指客戶所使用當(dāng)?shù)赜?jì)算機(jī)或者嵌入式設(shè)備;在軟件上是指能夠接收Web服務(wù)器上信息資源并展現(xiàn)給客戶應(yīng)用程序。物聯(lián)網(wǎng)中間件基本概念第36頁 嵌入式Web服務(wù)器技術(shù)關(guān)鍵是HTTP協(xié)議引擎。嵌入式Web服務(wù)器經(jīng)過CGI接口和數(shù)據(jù)動(dòng)態(tài)顯示技術(shù),能夠在HTML文件或表格中插入運(yùn)行代碼,供RAM讀取/寫入數(shù)據(jù)。物聯(lián)網(wǎng)中間件基本概念第37頁經(jīng)典嵌入式Web服務(wù)器系統(tǒng)模型物聯(lián)網(wǎng)中間件基本概念第38頁 CGI是通用網(wǎng)關(guān)接口(CommonGatewayInterface)縮寫。它是Web服務(wù)器主機(jī)與外部擴(kuò)展應(yīng)用程序交互一個(gè)標(biāo)準(zhǔn)接口。

它提供了將參數(shù)傳遞給程序并將結(jié)果返回給瀏覽器一個(gè)機(jī)制。物聯(lián)網(wǎng)中間件基本概念第39頁CGI工作流程示意圖物聯(lián)網(wǎng)中間件基本概念第40頁 CGI程序能夠經(jīng)過以下兩種調(diào)用方式來獲取客戶請(qǐng)求內(nèi)容: 一是經(jīng)過URL直接調(diào)用 二經(jīng)過交互式表單(Form)來調(diào)用。物聯(lián)網(wǎng)中間件基本概念第41頁1.JAVAVM 除了利用Web實(shí)現(xiàn)中間件外,JavaVM(Java虛擬機(jī))以其良好跨平臺(tái)特征成為了物聯(lián)網(wǎng)中間件主要平臺(tái)。物聯(lián)網(wǎng)中間件基本概念第42頁Java編譯執(zhí)行流程圖物聯(lián)網(wǎng)中間件基本概念第43頁 每個(gè)Java

VM都有兩種機(jī)制,一個(gè)是裝載含有適當(dāng)名稱類(類或是接口),叫做類裝載子系統(tǒng);另一個(gè)是負(fù)責(zé)執(zhí)行包含在已裝載類或接口中指令,叫做運(yùn)行引擎。物聯(lián)網(wǎng)中間件基本概念第44頁 每個(gè)Java

VM又包含方法區(qū)、Java堆、Java棧、程序計(jì)數(shù)器和當(dāng)?shù)胤椒_@5個(gè)部分,這幾個(gè)部分和類裝載機(jī)制與運(yùn)行引擎機(jī)制一起組成JavaVM體系結(jié)構(gòu)。物聯(lián)網(wǎng)中間件基本概念第45頁JavaVM體系結(jié)構(gòu)圖物聯(lián)網(wǎng)中間件基本概念第46頁 近幾年來伴隨物聯(lián)網(wǎng)興起,越來越多研究正在考慮將Web技術(shù)與物聯(lián)網(wǎng)技術(shù)相結(jié)合。 基于這么思想就產(chǎn)生了萬維物聯(lián)網(wǎng)(WebofThings)概念。5.2.3萬維物聯(lián)網(wǎng)

物聯(lián)網(wǎng)中間件基本概念第47頁WebofThings含有以下特征:(1)使用HTTP作為應(yīng)用協(xié)議,HTTP不但是用來連接傳感器和網(wǎng)絡(luò)傳輸協(xié)議。(2)經(jīng)過REST接口(或RESTAPI)將智能設(shè)備同時(shí)功效開放出來。物聯(lián)網(wǎng)中間件基本概念第48頁(3)智能設(shè)備異步功效開放采取廣為接收Web聚合標(biāo)準(zhǔn)。(4)前端利用Web展現(xiàn)方式,提供直觀、友好用戶體驗(yàn)。(5)開放平臺(tái)。物聯(lián)網(wǎng)中間件基本概念第49頁 經(jīng)過WebofThings,可認(rèn)為物聯(lián)網(wǎng)應(yīng)用帶來了眾多便利,以以下舉其幾點(diǎn)優(yōu)勢(shì):降低智能設(shè)備安裝、整合、執(zhí)行和維護(hù)開銷;加緊智能設(shè)備安裝和移除速度;對(duì)智能設(shè)備可進(jìn)行移動(dòng)和臨時(shí)安裝;任何時(shí)刻、任何地點(diǎn)都可以提供實(shí)時(shí)信息服務(wù);增強(qiáng)可視化、可預(yù)見、可預(yù)報(bào)和維護(hù)日程能力;確保各類應(yīng)用有效和高效率執(zhí)行。物聯(lián)網(wǎng)中間件基本概念第50頁WebofThings基本框架由以下3部分組成:(1)網(wǎng)絡(luò)節(jié)點(diǎn)集成接口(IntegrationInterfaceofNetworkNode)(2)基于REST格調(diào)終端節(jié)點(diǎn)(TerminalNodesBasedonRESTStyle)對(duì)智能設(shè)備可進(jìn)行移動(dòng)和暫時(shí)安裝;(3)網(wǎng)絡(luò)Mashup功效(WebMashupFunction)增強(qiáng)可視化、可預(yù)見、可預(yù)報(bào)和維護(hù)日程能力;物聯(lián)網(wǎng)中間件基本概念第51頁基于REST格調(diào)WebofThings架構(gòu)物聯(lián)網(wǎng)中間件基本概念第52頁 上下文感知技術(shù)是用來描述一個(gè)信息空間和物理空間相融合主要支撐技術(shù),它能夠使用戶可用計(jì)算環(huán)境和軟件資源動(dòng)態(tài)地適應(yīng)相關(guān)歷史狀態(tài)信息,從而依據(jù)環(huán)境改變自動(dòng)地采取符適用戶需要或者設(shè)定行動(dòng)。5.2.4上下文感知技術(shù)

物聯(lián)網(wǎng)中間件基本概念第53頁 上下文感知系統(tǒng)首先必須知道整個(gè)物理環(huán)境、計(jì)算環(huán)境、用戶狀態(tài)等方面靜態(tài)和動(dòng)態(tài)信息,即上下文(context)。 上下文能力獲取依賴于上下文感知技術(shù),主要包含上下文采集、建模、推理及融合等。上下文感知技術(shù)是實(shí)現(xiàn)服務(wù)自發(fā)性和無縫移動(dòng)性關(guān)鍵。物聯(lián)網(wǎng)中間件基本概念第54頁(1)上下文采集 上下文應(yīng)用領(lǐng)域不一樣,上下文采集方法也有所不一樣。通常情況下,有3種方法:傳感類上下文、派生出上下文(依據(jù)信息統(tǒng)計(jì)和用戶設(shè)定)、明確提供上下文。 采集技術(shù)屬于物聯(lián)網(wǎng)感知層技術(shù)。物聯(lián)網(wǎng)中間件基本概念第55頁(2)上下文建模 要正確地利用上下文信息,必須對(duì)取得上下文信息進(jìn)行建模。上下文信息模型反應(yīng)了設(shè)計(jì)者對(duì)上下文了解,決定了使用什么方法把物理世界里面一些無意義和無規(guī)律數(shù)據(jù)轉(zhuǎn)化成計(jì)算世界里邏輯結(jié)構(gòu)語言,為實(shí)現(xiàn)上下文正確運(yùn)行打下基礎(chǔ)。物聯(lián)網(wǎng)中間件基本概念第56頁(3)上下文推理 系統(tǒng)中全部上下文信息組成上下文知識(shí)庫,基于這些知識(shí)庫,能夠進(jìn)行上下文推理。 實(shí)現(xiàn)推理普通有兩種方式,一是將邏輯規(guī)則用程序編碼實(shí)現(xiàn),二是采取基于規(guī)則推理系統(tǒng)。物聯(lián)網(wǎng)中間件基本概念第57頁(4)上下文融合 在上下文感知計(jì)算中,要取得連續(xù)上下文處理方法,必須聯(lián)合相關(guān)上下文服務(wù)從而聚集上下文信息,稱為上下文融合。 這種上下文融合類似于當(dāng)前已被廣泛應(yīng)用傳感器融合,其關(guān)鍵在于處理不一樣上下文服務(wù)邊界之間無縫融合。物聯(lián)網(wǎng)中間件基本概念第58頁5.3物聯(lián)網(wǎng)中間件編程實(shí)例5.3.1利用RubyonRails開發(fā)基于 REST格調(diào)中間件5.3.2用J2EE開發(fā)WebService中間件物聯(lián)網(wǎng)中間件基本概念第59頁5.3.1利用RubyonRails開發(fā)基于REST格調(diào)中間件RubyonRails,簡稱RoR或Rails,是一個(gè)使用Ruby語言寫開源網(wǎng)絡(luò)應(yīng)用框架,能使開發(fā)變得愈加輕易,當(dāng)前我們用其致力于Web應(yīng)用開發(fā)、布署和維護(hù)。物聯(lián)網(wǎng)中間件基本概念第60頁

像其它Web框架一樣,Rails采取MVC開發(fā)框架。但相比于其它框架,Rails愈加簡單易用。這是因?yàn)椋?、Ruby語言特征:自然、介紹、快速,有豐富類庫,而且全方面地支持面向?qū)ο蟪绦蛟O(shè)計(jì)。物聯(lián)網(wǎng)中間件基本概念第61頁2、Rails基本設(shè)計(jì)標(biāo)準(zhǔn):“不要重復(fù)你自己”(Don’tRepeatYourself,簡稱DRY)以及“通例重于配置”。

物聯(lián)網(wǎng)中間件基本概念第62頁Rails是一個(gè)靈敏框架,它強(qiáng)調(diào)與客戶交互,隨時(shí)準(zhǔn)備“響應(yīng)改變”。 Rails提倡測(cè)試驅(qū)動(dòng)開發(fā),全部Rails應(yīng)用內(nèi)嵌對(duì)于測(cè)試支持。物聯(lián)網(wǎng)中間件基本概念第63頁1.

RubyonRails開發(fā)環(huán)境搭建RubyonRails能夠運(yùn)行在各種操作系統(tǒng)下,其平臺(tái)是獨(dú)立。總來說,要安裝運(yùn)行一個(gè)Rails應(yīng)用需要以下組件。物聯(lián)網(wǎng)中間件基本概念第64頁

(1)Ruby解釋器:我們?cè)诖耸褂肦uby-1.8.6。這個(gè)版本解析器能夠很好滿足Rails以及后續(xù)一些RubyGems要求。物聯(lián)網(wǎng)中間件基本概念第65頁

(2)RubyGems:它是一個(gè)標(biāo)準(zhǔn)Ruby程序包管理器,能夠很方便在線安裝各種Ruby程序包,包含Rails等。物聯(lián)網(wǎng)中間件基本概念第66頁

(3)RubyonRails框架:為簡單起見,我們采取gem自動(dòng)進(jìn)行安裝,在撰寫本書時(shí)Rails最新版本為2.3.8。物聯(lián)網(wǎng)中間件基本概念第67頁(4)數(shù)據(jù)庫:Rails最新版本默認(rèn)是采取SQLite3數(shù)據(jù)庫,在此為了通用性考慮,我們采取最慣用MySQL數(shù)據(jù)庫。物聯(lián)網(wǎng)中間件基本概念第68頁

(5)一些必要庫:采取MySQL數(shù)據(jù)庫只需要安裝mysqlgem包即可。假如使用Rails默認(rèn)數(shù)據(jù)庫則需安裝sqlite3-rubygem包。物聯(lián)網(wǎng)中間件基本概念第69頁

下面我們主要介紹在Windows下安裝布署Rails詳細(xì)過程。因?yàn)楹芏喑绦蜥槍?duì)Windows平臺(tái)都有很方便一鍵式安裝,所以在Windows下安裝Rails還是很輕松。物聯(lián)網(wǎng)中間件基本概念第70頁

(1)安裝Ruby解釋器。能夠從Ruby官網(wǎng)(/en/downloads/)上下載Ruby-1.8.6One-Click安裝包。

為了檢驗(yàn)是否安裝成功,能夠從Windows開始菜單點(diǎn)擊“運(yùn)行”,輸入“cmd”,開啟Windows命令提醒符,然后輸入“ruby–v”(回車),如能正確顯示Ruby程序版本號(hào)則證實(shí)安裝成功。物聯(lián)網(wǎng)中間件基本概念第71頁

(2)安裝RubyGems。能夠從RubyForge(/)或是RubyGems官網(wǎng)(/)上下載最新安裝包。下載完成后將該壓縮包進(jìn)行解壓,我們假設(shè)解壓后根目錄為${dir}目錄;然后開啟命令提醒符,并切換到${dir}中,然后輸入rubysetup.rb運(yùn)行RubyGems安裝程序。為了驗(yàn)證是否安裝成功,能夠從Windows命令提醒符中輸入“gem–v”(回車);如能正確顯示RubyGems版本號(hào)則安裝成功。物聯(lián)網(wǎng)中間件基本概念第72頁(3)安裝RubyonRails。在命令提醒符中輸入“geminstallrails”(回車),然后將會(huì)在線安裝Rails程序以及Rails一些依賴包。安裝完成后能夠經(jīng)過“rails–v”命令查看Rails版本號(hào)來驗(yàn)證是否安裝成功。物聯(lián)網(wǎng)中間件基本概念第73頁(4)MySQL數(shù)據(jù)庫。在MySQL官網(wǎng)上下載最新MySQL-5.1版本安裝程序,然后進(jìn)行安裝即可。詳細(xì)安裝過程也可參考官方安裝說明(/doc/refman/5.1/

zh/installing.html)。物聯(lián)網(wǎng)中間件基本概念第74頁(5)安裝mysqlgem包。在命令提醒符中輸入“geminstallmysql”進(jìn)行在線安裝。物聯(lián)網(wǎng)中間件基本概念第75頁

至此Rails安裝過程就已經(jīng)全部完成。在Linux下安裝也大同小異,主要是安裝Ruby和mysql時(shí)略有不一樣,其它安裝步驟都和Windows下安裝相同。物聯(lián)網(wǎng)中間件基本概念第76頁2.RubyonRails編程實(shí)例下面章節(jié)將簡單介紹一個(gè)關(guān)于溫度Rails物聯(lián)網(wǎng)中間件實(shí)例。Rails是一個(gè)網(wǎng)絡(luò)應(yīng)用框架,它能夠很方便地處理各種應(yīng)用請(qǐng)求,客戶端和Rails服務(wù)器之間采取統(tǒng)一REST接口,它們經(jīng)過HTTP協(xié)議來向服務(wù)器端發(fā)送請(qǐng)求。物聯(lián)網(wǎng)中間件基本概念第77頁

※本示例系統(tǒng)整體架構(gòu)圖如圖5-8所表示。在該示例中溫度傳感器也認(rèn)為是Rails服務(wù)器一個(gè)客戶端,它會(huì)實(shí)時(shí)地向服務(wù)器端發(fā)送數(shù)據(jù),服務(wù)器會(huì)把這些數(shù)據(jù)處理后保留到數(shù)據(jù)庫中以供瀏覽器或其它客戶端調(diào)用。服務(wù)器另一個(gè)客戶端是瀏覽器或是手機(jī)Widget應(yīng)用,這些客戶能夠向服務(wù)器端發(fā)送請(qǐng)求來獲取自己所關(guān)心數(shù)據(jù)。物聯(lián)網(wǎng)中間件基本概念第78頁

本示例中采取REST方式來進(jìn)行服務(wù)器端設(shè)計(jì),我們將溫度(temperature)看做一個(gè)資源,每個(gè)資源有對(duì)應(yīng)id、溫度值、更新時(shí)間、設(shè)備名稱等信息。本示例中對(duì)于溫度資源操作只包含Put和Get兩種操作,這兩種操作分別經(jīng)過HTTPPost和Get請(qǐng)求來完成。詳細(xì)為溫度傳感器經(jīng)過Post請(qǐng)求向服務(wù)器上傳溫度數(shù)據(jù),而瀏覽器經(jīng)過Get請(qǐng)求來從服務(wù)器取得溫度數(shù)據(jù)統(tǒng)計(jì)。物聯(lián)網(wǎng)中間件基本概念第79頁

對(duì)于REST中其它資源操作如Update、Destroy等操作在本示例中能夠不需要,所以進(jìn)行了省略。RubyonRails是支持全部REST操作,能夠經(jīng)過scaffold來進(jìn)行實(shí)現(xiàn)。假定對(duì)于這種資源Put操作對(duì)應(yīng)HTTPPost請(qǐng)求,請(qǐng)求URL為{root_

dir}/temperature/post_temperature;獲取資源Get操作對(duì)應(yīng)HTTPGet請(qǐng)求,請(qǐng)求URL為{root_dir}/temperature/index。物聯(lián)網(wǎng)中間件基本概念第80頁

在此示例中采取mysql數(shù)據(jù)庫,其實(shí)因?yàn)镽ails對(duì)于不一樣數(shù)據(jù)庫接口有很好封裝和適配,采取不一樣數(shù)據(jù)庫不會(huì)對(duì)代碼產(chǎn)生太大影響。針對(duì)該示例,數(shù)據(jù)庫中只建立一張表來進(jìn)行數(shù)據(jù)存放。表結(jié)構(gòu)如表5-1所表示,其中id字段用于標(biāo)識(shí)每條統(tǒng)計(jì),value字段統(tǒng)計(jì)溫度值,time字段統(tǒng)計(jì)上傳時(shí)間,device_id字段統(tǒng)計(jì)上傳數(shù)據(jù)設(shè)備標(biāo)識(shí)。物聯(lián)網(wǎng)中間件基本概念第81頁圖5-8溫度傳感中間件系統(tǒng)架構(gòu)示意圖表5-1溫度表結(jié)構(gòu)idvaluetimedevice_id物聯(lián)網(wǎng)中間件基本概念第82頁(1)建立工程。

建立一個(gè)名稱為smart_sensor工程,首先在命令提醒符中進(jìn)入待建工程目錄,在此使用F:\example目錄,然后輸入rails--database=mysqlsmart_sensor,如圖5-9所表示。圖5-9建立smart_sensor工程本示例實(shí)現(xiàn)步驟包含以下幾步:物聯(lián)網(wǎng)中間件基本概念第83頁

此時(shí)修改smart_sensor\config\database.yml文件,在這個(gè)文件中會(huì)有3個(gè)數(shù)據(jù)庫配置選項(xiàng),分別為development、test、production,在此只修改development選項(xiàng)即可,修改成以下格式。 development: adapter:mysql encoding:utf8 reconnect:false database:smart_sensor_development pool:5 username:root password:mysql host:localhost(2)建立數(shù)據(jù)庫。物聯(lián)網(wǎng)中間件基本概念第84頁

需要修改主要是username和password,修改成mysql數(shù)據(jù)庫用戶名和密碼即可。然后在命令行根目錄smart_sensor下執(zhí)行rakedb:create來建立數(shù)據(jù)庫,數(shù)據(jù)庫名稱默認(rèn)為smart_sensor_development,如圖5-10所表示。下面命令如沒有尤其說明均是在smart_sensor根目錄下執(zhí)行。圖5-10建立數(shù)據(jù)庫物聯(lián)網(wǎng)中間件基本概念第85頁

下面需要建立基本數(shù)據(jù)表,在Rails中數(shù)據(jù)表是由一個(gè)Model來管理,能夠用Rails命令來建立基本Model。在根目錄下輸入rubyscript\generatemodeltemperature,如圖5-11所表示。圖5-11建立基本Model(3)建立基本Model類。物聯(lián)網(wǎng)中間件基本概念第86頁此時(shí)在db\migrate目錄下會(huì)生成一個(gè)xxx_create_temperatures.rb文件,打開該文件并修改成以下結(jié)果。這里主要是設(shè)置數(shù)據(jù)表各個(gè)字段類型以及其它細(xì)節(jié)。物聯(lián)網(wǎng)中間件基本概念第87頁classCreateTemperatures<ActiveRecord::Migrationdefself.upcreate_table:temperaturesdo|t|

#establishthedatatablet.decimal:value,:precision=>4,:scale=>1t.datetime:timeeger:device_idt.timestampsendenddefself.downdrop_table:temperaturesendend

然后執(zhí)行rakedb:migrate命令將temperatures表結(jié)構(gòu)寫入數(shù)據(jù)庫。物聯(lián)網(wǎng)中間件基本概念第88頁

控制器功效主要是對(duì)外部請(qǐng)求進(jìn)行處理并返回對(duì)應(yīng)結(jié)果。此處能夠經(jīng)過Rails基本命令來建立基本控制器。在根目錄下輸入命令rubyscript\generatecontrollertemperatureindex,如圖5-12所表示。圖5-12生成基本控制器(4)建立temperature控制器。物聯(lián)網(wǎng)中間件基本概念第89頁

classTemperatureController<ApplicationController#listallthetemperaturesinthedatabasedefindex@temperatures=Temperature.allrespond_todo|format|format.html#index.html.erbformat.xml{render:xml=>@temperatures}endend

然后修改app\controllers\temperature_controller.rb文件以真正實(shí)現(xiàn)該示例需要方法。在此我們將實(shí)現(xiàn)index方法以輸出全部temperature數(shù)據(jù),而且增加一個(gè)添加數(shù)據(jù)方法以把傳感器發(fā)來數(shù)據(jù)存入數(shù)據(jù)庫,詳細(xì)修改以下。物聯(lián)網(wǎng)中間件基本概念第90頁

#processthepostrequestandstorethedatainthedatabasedefpost_temperaturebegin#constructaninstanceofTemperaturea_temperature=Temperature.new(:value=>params[:value],:time=>params[:time],:device_id=>params[:device_id])#storea_temperatureinthedatabasea_temperature.saverescue#returnFailiffailsstorethedatarender:text=>"Fail"returnend#returnOKifallsuccessrender:text=>"OK"returnendend物聯(lián)網(wǎng)中間件基本概念第91頁這里增加了兩個(gè)方法,index和post_temperature。其中index方法用于輸出當(dāng)前存入數(shù)據(jù)庫全部溫度統(tǒng)計(jì),post_temperature方法是用來處理傳感器發(fā)來提交數(shù)據(jù)請(qǐng)求,并把這些溫度數(shù)據(jù)存入數(shù)據(jù)庫,執(zhí)行成功則返回“OK”,不然返回“Fail”。物聯(lián)網(wǎng)中間件基本概念第92頁

在此因?yàn)閕ndex方法會(huì)返回一個(gè)html文件,來控制返回結(jié)果顯示。在Rails中會(huì)在views目錄下對(duì)返回頁面文件進(jìn)行集中管理。在此需要修改app\views\

temperature\index.html.erb文件,修改結(jié)果以下。(5)修改view頁面。物聯(lián)網(wǎng)中間件基本概念第93頁<divid="temperature-list"><h1>Listingtemperatures</h1><table><%fortemperaturein@temperatures%><tr><td> <%=temperature.id%></td><td> <%=temperature.value%></td><td> <%=temperature.time%></td><td> <%=temperature.device_id%></td></tr><%end%></table></div>物聯(lián)網(wǎng)中間件基本概念第94頁

為了讓Rails當(dāng)收到某個(gè)請(qǐng)求時(shí)知道該調(diào)用哪個(gè)控制器下哪個(gè)方法來進(jìn)行處理,在此需要修改Rails路由以符合該示例要求。在Rails中修改路由也十分簡單,只需要修改config\routes.rb文件即可。在該文件最終已經(jīng)有兩條默認(rèn)路由格式,需要修改這些路由規(guī)則以符合我們需要,詳細(xì)以下。

map.connect'temperature/post_temperature',:controller=>"temperature",

:action=>"post_temperature",:conditions=>{:method=>:post} map.connect':controller/:action' map.connect':controller/:action.:format’(6)修改路由。物聯(lián)網(wǎng)中間件基本概念第95頁

①當(dāng)收到發(fā)往temperature/post_temperature這個(gè)路徑Post請(qǐng)求時(shí)調(diào)用temperature控制器post_temperature方法來進(jìn)行處理。

②當(dāng)收到:controller/:action格式路由時(shí),則將第一個(gè)參數(shù)作為controller,第二個(gè)作為action。比如發(fā)送temperature/index,此時(shí)則會(huì)采取temperature控制器index方法來進(jìn)行處理。這里解釋一下這3條路由分別含義。物聯(lián)網(wǎng)中間件基本概念第96頁

③前面與(2)相同,另外增加了:format參數(shù)用來控制返回格式,比如發(fā)送temperature/index.html則采取temperature控制器index方法,采取html格式返回結(jié)果。假如發(fā)送temperature/index.xml則以xml格式返回結(jié)果。路由匹配規(guī)則是從上向下依次進(jìn)行匹配,假如碰到匹配規(guī)則,則采取該規(guī)則,而且停頓向下匹配。

物聯(lián)網(wǎng)中間件基本概念第97頁

在此我們采取外部客戶主動(dòng)POST數(shù)據(jù)方式來向Server發(fā)送請(qǐng)求。Rails中為了防止惡意POST數(shù)據(jù),采取了認(rèn)證授權(quán)機(jī)制來預(yù)防這種攻擊,類似我們現(xiàn)在采取POST方式進(jìn)行上傳數(shù)據(jù),則會(huì)引發(fā)RailsActionController::Invalid

AuthenticityToken異常,而且不會(huì)對(duì)我們POST操作進(jìn)行處理。我們?cè)诖诵枰迷撜J(rèn)證機(jī)制,方法也很簡單,只要修改app\controllers\application_controller.rb文件即可,修改結(jié)果以下。(7)修改控制器認(rèn)證過濾器。物聯(lián)網(wǎng)中間件基本概念第98頁classApplicationController<ActionController::Basehelper:all#includeallhelpers,allthetimeprotect_from_forgery#SeeActionController::RequestForgeryProtectionfordetails

#allowuploadthedatadirectlyskip_before_filter:verify_authenticity_token

#Scrubsensitiveparametersfromyourlog#filter_parameter_logging:passwordend物聯(lián)網(wǎng)中間件基本概念第99頁

接下來我們對(duì)本實(shí)例功效進(jìn)行測(cè)試,包含兩部分:數(shù)據(jù)上傳和數(shù)據(jù)顯示。

①數(shù)據(jù)上傳。

我們采取Curl來發(fā)送HTTPPOST請(qǐng)求。Curl工具是Linux下默認(rèn)工具,現(xiàn)在也有Windows版,能夠直接在Curl官網(wǎng)進(jìn)行下載(http://curl.haxx.se/download.html),在此我們選取Win32-Generic禁用SSL版本。(8)功效測(cè)試。物聯(lián)網(wǎng)中間件基本概念第100頁

首先開啟一個(gè)終端,在根目錄下輸入rubyscript/server,開啟WEBrick服務(wù)器。然后在curl解壓目錄下輸入curl–d“value=25.8&time=-06-09%:30:21&device_id=T1101”

http://localhost:3000/temperature/post_temperature。然后能夠收到來自服務(wù)器端OK返回,如圖5-13所表示。同時(shí)也能夠查看服務(wù)器終端log來分析請(qǐng)求處理過程。圖5-13發(fā)送POST請(qǐng)求物聯(lián)網(wǎng)中間件基本概念第101頁

首先在根目錄下輸入rubysrcript/server來開啟服務(wù)器(假如已經(jīng)開啟服務(wù)器可跳過此步驟)。然后在瀏覽器地址欄輸入http://localhost:3000/temperature或http://localhost:3000/

temperature/index.html來顯示當(dāng)前數(shù)據(jù)庫中保留溫度數(shù)據(jù),如圖5-14所表示。

你也能夠采取XML格式來顯示這些數(shù)據(jù),只需要在瀏覽器地址欄輸入http://localhost:3000/

temperature/index.xml即可,如圖5-15所表示。②數(shù)據(jù)顯示。物聯(lián)網(wǎng)中間件基本概念第102頁圖5-14HTML顯示當(dāng)前數(shù)據(jù)庫中數(shù)據(jù)物聯(lián)網(wǎng)中間件基本概念第103頁圖5-15XML顯示當(dāng)前數(shù)據(jù)庫中數(shù)據(jù)物聯(lián)網(wǎng)中間件基本概念第104頁5.3.2用J2EE開發(fā)WebService中間件J2EE(Java2PlatformEnterpriseEdition)是一套全然不一樣于傳統(tǒng)應(yīng)用開發(fā)技術(shù)架構(gòu),包含很多組件,可簡化和規(guī)范應(yīng)用系統(tǒng)開發(fā)與布署,進(jìn)而提升可移植性、安全性與重復(fù)利用價(jià)值。物聯(lián)網(wǎng)中間件基本概念第105頁5.3.2用J2EE開發(fā)WebService中間件 J2EE關(guān)鍵是一組技術(shù)規(guī)范與指南,其中所包含各類組件、服務(wù)架構(gòu)及技術(shù)層次,都有相通標(biāo)準(zhǔn)與規(guī)格,讓各種依循J2EE架構(gòu)不一樣平臺(tái)之間存在良好兼容性,處理了過去企業(yè)后端使用信息產(chǎn)品彼此之間無法兼容,企業(yè)內(nèi)部或外部難以互通窘境。物聯(lián)網(wǎng)中間件基本概念第106頁

輕量級(jí)J2EE組件SSH(Struts、Spring

、Hibernate)是當(dāng)前J2EE快速開發(fā)最正確組合。 Struts實(shí)現(xiàn)了MVC模式非常成熟Web應(yīng)用組件,廣泛應(yīng)用于各種Web應(yīng)用系統(tǒng)表現(xiàn)層中。Hibernate是成熟ORM組件,主要用于實(shí)現(xiàn)數(shù)據(jù)持久化功效,最大作用在于構(gòu)筑了面向?qū)ο驤ava語言與關(guān)系型數(shù)據(jù)庫之間橋梁,使得能夠直接經(jīng)過對(duì)Java對(duì)象持久化操作完成對(duì)數(shù)據(jù)持久化操作。物聯(lián)網(wǎng)中間件基本概念第107頁 Spring則作為輕量級(jí)J2EE框架,其關(guān)鍵是一個(gè)功效強(qiáng)大IoC容器,在此容器基礎(chǔ)上又提供了對(duì)AOP支持,以及對(duì)持久層和表現(xiàn)層封裝實(shí)現(xiàn)。簡而言之,Struts用來做控制,是MVC模式控制層;Hibernate用來做持久化,也是數(shù)據(jù)庫層,對(duì)數(shù)據(jù)庫進(jìn)行封裝;Spring用來整合J2EE各層之間中間層,提升了層與層之間松耦合,使得各層之間成為對(duì)立模塊。物聯(lián)網(wǎng)中間件基本概念第108頁1.J2EE開發(fā)環(huán)境搭建J2EE快速開發(fā)最正確組合SSH架構(gòu),其中以Struts為例,實(shí)現(xiàn)了J2EE開發(fā)WebService案例。需要安裝和配置軟件,包含Tomcat、Struts及其插件等,詳細(xì)實(shí)現(xiàn)步驟以下。物聯(lián)網(wǎng)中間件基本概念第109頁Tomcat服務(wù)器現(xiàn)有最新版本6.0.29,可在/download-60.cgi官方網(wǎng)站下載。對(duì)于Windows操作系統(tǒng),能夠下載zip格式或者exe格式兩種格式文件。zip格式文件解壓即可使用,也能夠選擇其它格式文件,以6.0.18版本為例,如圖5-16所表示。(1)版本與下載地址。Tomcat安裝過程包含以下幾個(gè)步驟。物聯(lián)網(wǎng)中間件基本概念第110頁圖5-16Tomcat服務(wù)器下載界面物聯(lián)網(wǎng)中間件基本概念第111頁

安裝Tomcat后,在“我電腦”->“屬性”->“高級(jí)”->“環(huán)境變量”->“系統(tǒng)變量”中添加以下環(huán)境變量(假定Tomcat安裝在c:\tomcat)。(2)配置環(huán)境變量。CATALINA_HOME:c:\tomcatCATALINA_BASE:c:\tomcatTOMCAT_HOME:c:\tomcat

然后修改環(huán)境變量classpath,把Tomcat安裝目錄common\lib下servlet.jar加載到classpath中,修改后classpath以下所表示。 classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA

_HOME%\lib\servlet-api.jar物聯(lián)網(wǎng)中間件基本概念第112頁見到Tomcat歡迎頁面,則說明安裝成功,可進(jìn)入下一步驟。(3)開啟Tomcat,IE中訪問http://localhost:8080。物聯(lián)網(wǎng)中間件基本概念第113頁Tomcat安裝目錄webapps,能夠見到ROOT、examples、tomcat-docs之類Tomcat自帶文件目錄,并拷貝ROOT目錄下WEB-INF目錄。

在webapps目錄下新建一個(gè)目錄,命名myapp,并將上一步拷貝WEB-INF目錄粘貼到此目錄下。

在myapp下新建jsp測(cè)試頁面,文件名為index.jsp,文件內(nèi)容以下。(4)創(chuàng)建屬于自己jspapp目錄。物聯(lián)網(wǎng)中間件基本概念第114頁

重啟Tomcat。

打開瀏覽器,輸入http://localhost:8080/myapp/index.jsp,假如頁面上顯示出當(dāng)前時(shí)間,則說明安裝配置成功。 <html> <body> <center> Nowtimeis:<%=new java.util.Date()%> </center> </body> </html>物聯(lián)網(wǎng)中間件基本概念第115頁Struts安裝過程包含以下幾個(gè)步驟。①版本和下載網(wǎng)址Struts最新版本是2.0.12,官方網(wǎng)站下載地址/download.cgi#struts,下載struts-2.0.12-all.zip(91MB)即可,其它文件均包含在此文檔中。(5)測(cè)試Javabean。物聯(lián)網(wǎng)中間件基本概念第116頁

因?yàn)閟truts1.x和struts2有很大區(qū)分,而現(xiàn)今許多書都是針對(duì)struts1.x所寫。在struts1.x版本中struts-config.xml是主要配置文件,而在struts2中,它變成了struts.xml,而且文件描述內(nèi)容和struts-config.xml也有所差異,所以須小心慎重。而且許多資料一開始就直接用IDE環(huán)境(如MyEclipse)來展現(xiàn)Struts功效框架,使得我們?cè)诹私釹truts框架時(shí),也會(huì)有些疑惑。②安裝與配置物聯(lián)網(wǎng)中間件基本概念第117頁

因?yàn)門omcat服務(wù)器可用記事本等小型文本編輯器來實(shí)現(xiàn)jsp編寫,而假如讀者沒有集成完備、功效強(qiáng)大MyEclipseIDE,可能還需要下載和安裝,這么必定會(huì)讓人以為比較麻煩和費(fèi)時(shí)。實(shí)際上,只要搞清楚了Struts結(jié)構(gòu),完全能夠用記事原來實(shí)現(xiàn)Struts功效框架。

下面章節(jié)將以HelloInternet為例,來引領(lǐng)讀者進(jìn)入J2EE開發(fā)WebService大門,并在今后深入研究與開發(fā)中,結(jié)合物聯(lián)網(wǎng)背景,開發(fā)出更多功效豐富物聯(lián)網(wǎng)創(chuàng)新應(yīng)用。物聯(lián)網(wǎng)中間件基本概念第118頁2.J2EE編程實(shí)例用J2EE實(shí)現(xiàn)WebService實(shí)例時(shí),以Struts框架實(shí)現(xiàn)工程Struts2_HelloInternet為例,詳細(xì)實(shí)現(xiàn)過程及步驟以下。物聯(lián)網(wǎng)中間件基本概念第119頁(1)在webapps目錄下建立目錄Struts2_HelloInternet,完善目錄結(jié)構(gòu),如圖5-17所表示。圖5-17J2EE實(shí)例框架圖物聯(lián)網(wǎng)中間件基本概念第120頁(2)在Lib目錄中添加以下jar文件:commons-logging-1.0.4.jar,freemarker-2.3.8.jar,ognl-2.6.11.jar,struts2-core-2.0.12.jar,xwork-2.0.6.jar。物聯(lián)網(wǎng)中間件基本概念第121頁(3)配置Web.xml文件,內(nèi)容以下。<?xmlversion="1.0"encoding="UTF-8"?><web-appversion="2.4"

xmlns="/xml/ns/j2ee"

xmlns:xsi="http://XMLSchema-instance"

xsi:schemaLocation="/xml/ns/j2ee

/xml/ns/j2ee/web-app_2_4.xsd"><display-name>Struts2.0HelloInternet</display-name><!--配置web.xml文件,對(duì)標(biāo)簽filter、filter-mapping、welcome-file-list進(jìn)行相關(guān)配置--><filter>

<filter-name>struts2</filter-name>

<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern></filter-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>

</web-app>物聯(lián)網(wǎng)中間件基本概念第122頁(4)配置struts.xml文件,內(nèi)容以下。<!DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN""/dtds/struts-2.0.dtd"><!--配置struts.xml文件--><struts><includefile="struts-default.xml"/><packagename="tutorial"extends="struts-default">

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論