2014-03-05 33 views
1

我在我的主頁中有一個iframe和一個文本框(用於輸入所需的url),因此當用戶輸入所需的URL時,我會將請求的頁面加載到iframe。 我正在使用HttpServlet來處理通過doGet獲取請求。我需要區分請求的內容類型,因爲如果它是一個文件(img或腳本),我只是閱讀它並返回,但如果它是一個html頁面,我會做一些修改。 我試圖在doGet內使用request.getContentType(),但它返回null。那麼有沒有辦法做到這一點?謝謝確定doGet中請求內容的類型

回答

3

HttpServletRequest#getContentType()返回Content-Type標題的值(如果有的話)。

您需要在發送請求時指定它。你可以使用Javascript來做到這一點。

或者,但不是理想情況下,您可以使用查詢字符串參數來提示內容類型。

這對獲取請求主體的內容類型。


如果你需要指定哪些內容的響應應該有,則需要用適當的介質類型指定Accept頭。

您也可以選擇進行URL擴展匹配。例如,www.host.com/some/path.xml將返回XML。

+0

當第一個請求發送(www.example.com),我修改的所有URL(HREF,SRC,..),所以當GET是發送下載資源我的servlet將被觸發。在doGet內部,我需要知道請求資源的類型。所以最好的方法是解析doGet中的URL? – akmal

+0

@akmal你想得到請求體的內容,對吧?最好的方法是發送Content-Type頭。 –

+0

@akmal不要在GET請求的主體中發送內容。 –

0

你想知道請求的內容類型嗎,mabye你不知道你的請求是什麼請檢查你的URL。如果您的請求不包含任何數據,您可以返回空值request.getContentType。你可以在沒有請求的情況下做出迴應。馬布耶你可以通過參數確定你想要什麼樣的反應。我認爲你必須檢查響應類型來確定應用程序的行爲取決於響應類型而不是請求。簡單的GET請求只能等待響應。並根據這種反應做一些行動。

1

如果您的請求正文包含數據,request.getContentType()方法將只返回一個值。由於它是一個GET,它不包含任何主體。如果您有任何數據,它可能是URL的一部分,也可能是連接到URL的查詢字符串。在GET請求中聲明Content-type毫無意義,因此沒有要讀取的標頭。

您必須在您的請求URL中查找所需的數據。

如果它是由鏈接或圖像生成的URL,則從URL獲取名稱和擴展名。它是由腳本生成的,它可能在其他地方有該信息,如查詢字符串中的某個變量(例如?file-name=xyz&file-type=png)或附加路徑信息(例如/servlet/xyz/jpeg)。這取決於您的客戶如何請求數據。

相關問題