2013-07-31 235 views
0

我是新來的servelts編程。就在今天,我開始學習它。我有點困惑與Servlets混淆

HttpServletRequest。它是寫在一個教程中,類doGET()有一些方法,如形式「查詢」數據,HTTP請求標頭和客戶端的主機名。

就我所知,HttpServletRequest就像一個協議,允許SERVER從CLIENT端接收請求到 。我的問題是,爲什麼客戶端在
有趣,知道像客戶端的主機名或HTTP請求標頭。

如果你發現這個問題很愚蠢,請不要投我的問題,因爲我不想失去這個帳戶與堆棧溢出。

+0

僅供參考,在問題被拒絕時您不會失去您的帳戶;-) – Uooo

+0

因爲那個,我丟失了2個 –

+0

您是否知道[HTTP協議]的基礎知識(http://de.wikipedia.org /維基/ HTTP)?看起來問題更多的是缺乏HTTP協議而不是servlet的知識。 – Uooo

回答

0

首先HttpServletRequest是一個由您的Servlet容器實現的接口。 HttpServlet是一個便利的類,您的Servlet可以擴展並獲取所有HTTP特定的方法。 doGet()是處理GET請求的方法之一。

HttpServletRequest的是一樣的東西的協議允許服務器從客戶端接收側

HTTPrequest-response協議的請求。您的容器根據Web服務器收到的實際請求形成一個HttpServletRequest對象,並將其轉發給您的Servlet的方法service()

爲什麼客戶端在 中感興趣,知道客戶端的主機名或HTTP請求標頭。

如果您在談論Servlet,它總是在服務器端執行。因此,Servlet使用request.getHeader()等方法從客戶端發送的請求中讀取標頭。這些頭文件提供了一些有關請求(或響應)的額外信息。許多與請求相關的頭文件都由服務器本身處理。舉例來說,服務器如何限制對文檔的訪問。服務器使用HTTP標頭,而servlet不需要知道詳細信息。當服務器收到對受限頁面的請求時,它會檢查請求是否包含適當的授權標頭,其中包含有效的用戶名和密碼。如果沒有,服務器本身發出一個包含WWW-Authenticate頭的響應,告訴瀏覽器訪問資源被拒絕。當客戶端發送一個包含適當Authorization頭部的請求時,服務器授予訪問權限,並通過getRemoteUser()調用爲servlet調用對用戶名稱的訪問權限。

閱讀 HTTP Made Really EasyAn Overview of Request Headers