《 物聯(lián)網(wǎng)集成系統(tǒng)設(shè)計(jì) 》 課件8服務(wù)器預(yù)備知識-SpringBoot、9服務(wù)器部分_第1頁
《 物聯(lián)網(wǎng)集成系統(tǒng)設(shè)計(jì) 》 課件8服務(wù)器預(yù)備知識-SpringBoot、9服務(wù)器部分_第2頁
《 物聯(lián)網(wǎng)集成系統(tǒng)設(shè)計(jì) 》 課件8服務(wù)器預(yù)備知識-SpringBoot、9服務(wù)器部分_第3頁
《 物聯(lián)網(wǎng)集成系統(tǒng)設(shè)計(jì) 》 課件8服務(wù)器預(yù)備知識-SpringBoot、9服務(wù)器部分_第4頁
《 物聯(lián)網(wǎng)集成系統(tǒng)設(shè)計(jì) 》 課件8服務(wù)器預(yù)備知識-SpringBoot、9服務(wù)器部分_第5頁
已閱讀5頁,還剩70頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

物聯(lián)網(wǎng)應(yīng)用系統(tǒng)設(shè)計(jì)2gs-rest-service-main框架3gs-scheduling-tasks-main框架教學(xué)目標(biāo)學(xué)習(xí)SrpingBoot1SrpingBoot的介紹4gs-consuming-rest-main框架5gs-mysql-service-main框架添加標(biāo)題難點(diǎn)gs-mysql-service-main框架重點(diǎn)gs-rest-service-main框架gs-mysql-service-main框架學(xué)習(xí)SpringBootSrpingBoot的介紹

01SpringBoot的簡介

SpringBoot框架,最先在2002年被一個(gè)叫RodJohnson的程序員提出并創(chuàng)建。從大小和開銷上來說,Spring是JavaEE編程領(lǐng)域的一個(gè)輕量級開源框架。Spring是實(shí)現(xiàn)快速便捷開發(fā)的應(yīng)用型框架,簡化企業(yè)級編程開發(fā)的復(fù)雜性。

SrpingBoot定位在其他流行的framework沒有的領(lǐng)域,致力于提供一種管理業(yè)務(wù)功能對象的方法。Spring是全面化和模塊化的具有分層的體系結(jié)構(gòu),單獨(dú)使用它任何部分的功能,都能形成穩(wěn)定的架構(gòu)。例如,只使用Spring來簡單化JDBC的使用,或用來管理所有的業(yè)務(wù)對象。同時(shí),SpringBoot設(shè)計(jì)了易于測試的底層代碼,是用于測試驅(qū)動工程理想的framework。Springboot的特點(diǎn)(1)創(chuàng)建功能獨(dú)立的Spring應(yīng)用程序;(2)嵌入的Tomcat,無需部署war文件;(3)簡化Maven配置;(4)大量默認(rèn)配置,簡化Spring開發(fā);(5)提供生產(chǎn)就緒功能,如指標(biāo),健康檢查和外部配置;(6)不需要編寫XML就能實(shí)現(xiàn)Sring所有配置要求。SpringBoot項(xiàng)目實(shí)例下載運(yùn)行

打開頁面spring.io,找到GuidesSpringBoot項(xiàng)目實(shí)例下載運(yùn)行

打開項(xiàng)目庫,項(xiàng)目如下:SpringBoot項(xiàng)目實(shí)例下載運(yùn)行

點(diǎn)擊任一實(shí)例,跳轉(zhuǎn)到Github倉庫,下載它的源碼。SpringBoot項(xiàng)目實(shí)例下載運(yùn)行

點(diǎn)擊任一實(shí)例,跳轉(zhuǎn)到Github倉庫,下載它的源碼。SpringBoot項(xiàng)目實(shí)例下載運(yùn)行

點(diǎn)擊任一實(shí)例,跳轉(zhuǎn)到Github倉庫,下載它的源碼。SpringBoot項(xiàng)目實(shí)例下載運(yùn)行

使用eclipse打開項(xiàng)目。SpringBoot項(xiàng)目實(shí)例下載運(yùn)行

使用eclipse打開項(xiàng)目。SpringBoot項(xiàng)目實(shí)例下載運(yùn)行

使用eclipse打開項(xiàng)目。SpringBoot項(xiàng)目實(shí)例下載運(yùn)行

完成打開項(xiàng)目

在項(xiàng)目打開前要下載相應(yīng)的jar包,在期間請勿操作軟件。SpringBoot項(xiàng)目實(shí)例下載運(yùn)行

運(yùn)行實(shí)例gs-rest-service-main服務(wù)

02gs-rest-service-main

程序功能是使用Spring創(chuàng)建“Hello,World”RESTfulweb服務(wù)。程序功能簡單的來說,就是為程序中某一函數(shù)配置一個(gè)URL,通過瀏覽器中輸入該URL,運(yùn)行程序中的函數(shù),運(yùn)行函數(shù)后返回的數(shù)據(jù)顯示在瀏覽器頁面。gs-rest-service-main運(yùn)行效里演示1.運(yùn)行程序后,查看屏幕下方的控制臺顯示的啟動信息,找到web服務(wù)的端口號:8080。2.查看運(yùn)行程序計(jì)算機(jī)IP地址,找到聯(lián)網(wǎng)的IP地址。如果實(shí)例是在本機(jī)上運(yùn)行,也可以用測試IP:代替本機(jī)聯(lián)網(wǎng)IP。3.查看控制器GreetingController.java中的greeting函數(shù)的Get請求標(biāo)識符,Get請求注解后的標(biāo)識符為“/greeting”

使用以上IP、端口號、Get請求注解后的標(biāo)識符,按格式“IP+:+端口號+Get請求注解后的標(biāo)識符”形成地址欄信息,例如本例的:8080/greeting,把以上地址欄信息輸入到瀏覽器地址欄,得到運(yùn)行結(jié)果。gs-rest-service-main運(yùn)行效里演示

這是一種新的函數(shù)運(yùn)行方式,函數(shù)的調(diào)用不再是使用函數(shù)名在程序中調(diào)用。而是,只要用@GetMapping注解把函數(shù)標(biāo)注清楚,結(jié)合運(yùn)行服務(wù)器的計(jì)算機(jī)IP和提供服務(wù)的端口號,即可通過瀏覽器輸入地址來請求運(yùn)行java程序中的函數(shù),函數(shù)返回值就會顯示到返回的頁面上。注解與注釋

注解:代碼里的特殊標(biāo)記,這些標(biāo)記可以在編譯,類加載,運(yùn)行時(shí)被讀取,并執(zhí)行相應(yīng)的處理。通過注解開發(fā)人員可以在不改變原有代碼和邏輯的情況下在源代碼中嵌入補(bǔ)充信。

注釋:注釋就是對代碼的解釋和說明。注解:告訴程序?yàn)槲覀冄a(bǔ)充運(yùn)行代碼,運(yùn)行注釋:解釋,不運(yùn)行創(chuàng)建RESTfulweb服務(wù)@GetMapping注解是保證/greeting的HTTPGET請求映射到greeting()方法。創(chuàng)建RESTfulweb服務(wù),只要在GreetingController類中定義一個(gè)新函數(shù),再使用@GetMapping注解這一個(gè)函數(shù)就能完成HTTPGET請求映射到函數(shù)功能。

現(xiàn)在GreetingController類中定義了一個(gè)新的函數(shù)Hello()。使用@GetMapping注解,使/hello的HTTPGET請求映射到Hello()方法。創(chuàng)建控制器類

控制器類會在程序啟動時(shí)自行構(gòu)造成一個(gè)匿名的對象。當(dāng)使用URL映射運(yùn)行類中的函數(shù),就可以立即調(diào)用對象的方法。

只要在普通的類上加上@RestController就能成為控制器類修改端口號

把命名為perties的文件放到工程瀏覽器與包同一個(gè)目錄下,工程能識別文件,以設(shè)置的端口號啟動訪問。參數(shù)傳遞@GetMapping("/Hello3")

public

StringHello3(@RequestParam(value="name")Stringuser,Stringhobby){

return

user+"喜歡"+hobby

;}

在地址欄中輸入U(xiǎn)RL后,使用“?”隔開,然后再給參數(shù)名賦值。注意事項(xiàng):1.在函數(shù)需要傳遞參數(shù)時(shí),可以不用@RequestParam標(biāo)注參數(shù)。@RequestParam標(biāo)注只是給參數(shù)取一個(gè)別名。2.當(dāng)使用@RequestParam注解,就要使用注解的參數(shù)名稱,否則程序運(yùn)行會發(fā)生錯(cuò)誤。3.無論要傳遞多少個(gè)參數(shù),瀏覽器地址欄輸入?yún)?shù)間都是以&隔開。gs-scheduling-tasks-main服務(wù)03gs-scheduling-tasks-main

這個(gè)程序是使用Spring創(chuàng)建安排任務(wù)的程序。運(yùn)行程序后,在設(shè)定的時(shí)間間隔運(yùn)行一次函數(shù)。gs-rest-service-main運(yùn)行效里演示

運(yùn)行程序后,可以查看到屏幕下方的控制臺顯示的啟動信息,每五秒鐘運(yùn)行一次函數(shù),函數(shù)功能是打印當(dāng)前時(shí)間。創(chuàng)建計(jì)劃服務(wù)。用@Component注解類,使類隨著程序啟動實(shí)例化。在當(dāng)前類中使用@ScheduLED(fixedRate=?)注解,可以設(shè)置注解的函數(shù)每隔多久運(yùn)行一次。@Componentpublic

class

ScheduLEDTasks2{

@ScheduLED(fixedRate=2500)

public

void

plan(){

System.out.println("任務(wù)計(jì)劃,時(shí)間間隔2.5秒運(yùn)行一次");

}}gs-consuming-rest-main服務(wù)04gs-consuming-rest-main

該程序是把一個(gè)頁面獲取的JSON格式數(shù)據(jù),以特定的類對象返回。gs-consuming-rest-main運(yùn)行效里演示

運(yùn)行程序后,https://quoters.apps.pcfone.io/api/random生成一個(gè)JSON格式的隨機(jī)數(shù),返回Quote類的對象。@Beanpublic

CommandLineRunnerrun(RestTemplaterestTemplate)throws

Exception{

return

args

->{

Quotequote

=restTemplate.getForObject(

"https://quoters.apps.pcfone.io/api/random",Quote.class);

log.info(quote.toString());

};

}創(chuàng)建類服務(wù)

創(chuàng)建一個(gè)Greeting類,修改getForObject函數(shù)的參數(shù),把需要轉(zhuǎn)換的URL和返回類型設(shè)置好。我們就可以得到基于特定JSON格式的類的對象用于程序。

注意運(yùn)行時(shí)要啟動gs-rest-service-main服務(wù),否則:8081/greeting返回不了數(shù)據(jù)。gs-mysql-service-main服務(wù)05gs-mysql-service-main

該程序是連接到MySQL數(shù)據(jù)庫,對數(shù)據(jù)庫中的表進(jìn)行增刪改查操作的Spring應(yīng)用程序。gs-mysql-service-main運(yùn)行效里演示

在程序啟動前新建一個(gè)數(shù)據(jù)庫student,程序啟動后,本來空的數(shù)據(jù)庫多了一個(gè)數(shù)據(jù)表。連接數(shù)據(jù)庫perties屬性文件spring.jpa.hibernate.ddl-auto=updatespring.datasource.url=jdbc:mysql://:3306/studentspring.datasource.username=rootspring.datasource.password=rootspring.datasource.driver-class-name=com.mysql.jdbc.Driver#spring.jpa.show-sql:true1.spring.jpa.hibernate.ddl-auto屬性是對表的操作方式2.spring.datasource.url屬性是要連接數(shù)據(jù)庫的URL3.spring.datasource.username和spring.datasource.password屬性是登錄數(shù)據(jù)庫的用戶名與密碼。4.spring.datasource.driver-class-name屬性為連接的驅(qū)動類名稱。5.spring.jpa.show-sql屬性為是否顯示使用的sql語句,生成數(shù)據(jù)表@Entity是類的注解,說明這個(gè)class是實(shí)體類,并且使用默認(rèn)的orm規(guī)則:(1)數(shù)據(jù)庫中的每一張表對應(yīng)編程語言中的一個(gè)類。(2)關(guān)系數(shù)據(jù)庫中的一張表可能有多條記錄,每條記錄對應(yīng)類的一個(gè)實(shí)例。(3)數(shù)據(jù)庫中表的字段與類中的屬性也是一一對應(yīng)的。class名即數(shù)據(jù)庫中表名,class變量屬性名即表中的字段,也就是說把實(shí)體類映射到數(shù)據(jù)庫表中。生成數(shù)據(jù)表@id的意思是聲明一個(gè)屬性將id映射到數(shù)據(jù)庫主鍵的字段。@javax.persistence.Id來注解一個(gè)表中主鍵。操作數(shù)據(jù)表

對于程序而言,CrudRepository接口提供了最基本的對實(shí)體類的操作,通過對實(shí)體類的操作。public

interfaceUserRepositoryextendsCrudRepository<User,Integer>{

}

定義接口UserRepository繼承CrudRepository,并表明接口類操作的實(shí)體類的類型為User。操作數(shù)據(jù)表CrudRepository接口的方法:save(Tentity);保存一條記錄Iterablesave(Iterable<?extendsT>entities);//保存多條記錄TfindOne(IDid);//根據(jù)id查一條記錄booleanexists(IDid);//根據(jù)id判斷該記錄是否存在IterablefindAll();//查詢表中所有記錄longcount();//查詢表中記錄數(shù)量voiddelete(IDid);//根據(jù)Id刪除一條記錄voiddelete(Tentity);//刪除一條記錄voiddelete(Iterable<?extendsT>entities);//刪除多條記錄為表添加一條記錄

以函數(shù)參數(shù)據(jù)方式傳入,賦值到類的屬性中,并使用userRepository對象的save方法把數(shù)據(jù)存儲到表中。為表添加一條記錄查看表的記錄

使用userRepository中的findAll()方法返回表中所有記錄。返回記錄的存放在一個(gè)以user為對象的Iterable集合里,返回到頁面。@GetMapping(path="/all")

public

@ResponseBodyIterable<User>getAllUsers(){

//ThisreturnsaJSONorXMLwiththeusers

return

userRepository.findAll(); } gs-mysql-service-main服務(wù)練習(xí)

使用gs-mysql-service-main服務(wù)程序,為student數(shù)據(jù)庫,新建一個(gè)product的數(shù)據(jù)表。并對表進(jìn)行操作,增加記錄、刪除記錄、修改記錄、查找記錄。THANKS感謝觀看!物聯(lián)網(wǎng)應(yīng)用系統(tǒng)設(shè)計(jì)智能家居項(xiàng)目單片機(jī)LED應(yīng)用服務(wù)程序網(wǎng)關(guān)程序運(yùn)程控制LED燈的項(xiàng)目智能家居項(xiàng)目添加標(biāo)題服務(wù)器程序基于服務(wù)器的作用,分析服務(wù)器的功能有:(1)通過TCP協(xié)議接收網(wǎng)關(guān)轉(zhuǎn)發(fā)的LED燈狀態(tài)信息。(2)通過TCP協(xié)議發(fā)送控制信息到網(wǎng)關(guān),經(jīng)網(wǎng)關(guān)轉(zhuǎn)發(fā)下行。(3)能通過瀏覽器輸入,發(fā)送控制信息。(4)能通過瀏覽器查看歷史狀態(tài)信息和控制信息。(5)有數(shù)據(jù)存儲的功能,能保存上傳的LED燈狀態(tài)信息和下發(fā)的控制信息。服務(wù)器功能2通過Java語言操作數(shù)據(jù)庫記錄數(shù)據(jù)通過URL地址發(fā)送、顯示數(shù)據(jù)教學(xué)目標(biāo)實(shí)現(xiàn)服務(wù)器功能1服務(wù)器Socket接收3添加標(biāo)題難點(diǎn)服務(wù)器的接收數(shù)據(jù)記錄到數(shù)據(jù)庫重點(diǎn)Socket接收和發(fā)送Socket接收和發(fā)送服務(wù)器Socket接收和發(fā)送

01網(wǎng)關(guān)作為Socket服務(wù)端連接(1)創(chuàng)建SocketServerServerSocketserverSocket=newServerSocket(1002);(2)accept()等待接收請求(3)創(chuàng)建連接Socket服務(wù)Socketserver=serverSocket.accept();

網(wǎng)關(guān)作為Socket客戶端連接(1)創(chuàng)建Socket服務(wù),請求連接Socketclient=newSocket("36",1002);網(wǎng)關(guān)作為服務(wù)端/客戶端接收數(shù)據(jù)InputStreaminFromServer=client.getInputStream();intn=inFromServer.available(); inFromServer.read(res);網(wǎng)關(guān)作為服務(wù)端/客戶端發(fā)送數(shù)據(jù)OutputStreamoutToServer=client.getOutputStream(); outToServer.write(data.getBytes());服務(wù)器的Socket接收發(fā)送功能

為gs-mysql-service-main這個(gè)實(shí)例增加Scoket客戶端的功能,使它能夠連接網(wǎng)關(guān)上的Scoket服務(wù)端,達(dá)到與之通信的目的。

在工程包中新建一個(gè)java類GreetingClient.java,用于處理Socket的通信問題。通過Java語言操作數(shù)據(jù)庫記錄數(shù)據(jù)02通過java操作數(shù)據(jù)庫java程序操作數(shù)據(jù)庫增、刪、改、查把Socket客戶端接收到的數(shù)據(jù)存儲到數(shù)據(jù)庫。通過java操作數(shù)據(jù)庫

添加一個(gè)實(shí)體類LEDData,它會在程序連接的數(shù)據(jù)庫中生成一個(gè)數(shù)據(jù)表LEDData,里面有三個(gè)屬性,分別是id、data、datetiem。分別存放記錄id號、接收到的數(shù)據(jù)、接收數(shù)據(jù)的時(shí)間。UserRepository接口是提供操作LEDData表的方法,代碼如下:通過java操作數(shù)據(jù)庫publicinterfaceUserRepositoryextendsCrudRepository<LEDData,Integer>{

}通過java操作數(shù)據(jù)庫Socket通信接收到數(shù)據(jù)后,使用對象的setData和setDatetime的方法保存對象ledData的屬性data和datetime的值,最后使用save方法,把ledData屬性的值保存到數(shù)據(jù)庫表的字段中。接收數(shù)據(jù)并儲存運(yùn)行效果通過URL地址發(fā)送、顯示數(shù)據(jù)03發(fā)送控制信息

在GreetingClient類中DataOutputStreamout是私有屬性,包內(nèi)其它類不能調(diào)用該屬性。要有一個(gè)公有的方法,獲得DataOutputStreamout這一個(gè)輸出流。public

OutputStreamgetOut(){

return

out;

}通過URL地址發(fā)送信息訪問URL地址Socket發(fā)送信息webjava參數(shù)傳遞@RestController注解放到控制器類上。

@GetMapping("/greeting")注解函數(shù)運(yùn)行的請求。@RequestParam注解將請求參數(shù)綁定到控制器的方法參數(shù)上。

@GetMapping("/greeting") publicGreetinggreeting(@RequestParam

Stringname){

returnname; }通過URL地址發(fā)送信息

在MainController這一個(gè)控制器類中編寫一個(gè)函數(shù),使之映射到U

溫馨提示

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

評論

0/150

提交評論