基于Jave的Web服務工作機制2_JSP教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:基于Jave的Web服務工作機制3
      ServerSocket 類   Socket 類表示的是客戶端的socket。無論什么時候,只要你想連接到一個遠程服務器的應用,你都要構(gòu)建一個socket。如果你想執(zhí)行一個服務器應用程序

      HTTP響應(Responses)

        和請求類似,一個HTTP響應也包含三個部分:

        協(xié)議狀態(tài) 代碼描敘(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
        
        

        第一行的響應包頭和上面的請求包頭很相似。 第一行告訴我們,協(xié)議是使用的HTTP1.1,響應請求已成功(200表示成功),一切已OK。

        響應包頭和請求包頭相似,也包含一些有用的信息。響應的實體是HTML那一部分的內(nèi)容。包頭和實體也都是被CRLF序列分離開的。

        Socket類

        套接字(socket)是網(wǎng)絡連接的一個端點。它使得應用程序能夠通過網(wǎng)絡進行讀和寫的操作。 通過在連接上發(fā)送和接受字節(jié)流,兩個位于不同計算機的軟件程序能夠彼此相互通訊。為了發(fā)送一個消息到另一個程序,你需要知道對方機器的IP地址和socket端口號。在JAVA中,一個socket是由java.net.Socket類所表示的。

        為了創(chuàng)建一個套接字,你可以使用Socket類的構(gòu)造函數(shù)來完成。 這些構(gòu)造函數(shù)接受主機名和端口:

        public Socket(String host, int port)
        host表示遠程計算機名或者IP地址,port表示該遠程應用的端口號。比如,要在80端口連接到y(tǒng)ahoo.com,你需要構(gòu)造下面的socket:

        new Socket("yahoo.com", 80);
        一旦你成功創(chuàng)建了一個Socket類的實例,就可以使用它來發(fā)送和接受字節(jié)流了。 要發(fā)送字節(jié)流,必須首先調(diào)用Socket類的getOutputStream 方法來獲得一個java.io.OutputStream對象。要發(fā)送一個文本到遠程應用程序,經(jīng)常要構(gòu)造一個從OutputStream對象返回的java.io.PrintWriter對象。要接收連接另一端的字節(jié)流,要調(diào)用Socket類的getInputStream方法,該方法是從 java.io.InputStream返回的。

        下面的程序段創(chuàng)建了一個socket,和本地HTTP服務器(127.0.0.1代表本地)進行通訊,發(fā)送一個HTTP請求,然后從服務器接收一個響應。它創(chuàng)建了一個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();

        要從服務器得到一個確切的響應,你需要發(fā)送一個遵循HTTP協(xié)議規(guī)則的HTTP請求。如果你閱讀了上面的那段"超文本傳輸協(xié)議(HTTP)" ,那么你就應該能夠理解剛才上面建立socket的代碼。

      分享:基于Jave的Web服務工作機制4
      在下面的段落中,讓我們來看看這三個類吧。   HttpServer 類   HttpServer類表示一個web服務器,且在公共靜態(tài)目錄WEB_ROOT及它的子目錄中能為找到的那些靜態(tài)資源

      來源:模板無憂//所屬分類:JSP教程/更新時間:2008-08-22
      相關JSP教程