亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

基于Java的Web服務器工作原理(1)

2019-11-18 12:52:03
字體:
來源:轉載
供稿:網友

  一個 Web 服務器也被稱為 HTTP 服務器,它通過 HTTP 協議與客戶端通信。這個客戶端通常指的是 Web 瀏覽器。一個基于 java 的 Web 服務器用到二個重要的類,java.net.Socket 與 java.net.ServerSocket ,并通過 HTTP 消息通信。因此,本文從討論 HTTP 與這二個類開始,然后我將解釋一個與本文相關的簡單的 Web 應用。
  
    The Hypertext Transfer PRotocol(HTTP)
  
    HTTP 是一種讓 Web 服務器與瀏覽器(客戶端)通過 Internet 發送與接收數據的協議。它是一個請求、響應協議--客戶端發出一個請求,服務器響應這個請求。HTTP 運用可靠的 TCP 連接,通常用的 TCP 80 端口。它的第一個版本是 HTTP/0.9 ,然后被 HTTP/1.0 取代。當前的版本是 HTTP/1.1 ,由 RFC2616(.pdf) 定義。
  
    本節主要對應 HTTP 1.1 ,足夠使你充分理解由 Web 服務器程序發出的消息。假如你對更加具體的知識有愛好,可以參考 RFC2616 。
  
    在 HTTP 中,客戶端總是通過建立一個連接與發送一個 HTTP 請求來發起一個事務。服務器不能主動去與客戶端聯系,也不能給客戶端發出一個回叫連接??蛻舳伺c服務器端都可以提前中斷一個連接。例如,當用一個瀏覽器下載一個文件時,你可以通過點擊“停止”鍵來中斷文件的下載,關閉與服務器的 HTTP 連接。
  
    HTTP 請求
  
    一個 HTTP 請求包含三個部分:
  
  Method-URI-Protocol/Version 方法-地址-版本
  Request header 請求頭
  Entity body 請求實體
  

  
  
    下面是一個 HTTP 請求實例:
  
  POST /servlet/default.jsp HTTP/1.1
  Accept: text/plain; text/Html
  Accept-Language: en-gb
  Connection: Keep-Alive
  Host: localhost
  Referer: http://localhost/ch8/SendDetails.htm
  User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)
  Content-Length: 33
  Content-Type: application/x-www-form-urlencoded
  Accept-Encoding: gzip, deflate
  
  LastName=Franks&FirstName=Michael
  
  The Method-URI-Protocol/Version 在這個請求的第一行:
  
  POST /servlet/default.jsp HTTP/1.1
  

  
  
    其中 POST 是請求的類型。每個客戶端 HTTP 請求可以是 HTTP 規范中指定的許多請求類型中的一種。HTTP 1.1 支持七種類型的請求,它們是 GET,POST,HEAD,OPTIONS,PUT,DELETE,TRACE。其中 GET 與 POST 是 Internet 應用中經常用到的二種請求類型。
  
    URI 完整地指定了 Internet 資源。一個 URI 通常被解析為相對服務器的根目錄。這樣,它應該總是以一個 '/' 前綴開始。一個 URL 實際上是 URI 的一種類型。
  
    Version 指的是該 HTTP 請求所用到的 HTTP 協議版本。
  
    請求頭包含了客戶端環境與請求實體的一些有用的信息。例如它包含瀏覽器設定的語言、實體的長度等等。每條請求頭用回車換行符(CRLF)分開。
  
    一個非常重要的空行分開了請求頭與實體,它標志著實體內容的開始。一些 Internet 開發書籍認為這個 CRLF 空行是 HTTP 請求的第四個部分。
  
    在上面的 HTTP 請求中,實體只是簡單以下的一行:
  
  LastName=Franks&FirstName=Michael
  

  
  
    在一個典型的 HTTP 請求中,請求實體內容會長得多。
  
    HTTP 響應
  
    與請求相似,HTTP 響應也由三部分組成:
  
  Protocol-Status code-Description 協議狀態 描述代碼
  Response headers 響應頭
  Entity body 響應實體
  

  
  
    以下是一個 HTTP 響應的實例:
  
  HTTP/1.1 200 OK
  Server: Microsoft-IIS/4.0
  Date: Mon, 3 Jan 1998 13:13:33 GMT
  Content-Type: text/html
  Last-Modified: Mon, 11 Jan 1998 13:23:42 GMT
  Content-Length: 112
  
  
  
  HTTP Response Example
  Welcome to Brainy Software
  
  
  

  
  
    響應頭的第一行類似請求頭的第一行,告訴你所用的協議是 HTTP 1.1 ,請求成功(200=sUCcess),以及沒有任何問題。
  
    響應頭類似請求頭也包含了一些有用的信息。響應的實體響應本身的 HTML 內容。頭與實體之間由回車換行的空行(CRLF)分開。
  
    Socket 類
  
    一個 socket 是一個網絡連接的端點,它使得一個應用可以從網絡讀與寫。在不同電腦上的二個應用軟件能夠通過收發字節流而彼此通信。要發一個信息到另一個應用程序,你需要知道它的IP地址,以及它的 socket 端口號。在 Java 中,一個 socket 用 java.net.Socket 來實現。
  
    要創建一個 socket ,你可以用 Socket 類中幾個構建方法中的一個。其中一個接受主機名與端口號作為參數:
  
  new Socket("yahoo.com", 80);
  

  
  
    一旦你成功地創建了一個 Socket 類的實例,你就可以用它去發送與接收字節流了。要發送字節流,你需要呼叫 Socket 類的 getOutputStream 方法來得到一個 java.io.OutputSteam 對象。要發送文本到遠程的程序,你通常需要從返回的 OutputStream 創建一個 java.io.PrintWriter 對象。要從連接的另一端接收字節流,你需要呼叫 Socket 類的 getInputStream 方法,它返回一個 java.io.InputStream 對象。
  
    以下代碼創建一個可以與本地 HTTP 服務器通信的 socket (127.0.0.1 表示一個本地的主機),發送一個 HTTP 請求,并接收從服務器的響應。它還創建一個 StringBuffer 對象來接受響應,并打印到控制臺。
  
  Socket socket = new Socket("127.0.0.1", "8080");
  OutputStream os = socket.getOutputStream();
  boolean autoflush = true;
  PrintWriter out = new PrintWriter( socket.getOutputStream(),
   autoflush );
  BufferedReader in = new BufferedReader(
   new InputStreamReader( socket.getInputStream() ));
  
  // send an HTTP request to the web server
  out.println("GET /index.jsp HTTP/1.1");
  out.println("Host: localhost:8080");
  out.println("Connection: Close");
  out.println();
  
  // read the response
  boolean loop = true;
  StringBuffer sb = new StringBuffer(8096);
  
  while (loop) {
   if ( in.ready() ) {
   int i=0;
   while (i!=-1) {
   i = in.read();
   sb.append((char) i);
   }
   loop = false;
   }
   Thread.currentThread().sleep(50);
  }
  
  // display the response to the out console
  System.out.println(sb.toString());
  socket.close();
  

  
  
    注重要從 web 服務器得到正確的響應,你必須要發送用 HTTP 協議編譯了的 HTTP 請求。假如你看了上面的 HTTP 部分,你應該能夠理解上面代碼中的 HTTP 請求。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩久久午夜影院| 一区二区三区四区视频| 国产欧美日韩视频| 国自产精品手机在线观看视频| 欧美大片在线影院| 有码中文亚洲精品| 成人午夜在线观看| 97av视频在线| 亚洲福利视频久久| 中文字幕久精品免费视频| 国产综合在线观看视频| 91久久久久久| 国产精品久久一区| 欧美一级淫片播放口| 久久久久久久国产精品视频| 自拍偷拍亚洲在线| 欧美交受高潮1| 中文字幕视频在线免费欧美日韩综合在线看| 久久的精品视频| 亚洲精品久久久久中文字幕二区| 日本19禁啪啪免费观看www| 国产精品久久久久久久久免费| 成人精品一区二区三区电影免费| 精品国产一区二区三区久久狼5月| 亚洲精品日韩丝袜精品| 亚洲自拍偷拍区| 精品成人乱色一区二区| 久久久av电影| 欧美成人精品不卡视频在线观看| 色播久久人人爽人人爽人人片视av| 久久99视频精品| 国产精品白丝jk喷水视频一区| 亚洲一二在线观看| 美女久久久久久久久久久| 日本高清不卡的在线| 欧美性色19p| 亚洲福利影片在线| 欧美第一淫aaasss性| 日韩国产高清污视频在线观看| 成人免费视频在线观看超级碰| 亚洲欧洲在线观看| 亚洲乱码av中文一区二区| 久久国产精品久久国产精品| 亚洲第一综合天堂另类专| 精品激情国产视频| 成人妇女免费播放久久久| 久久人人97超碰精品888| www.午夜精品| 欧美网站在线观看| 日韩成人在线视频网站| 国产一区二区日韩精品欧美精品| 亚洲精品国产拍免费91在线| 97久久精品国产| 欧美中文字幕在线视频| 国产日韩精品入口| 国产欧美一区二区三区视频| 伊人久久免费视频| 精品久久久国产| 欧美成aaa人片在线观看蜜臀| 日韩中文字幕在线视频| 91亚洲午夜在线| 91久久中文字幕| 久久男人av资源网站| 国产在线久久久| 亚洲欧洲一区二区三区久久| 97在线视频观看| 日韩av黄色在线观看| 国产精品欧美日韩一区二区| 国产精品久久久久影院日本| 国产精品电影网站| 欧美日韩亚洲视频一区| 日韩av电影国产| 国产精品吹潮在线观看| 精品久久久久久久久中文字幕| 欧美激情videoshd| 日韩精品免费看| 亚洲色图偷窥自拍| 91久久久亚洲精品| 久久久欧美精品| 久久免费高清视频| 8x海外华人永久免费日韩内陆视频| 色偷偷噜噜噜亚洲男人的天堂| 亚洲国产欧美久久| 亚洲一区第一页| 久久精品99久久久香蕉| 久久久视频在线| 2019日本中文字幕| 国产日韩在线一区| 日韩在线视频播放| 日韩在线观看视频免费| 亚洲精品按摩视频| 欧美激情亚洲精品| 国产一区二区三区在线免费观看| 中文字幕亚洲欧美日韩2019| 中文字幕成人精品久久不卡| 国产精品永久免费视频| 亚洲成人免费在线视频| 国产色综合天天综合网| 亚洲成人激情在线| 国产精品久久久精品| 日本久久久久久久| 亚洲色图18p| 欧美日韩国产精品一区二区三区四区| 狠狠躁夜夜躁久久躁别揉| 久久久免费在线观看| 欧美多人爱爱视频网站| 亚洲国产日韩欧美综合久久| 韩曰欧美视频免费观看| 欧美黑人性猛交| 亚洲国产一区二区三区在线观看| 亚洲人成在线观看网站高清| 欧美成人免费在线观看| 97在线观看免费高清| 992tv在线成人免费观看| 国产午夜精品美女视频明星a级| 亚洲高清久久久久久| 国产女精品视频网站免费| 成人午夜在线视频一区| 日韩乱码在线视频| 精品国偷自产在线视频| 国产欧美日韩精品在线观看| 91精品国产综合久久久久久蜜臀| 色久欧美在线视频观看| 国产一区二区三区三区在线观看| 日韩在线观看av| 91精品国产一区| 国产精品美女在线| 欧美日韩人人澡狠狠躁视频| 久久精品一本久久99精品| 国产精品男女猛烈高潮激情| 亚洲精品v天堂中文字幕| 欧美精品做受xxx性少妇| 亚洲人成在线观看网站高清| 久久精品国产电影| 一区二区三区四区在线观看视频| 色偷偷偷亚洲综合网另类| 亚洲精选在线观看| 亚洲色无码播放| 国产视频精品久久久| 川上优av一区二区线观看| 亚洲第一福利网站| www.久久色.com| 日韩欧美国产骚| 国产丝袜一区二区三区| 欧美第一页在线| 亚洲欧美制服丝袜| 中文字幕国产精品久久| 亚洲免费影视第一页| 91wwwcom在线观看| 富二代精品短视频| 欧美夫妻性生活视频| 亚洲国产成人一区| 亚洲天堂av电影| 日韩欧美综合在线视频| 亚洲91av视频| 日韩av影视综合网| 欧美日韩亚洲精品内裤| 自拍偷拍亚洲区| 欧洲精品久久久| 国产伦精品免费视频| 国产不卡av在线| 欧美电影免费观看电视剧大全| 欧美成人午夜剧场免费观看| 国产日韩亚洲欧美|