資源描述:
《java實現(xiàn)web服務(wù)器》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、java實現(xiàn)web服務(wù)器一個Web服務(wù)器也被稱為HTTP服務(wù)器,它通過HTTP協(xié)議與客戶端通信。這個客戶端通常指的是Web瀏覽器。一個基于Java的Web服務(wù)器用到二個重要的類,java.net.Socket與java.net.ServerSocket,并通過HTTP消息通信。因此,本文從討論HTTP與這二個類開始,然后我將解釋一個與本文相關(guān)的簡單的Web應(yīng)用?! heHypertextTransferProtocol(HTTP) HTTP是一種讓W(xué)eb服務(wù)器與瀏覽器(客戶端)通過Internet發(fā)送與接收數(shù)據(jù)的協(xié)議。它是一個請求、響應(yīng)協(xié)議--客戶端發(fā)出一個請求,服務(wù)器響應(yīng)這個請求
2、。HTTP運用可靠的TCP連接,通常用的TCP80端口。它的第一個版本是HTTP/0.9,然后被HTTP/1.0取代。當(dāng)前的版本是HTTP/1.1,由RFC2616(.pdf)定義?! ”竟?jié)主要對應(yīng)HTTP1.1,足夠使你充分理解由Web服務(wù)器程序發(fā)出的消息。如果你對更加詳細(xì)的知識有興趣,可以參考RFC2616?! ≡贖TTP中,客戶端總是通過建立一個連接與發(fā)送一個HTTP請求來發(fā)起一個事務(wù)。服務(wù)器不能主動去與客戶端聯(lián)系,也不能給客戶端發(fā)出一個回叫連接。客戶端與服務(wù)器端都可以提前中斷一個連接。例如,當(dāng)用一個瀏覽器下載一個文件時,你可以通過點擊“停止”鍵來中斷文件的下載,關(guān)閉與服務(wù)器的H
3、TTP連接?! TTP請求 一個HTTP請求包含三個部分:Method-URI-Protocol/Version方法-地址-版本Requestheader請求頭Entitybody請求實體 下面是一個HTTP請求實例:POST/servlet/default.jspHTTP/1.1Accept:text/plain;text/htmlAccept-Language:en-gbConnection:Keep-AliveHost:localhostReferer:http://localhost/ch8/SendDetails.htmUser-Agent:Mozilla/4.0(co
4、mpatible;MSIE4.01;Windows98)Content-Length:33Content-Type:application/x-www-form-urlencodedAccept-Encoding:gzip,deflateLastName=Franks&FirstName=Michael TheMethod-URI-Protocol/Version在這個請求的第一行:POST/servlet/default.jspHTTP/1.1 其中POST是請求的類型。每個客戶端HTTP請求可以是HTTP規(guī)范中指定的許多請求類型中的一種。HTTP1.1支持七種類型的請求,它們是
5、GET,POST,HEAD,OPTIONS,PUT,DELETE,TRACE。其中GET與POST是Internet應(yīng)用中經(jīng)常用到的二種請求類型?! RI完整地指定了Internet資源。一個URI通常被解析為相對服務(wù)器的根目錄。這樣,它應(yīng)該總是以一個'/'前綴開始。一個URL實際上是URI的一種類型。 Version指的是該HTTP請求所用到的HTTP協(xié)議版本。 請求頭包含了客戶端環(huán)境與請求實體的一些有用的信息。例如它包含瀏覽器設(shè)定的語言、實體的長度等等。每條請求頭用回車換行符(CRLF)分開。 一個非常重要的空行分開了請求頭與實體,它標(biāo)志著實體內(nèi)容的開始。一些Interne
6、t開發(fā)書籍認(rèn)為這個CRLF空行是HTTP請求的第四個部分?! ≡谏厦娴腍TTP請求中,實體只是簡單以下的一行:LastName=Franks&FirstName=Michael 在一個典型的HTTP請求中,請求實體內(nèi)容會長得多?! TTP響應(yīng) 與請求相似,HTTP響應(yīng)也由三部分組成:Protocol-Statuscode-Description協(xié)議狀態(tài)描述代碼Responseheaders響應(yīng)頭Entitybody響應(yīng)實體 以下是一個HTTP響應(yīng)的實例:HTTP/1.1200OKServer:Microsoft-IIS/4.0Date:Mon,3Jan199813:13:33G
7、MTContent-Type:text/htmlLast-Modified:Mon,11Jan199813:23:42GMTContent-Length:112WelcometoBrainySoftware 響應(yīng)頭的第一行類似請求頭的第一行,告訴你所用的協(xié)議是HTTP1.1,請求成功(200=success),以及沒有任何問題?! №憫?yīng)頭類似請求頭也包含了一些有用的信息。響應(yīng)的實體響應(yīng)本身的HTML內(nèi)容。頭與實體之間由回車換行的空行(CRLF