《Spring編程技術(shù)與應(yīng)用》課件13_第1頁
《Spring編程技術(shù)與應(yīng)用》課件13_第2頁
《Spring編程技術(shù)與應(yīng)用》課件13_第3頁
《Spring編程技術(shù)與應(yīng)用》課件13_第4頁
《Spring編程技術(shù)與應(yīng)用》課件13_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

AJAX訪問Spring的REST風(fēng)格的服務(wù)工作原理13.1基于XML的消息傳送方案13.1.1客戶端代碼設(shè)計(jì)1.請求漢字的傳送處理

varkey=keyWord.value;//獲取文本框的輸入myurl="search/"+key;myurl=encodeURI(myurl);myurl=encodeURI(myurl);xmlhttp.Open("POST",myurl,false);xmlhttp.setRequestHeader('Content-Type',

'application/x-www-form-urlencoded;charset=utf-8');xmlhttp.send(null);2.對XML響應(yīng)消息的解析處理

varresponse=xmlhttp.responseText;varxmldoc=newActiveXObject("Microsoft.XMLDOM");xmldoc.loadXML(response);varroot=xmldoc.documentElement ;varnodes=root.childNodes;for(vari=0;i<nodes.length;i++){//循環(huán)獲取所有的查詢結(jié)果

s1=convert(nodes.item(i).getAttribute("titleName"),key);//獲取資源的標(biāo)題

……//資源其他屬性的獲取略

disp=disp+"<listyle='color:#3488b4'><aref='resource/download/"+s3+"'>"+

s1+"</a></li>"+s2;//拼接顯示內(nèi)容

}res.innerHTML=disp;//顯示拼接的結(jié)果3.特殊顯示的處理轉(zhuǎn)換函數(shù)convert將在message字符串中查找關(guān)鍵詞key,并將字符串中包含key的部分加入紅色字體顯示的代碼。functionconvert(message,key){ vark=0; varx=message; varle=key.length; k=x.indexOf(key,k); while(k!=-1){ x=x.substring(0,k)+"<fontcolor=red>"+key+"</font>"+x.substring(k+le); k=x.indexOf(key,k+le+23);//23是加入紅色顯示導(dǎo)致串字符增加個數(shù)

} returnx;}13.1.2服務(wù)端代碼設(shè)計(jì)1.加入字符過濾器為了實(shí)現(xiàn)中文的正確處理,需要在web.xml文件中配置文件中加入過濾器,這樣所有字符將變?yōu)閁TF-8編碼。2.業(yè)務(wù)邏輯方法publicList<MyResource>search(Stringkey){ List<MyResource>m=jdbcTemplate.query( "select*fromresourcewheretitleNamelike'%"+key+"%'", newRowMapper<MyResource>(){ publicMyResourcemapRow(ResultSetrs,introwNum)throwsSQLException{ MyResourcer=newMyResource(); r.setResourceID(rs.getInt("resourceID"));.....3.控制器的設(shè)計(jì)@ControllerpublicclassmyController{

@RequestMapping(value="/search/{key}",method=RequestMethod.POST)publicvoidsearch(@PathVariable("key")Stringkey, HttpServletResponseresponse){

……//根據(jù)key查數(shù)據(jù)庫,將結(jié)果轉(zhuǎn)化為XML串通過response發(fā)送

}}(1)對接收到的關(guān)鍵詞的解碼處理配合客戶方對字符的編碼處理,服務(wù)方在獲取用戶輸入的查詢關(guān)鍵詞時要對字符進(jìn)行解碼。使用如下方法。try{ ch_key=.URLDecoder.decode(key,"UTF-8");}catch(UnsupportedEncodingExceptione1){}(2)采用XML文檔對象存儲要返回的數(shù)據(jù)信息DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();DocumentBuilderbuilder=dbf.newDocumentBuilder();Documentdoc=builder.newDocument();Elementroot=doc.createElement("directory");doc.appendChild(root);//將根元素添加到文檔上Iterator<MyResource>it=x.iterator();while(it.hasNext()){MyResourcetf=it.next();ElementtmpNode=doc.createElement("file");root.appendChild(tmpNode);tmpNode.setAttribute("titleName",tf.getTitleName());tmpNode.setAttribute("des",tf.getDescription());tmpNode.setAttribute("url",tf.getResourceID()+"."+tf.getFiletype());

}(3)將XML文檔對象轉(zhuǎn)化為字符串publicStringdoc2String(Documentdoc){ Stringstr=null; try{ TransformerFactoryfactory=TransformerFactory.newInstance(); Transformertrans=factory.newTransformer();Writeroutwriter=newStringWriter(); StreamResultstrOut=newStreamResult(outwriter); SourcexmlSource=newDOMSource(doc); trans.transform(xmlSource,strOut); str=outwriter.toString(); }catch(Exceptione){} returnstr;}(4)將響應(yīng)消息發(fā)送給客戶端response.setContentType("text/plain");response.setCharacterEncoding("gb2312");response.getWriter().write(doc2String(doc));13.2基于Json的消息傳送方案13.2.1服務(wù)器方消息響應(yīng)處理List<MyResource>x=r.search(mm);

List<Map<String,String>>list=newArrayList<Map<String,String>>();Iterator<MyResource>it=x.iterator();while(it.hasNext()){MyResourcer=it.next();Map<String,String>map=newHashMap<String,String>();map.put("titleName",r.getTitleName());map.put("des",r.getDescription());map.put("url",r.getResourceID()+"."+r.getFiletype());list.add(map);}

response.setHeader("ContentType","text/plain");response.setCharacterEncoding("utf-8");//解決漢字顯示問題

Gsongson=newGson();StringlistToJson=gson.toJson(list);//將對象轉(zhuǎn)換為Json格式

try{ response.getWriter().write(listToJson); }catch(IOExceptione){e.printStackTrace();}13.2.2客戶方解析消息處理varc=xmlhttp.responseText;varjsonobj=eval("("+c+")");for(i=0;i<jsonobj.length;i++){s1=convert(jsonobj[i].titleName,x);//可以用對象屬性形式訪問屬性成員

s2=conve

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論