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

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

      推薦:基于Jave的Web服務工作機制6
      parseUri 方法從請求行那里得到URI。Listing 1.3 展示了parseUri 方法的用途。 parseUri 減縮請求中的第一個和第二個空格來獲得URI。   Listing 1.3. The Request cl

      input = socket.getInputStream();
        output = socket.getOutputStream();
      await于是就創建一個Request對象并調用它的 parse 方法來解析原始的HTTP請求信息。

        // create Request object and parse
        Request request = new Request(input);
        request.parse();

        接下來,await 方法創建了一個Response 對象,使用setRequest方法并調用它的sendStaticResource 方法。

        // create Response object
        Response response = new Response(output);
        response.setRequest(request);
        response.sendStaticResource();

        最后,await關閉該Socket。調用Request的getUri方法來檢查HTTP請求的URI是否是一個shutdown命令。如果是,shutdown變量被設置為true,程序退出while循環。

        // Close the socket
        socket.close();
        //check if the previous URI is a shutdown command
        shutdown = request.getUri().equals(SHUTDOWN_COMMAND);

        Request類

        Request類代表一個HTTP請求。Socket處理客戶端的通訊,將返回一個InputStream對象,通過傳遞該對象,可以構造一個Request類的實例。通過調用InputStream 對象的read方法來獲得這個HTTP請求的原始數據(raw data)。

        Request 有兩個公共方法:parse 和 getUri。parse方法解釋HTTP請求的原始數據。它不做很多事情----它能夠利用的唯一信息只是HTTP請求的URI ,這個URI是從私有方法 parseUri.得到的。parseUri 方法保存URI 到uri 變量中,然后調用公共方法getUri來返回一個HTTP請求的URI。

        為了理解parse 和 parseUri 方法是如何工作的,需要知道HTTP請求的內部結構。這個結構是在RFC2616文檔中定義的。

        一個HTTP請求包含三個部分:

        請求行(Request line)
        請求包頭(Headers)
        消息體(Message body)

        現在,我們僅僅只對HTTP請求的第一部分請求行(Request line)感興趣。一個請求行由方法標記開始,后面根請求的URI和協議版本,最后由CRLF字符結束。請求行中的元素被空格字符分開。比如,使用GET方法請求的index.html文件的請求行如下:

        GET /index.html HTTP/1.1 //這是一個請求行
        方法parse從socket的InputStream 中讀取整個字節流,該字節流是 Request 對象傳遞進來的,然后parse將這些字節流存儲在一個緩沖區里, 在緩沖區中組裝一個稱為request的StringBuffer對象。

        下面的Listing 1.2.顯示了parse方法的用法:

        Listing 1.2. The Request class' parse method

        public void parse() {
        // Read a set of characters from the socket
        StringBuffer request = new StringBuffer(2048);
        int i;
        byte[] buffer = new byte[2048];

        try {
          i = input.read(buffer);
        }
        catch (IOException e) {
          e.printStackTrace();
          i = -1;
        }

        for (int j=0; j    request.append((char) buffer[j]);
        }

        System.out.print(request.toString());
        uri = parseUri(request.toString());
        }

      分享:基于Jave的Web服務工作機制7
      sendStaticResource 方法是非常簡單的。它首先傳遞父路徑和子路徑給File類的構造器,從而對java.io.File類進行了實例化。   File file = new File(HttpServer.WEB_RO

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