![智能手機(jī)使用JSON與服務(wù)端交互架構(gòu)思考與實(shí)現(xiàn)_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/6/ec1123a6-6971-47d9-aabb-711ed0288f7d/ec1123a6-6971-47d9-aabb-711ed0288f7d1.gif)
![智能手機(jī)使用JSON與服務(wù)端交互架構(gòu)思考與實(shí)現(xiàn)_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/6/ec1123a6-6971-47d9-aabb-711ed0288f7d/ec1123a6-6971-47d9-aabb-711ed0288f7d2.gif)
![智能手機(jī)使用JSON與服務(wù)端交互架構(gòu)思考與實(shí)現(xiàn)_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/6/ec1123a6-6971-47d9-aabb-711ed0288f7d/ec1123a6-6971-47d9-aabb-711ed0288f7d3.gif)
![智能手機(jī)使用JSON與服務(wù)端交互架構(gòu)思考與實(shí)現(xiàn)_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/6/ec1123a6-6971-47d9-aabb-711ed0288f7d/ec1123a6-6971-47d9-aabb-711ed0288f7d4.gif)
![智能手機(jī)使用JSON與服務(wù)端交互架構(gòu)思考與實(shí)現(xiàn)_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/6/ec1123a6-6971-47d9-aabb-711ed0288f7d/ec1123a6-6971-47d9-aabb-711ed0288f7d5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、智能手機(jī)使用JSON與服務(wù)端交互架構(gòu)思考與實(shí)現(xiàn)關(guān)于喧囂求靜網(wǎng)名:喧囂求靜 個(gè)人博客:www.apk-QQ:879081656說(shuō)明:喧囂之中求一點(diǎn)寧?kù)o,淡泊明志、寧?kù)o致遠(yuǎn)頭像就不貼啦,寫文章有點(diǎn)不好意思,怕寫得不好,到時(shí)沒(méi)臉見(jiàn)各位,哈哈申明:文章引用過(guò)網(wǎng)友的圖片、博客,在此感謝,若有侵權(quán)請(qǐng)聯(lián)系背景在開發(fā)手機(jī)客戶端APP時(shí),經(jīng)常會(huì)與服務(wù)端交換數(shù)據(jù)。數(shù)據(jù)交換接口通常會(huì)以XML格式和JSON兩種常用格式返回?cái)?shù)據(jù),在傳統(tǒng)web頁(yè)面開發(fā)中,隨著AJAX技術(shù)的興起,JSON作為一種輕量級(jí)的數(shù)據(jù)交換格式,以其易于閱讀和編寫的優(yōu)點(diǎn),被應(yīng)用到越來(lái)越多的項(xiàng)目中,轉(zhuǎn)到手機(jī)客戶端開發(fā),這就自然而然的優(yōu)先選擇JSON作為
2、與服務(wù)端的數(shù)據(jù)交換。筆者在一線開發(fā)多年,接觸到手機(jī)客戶端和服務(wù)端開發(fā),比較常用的數(shù)據(jù)交換格式即xml和json。Xml:應(yīng)用場(chǎng)景是為了兼容舊有系統(tǒng)和跨異構(gòu)網(wǎng)絡(luò),降低接口開發(fā)成本,例如:接口是webservice服務(wù)接口Json:應(yīng)用場(chǎng)景基本上是基于http協(xié)議開發(fā)接口,屬于全新開發(fā),接口開發(fā)成本稍微高。為什么實(shí)際項(xiàng)目開發(fā)中,優(yōu)先選擇使用基于http協(xié)議開發(fā)接口返回json數(shù)據(jù)格式呢?1. 手機(jī)端流量考慮,jsono數(shù)據(jù)格式相對(duì)xml節(jié)約流量,流量對(duì)于手機(jī)可是要用米的啊2. 手機(jī)端處理性能考慮,基于http協(xié)議返回json數(shù)據(jù),便于數(shù)據(jù)處理,速度快服務(wù)端架構(gòu)思考場(chǎng)景一手機(jī)端和服務(wù)端接口業(yè)務(wù)描述:
3、手機(jī)端用戶發(fā)起http請(qǐng)求-web服務(wù)器接收請(qǐng)求-調(diào)用接口-返回處理后的json數(shù)據(jù) -手機(jī)端接收數(shù)據(jù)解析-判斷數(shù)據(jù)的正確性-處理數(shù)據(jù)展現(xiàn)返回的json數(shù)據(jù)“key”:”value”,對(duì)于場(chǎng)景一,簡(jiǎn)單實(shí)現(xiàn)了需求上的要求,但沒(méi)有考慮到數(shù)據(jù)傳輸上的安全性問(wèn)題及服務(wù)端處理時(shí),有錯(cuò)誤或異常的情況,所以筆都設(shè)想出第二種場(chǎng)景場(chǎng)景二手機(jī)端和服務(wù)端接口業(yè)務(wù)描述:手機(jī)端用戶發(fā)起https請(qǐng)求-web服務(wù)器接收請(qǐng)求-調(diào)用接口-返回處理后的json數(shù)據(jù) -手機(jī)端接收數(shù)據(jù)解析-判斷數(shù)據(jù)的正確性-處理數(shù)據(jù)展現(xiàn)返回的json數(shù)據(jù)“flag”:true,”msg”:”接口成功”,“data”:“key”:”value”,說(shuō)
4、明:flag標(biāo)識(shí)處理成功為true,否則為false,msg為處理消息說(shuō)明,若flag=false,則為友好的錯(cuò)誤信息data為數(shù)據(jù)部分,若flag=false,則為空json串服務(wù)端架構(gòu)實(shí)現(xiàn)筆者選擇的相關(guān)技術(shù)如下:Web 服務(wù)器:tomcat框架:spring mvc 配置tomcat 服務(wù)器支持httpsSSL協(xié)議使用不對(duì)稱加密技術(shù)實(shí)現(xiàn)雙方之間信息的安全傳遞??梢詫?shí)現(xiàn)信息傳遞的保密性、完整性,并且會(huì)話雙方能鑒別對(duì)方身份。 與網(wǎng)站建立https連接時(shí),瀏覽器與WEB SERVER之間要經(jīng)過(guò)一個(gè)握手的過(guò)程來(lái)完成身份鑒定與密鑰交換,建立安全連接。過(guò)程是: 1、用戶瀏覽器將其S
5、SL版本號(hào)、加密設(shè)置參數(shù)、與session有關(guān)的數(shù)據(jù)以及其它一些必要信息發(fā)送到服務(wù)器 2、服務(wù)器將其SSL版本號(hào)、加密設(shè)置參數(shù)、與session有關(guān)的數(shù)據(jù)以及其它必要信息發(fā)送給瀏覽器,同時(shí)發(fā)給瀏覽器的還有服務(wù)器的證書。如果配置服務(wù)器的SSL需要驗(yàn)證用戶身份,還要發(fā)出請(qǐng)求瀏覽器提供用戶證書。 3、客戶端檢查服務(wù)器證書,如果檢查失敗,提示不能建立SSL連接,如果成功,則繼續(xù) 4、客戶端瀏覽器為本次會(huì)話生成pre-master secret,并將其用服務(wù)器公鑰加密后發(fā)送給服務(wù)器。5、如果服務(wù)器要求鑒別客戶身份,客戶端還要再對(duì)另外一些數(shù)據(jù)簽名后并將其與客戶端證書一起發(fā)送給
6、服務(wù)器。6、如果服務(wù)器要求鑒別客戶身份,則檢查簽署客戶證書的CA是否可信。如果不在信任列表中,結(jié)束本次會(huì)話。如果檢查通過(guò),服務(wù)器用自己的私鑰解密收到的 pre-master secret,并用它通過(guò)某些算法生成本次會(huì)話的master secret。 7、客戶端與服務(wù)器均使用此master secret生成本次會(huì)話的會(huì)話密鑰(對(duì)稱密鑰)。在雙方SSL握手結(jié)束后傳遞任何消息均使用此會(huì)話密鑰。這樣做的主要原因是對(duì)稱加密比非對(duì)稱加密的運(yùn)算量低一個(gè)數(shù)量級(jí)以上,能夠顯著提高雙方會(huì)話時(shí)的運(yùn)算速度。 8、客戶端通知服務(wù)器此后發(fā)送的消息都使用這個(gè)會(huì)話密鑰進(jìn)行加密。并通知服務(wù)器客戶端已經(jīng)完成本
7、次SSL握手。 9、服務(wù)器通知客戶端此后發(fā)送的消息都使用這個(gè)會(huì)話密鑰進(jìn)行加密。并通知客戶端服務(wù)器已經(jīng)完成本次SSL握手。 10、本次握手過(guò)程結(jié)束,會(huì)話已經(jīng)建立。雙方使用同一個(gè)會(huì)話密鑰分別對(duì)發(fā)送以及接受的信息進(jìn)行加、解密。 一、創(chuàng)建證書C:UsersAdministrator>keytool -genkey -alias tomcat -keyalg RSA -keystore e:tomcat.keystore輸入密鑰庫(kù)口令:tomcat二、配置tomcat,使其支持https連接打開tomcat目錄下conf/server.xml文件,將之前的連接部分注釋
8、,找到以下節(jié)點(diǎn):<!- Define a SSL HTTP/1.1 Connector on port 8443 This connector uses the JSSE configuration, when using APR, the connector should be using the OpenSSL style configuration
9、; described in the APR documentation -><! <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150"
10、 scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" /> ->將<connectore節(jié)點(diǎn)的注釋去掉,8443修改為你要使用的端口。節(jié)點(diǎn)中添加兩個(gè)屬性:keystoreFile="C:/tomcat.key
11、store" keystorePass="123456"其中,keystoreFile指的是你第一步生成的證書文件位置,keystorePass是你在生成證書時(shí)所輸入的密碼。搭建spring mvc環(huán)境第一步:搭建spring mvc環(huán)境:工程依賴jarweb.xml配置文件<servlet><servlet-name>dispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servle
12、t-class><load-on-startup>1</load-on-startup><servlet-mapping><servlet-name>dispatcher</servlet-name><url-pattern>/</url-pattern></servlet-mapping> <context-param><param-name>contextConfigLocation</param-name><param-value&g
13、t;/WEB-INF/dispatcher-servlet.xml</param-value></context-param> <listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-
14、file-list>spring mvc配置文件dispatcher-servlet.xml<beans xmlns="/schema/beans"xmlns:context="/schema/context"xmlns:xsi="/2001/XMLSchema-instance" xmlns:mvc="/sc
15、hema/mvc"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-3.0.xsd /schema/mvc/schema/mvc/spring-mvc-3.2.xsd http:/www.springframewor
16、/schema/context /schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="net.study"/> <beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="pref
17、ix"><value>/WEB-INF/views/</value></property><property name="suffix"><value>.jsp</value></property></bean> <beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <prop
18、erty name="messageConverters"><list><ref bean="stringHttpMessageConverter" /><ref bean="mappingJacksonHttpMessageConverter" /></list></property> </bean><bean id="stringHttpMessageConverter"class="org.springfr
19、amework.http.converter.StringHttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/plain;charset=UTF-8</value><value>text/html;charset=UTF-8</value></list></property> </bean> <bean id="ma
20、ppingJacksonHttpMessageConverter"class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes"><list><value>application/json;charset=UTF-8</value><value>text/html;charset=UTF-8&l
21、t;/value></list></property></bean><mvc:annotation-drivencontent-negotiation-manager="contentNegotiationManager" /><bean id="contentNegotiationManager"class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"><propert
22、y name="favorPathExtension" value="false" /><property name="favorParameter" value="false" /><property name="ignoreAcceptHeader" value="false" /><property name="mediaTypes"><value>atom=application/atom+xm
23、lhtml=text/htmljson=application/json*=*/* </value></property></bean></beans>測(cè)試訪問(wèn),默認(rèn)導(dǎo)向index.jsp,工程搭建成功JSON數(shù)據(jù)包裝類實(shí)現(xiàn)返回的json數(shù)據(jù)“flag”:true,”msg”:”接口成功”,“data”:“key”:”value”,public class ResultJsonWrap implements Serializable private static final long serialVersionUID = -90543709208
24、69476388L; /* 是否成功: */ private boolean flag = true; /* 調(diào)用接口返回的消息 */ private String msg = "調(diào)用成功" /* 返回的數(shù)據(jù)對(duì)象 */ private Object data = "" /*分頁(yè)查詢時(shí),同一查詢下的總記錄數(shù)*/ private int rowCount=0; /*分頁(yè)查詢時(shí),同一查詢下的總頁(yè)數(shù)*/private int totalPage=0;因?yàn)榭紤]到手機(jī)客戶端經(jīng)常會(huì)用到列表展示數(shù)據(jù),并要求支持分面,在此設(shè)計(jì)一個(gè)分頁(yè)的DTOpublic class Ap
25、pPageDto<T> implements Serializable /*分頁(yè)查詢時(shí),同一查詢下的總記錄數(shù)*/ private int rowCount=0; /*分頁(yè)查詢時(shí),同一查詢下的總頁(yè)數(shù)*/ private int totalPage=0; /*查詢結(jié)果*/ private List<T> resultList;異常處理定義 public class AppExcetion extends Exception /* * */private static final long serialVersionUID = -8384800471314873635L;pr
26、ivate int errorCode;private String errorMsg;接口實(shí)現(xiàn)包結(jié)構(gòu)定義 Com.study -Controller 對(duì)應(yīng)mvc中控制器 -Service 服務(wù)層-Dao 數(shù)據(jù)持久層 -dto 數(shù)據(jù)傳輸對(duì)象中 -exception 自定義異常Controller: 注解,表示此類為spring mvc中控制器類RequestMapping(value = "/study/*") 注解,表示此類訪問(wèn)path限定在studyRequestMapping(value = "/appLogin.action") 表示具體的訪問(wèn)接
27、口,/study/ appLogin.actionResponseBody 表示此接口返回?cái)?shù)據(jù)格式為json舉個(gè)常用的登錄校驗(yàn)案例ControllerRequestMapping(value = "/study/*")public class LogionController Autowired Qualifier("userServiceP") private IUserService userService;/* * App登錄接口* return result */RequestMapping(value = "/appLogin.action")ResponseBodypublic ResultJ
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《商務(wù)溝通概述》課件
- 二零二五年度特色民宿樓房使用權(quán)交易合同3篇
- 《結(jié)構(gòu)設(shè)計(jì)基本原則》課件
- 《輸電線路保護(hù)》課件
- 《軸承失效判斷及分》課件
- 《個(gè)人所得稅法解析》課件
- 體育師資隊(duì)伍激勵(lì)機(jī)制
- 二零二五年度苗圃土地租賃與苗木進(jìn)出口貿(mào)易合同
- 2023三年級(jí)英語(yǔ)上冊(cè) Unit 7 It's a dog說(shuō)課稿 湘少版
- 《Unit 6 My family》(說(shuō)課稿及反思)-2024-2025學(xué)年滬教版(五四制)(2024)英語(yǔ)一年級(jí)上冊(cè)
- 銷售人員培訓(xùn)課程課件
- 電子表格表格會(huì)計(jì)記賬憑證模板
- 制造過(guò)程優(yōu)化與工藝改進(jìn)培訓(xùn)
- 46號(hào)抗磨液壓油MSDS
- 水磨石地面驗(yàn)收標(biāo)準(zhǔn)
- MMPI14個(gè)量表得分題目號(hào)碼
- QC成果提高剪力墻線盒預(yù)埋安裝合格率
- 建筑工程施工質(zhì)量驗(yàn)收規(guī)范檢驗(yàn)批填寫全表格+示范填寫與說(shuō)明
- 龍虎山正一日誦早晚課
- 車輛年審委托書下載
- 高考語(yǔ)文閱讀兒童視角的作用專項(xiàng)訓(xùn)練(含答案)
評(píng)論
0/150
提交評(píng)論