servelt與webservice的異同:
請求:
客戶端訪問乙個伺服器的url,只需要傳送簡單的httprequest即可。
但servlet只能接受乙個簡單的http請求;
而webservice是可以傳送乙個xml作為其請求內容。
傳輸:
servlet使用http協議傳輸資料。
ws使用固定的xml格式封裝成soap訊息,可以使用http作為底層資料傳輸,但並不侷限於http協議。
返回結果:
servlet返回的是html頁面;
ws返回的可以是複雜物件甚至使用附件或者mutidata的2進製檔案。
部署:
webservice則需要有wsdl檔案來部署服務,或者使用uddi註冊。
優勢:
webservice的跨平台特性是servlet不能比的;
而servlet相對來說速度上的優勢也是不可忽視的。
soap只是封裝訊息,它和傳輸沒有關係。在使用soap時我們要通過傳輸協議完成,當然用的最多的就是http了。在 soap spec 中並不限定你使用什麼傳輸協議。
為了說明servlet和web service的區別,我大致描述一下axis的實現吧。當乙個帶有soap訊息的http請求傳輸到axis時,axisservlet的dopost方法相應該請求。我們的請求往往是http://localhost:8080/axis/services/servicename,按照axis的預設的部署方式,通過http://localhost:8080/axis/services定位到axisservlet,axisservlet繼承自httpservlet,然後通過解析servicename定位到請求的是哪乙個服務,這些都是axis實現好的。部署的服務你可這樣理解:動態繫結到axis上的一些模組。
。然後axis通過自己的一系列handler解析http帶的soap訊息,當然你可以實現自己的handler。通過解析soap訊息取得呼叫的是哪乙個方法,然後由soap中的訊息值呼叫該方法,如果方法是req-res方式還要構建返回soap訊息。
servelt亂碼問題
之所以會產生亂碼,是由於伺服器端和客戶端的編碼方式不一致造成的。客戶端與伺服器端的互動過程中,存在著兩次資料交換 第一次,客戶端向伺服器端發起請求,第二次資料交換,伺服器端響應客戶端的請求後做出應答,將處理結果返回給客戶端。前提了解,無論伺服器端是在接受資料還是在返回資料時,如果不指定其資料編碼格式...
用python客戶端去訪問webservice
在前幾篇文章裡面我重點用python去發布乙個webservice。我用的是soaplib庫。發布以後確實可以通過php來訪問,也可以通過python訪問,通過php訪問的話還好。但是通過python訪問的時候必須知道服務端的 這一點從官方給出的demo可以看出,這就比較煩人。所以我改用另外的乙個p...
18 webserv 流socket的應用
1 伺服器設計 學習了網路程式設計的基本操作和設計原則,建立乙個web伺服器,這是乙個典型的socket流的客戶端 伺服器系統。伺服器設立服務,然後進入迴圈接收和處理請求。客戶端連線到伺服器,然後傳送 接收或者交換資料,最後退出。該互動過程主要包含3個操作 2 建立伺服器socket 設立乙個服務一...