2013-01-17 28 views
0

只要有關於Java的Servlet的幾個問題:Java servlet爲將數據發送到瀏覽器

1)當瀏覽器請求一個servlet首次發生什麼?

2)是在response.setContentType(文本,HTML)發送到瀏覽器的第一個指令?

已經在網上搜索答案,但不能肯定。

感謝

+1

讀頭首先Servlet和JSP。所有這些概念都解釋清楚,特別是對於初學者來說,它的好書 –

回答

3

沒有,送的第一件事情是HTTP版本:)

HTTP/1.1 200 OK 
    Date: Thu, 17 Jan 2013 21:31:11 GMT 
    Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux) 
    Last-Modified: Wed, 01 Jan 2013 21:11:25 GMT 
    Content-Type: text/html; charset=UTF-8 

    <HTML>website contents 
    here</HTML> 

內容之前的最後一行是你所談論的內容類型。這些標題可能以不同的順序出現,通常有更多。他們的順序沒有嚴格定義,也許內容類型會在日期之前發生。然而,HTTP版本號和響應代碼(在我的例子中爲200-)始終排在第一位。詳細瞭解HTTP字段here

+0

嗨,感謝您的回答,我只是想知道您是否可能知道servlet中空指針異常的典型原因是什麼? – user1344192

+1

@ user1344192一樣Java程序,提領一空。 (沒有典型的根本原因,因爲它取決於整個應用程序中的數據流。)啓動調試器,讓它在發生異常的行之前中斷,然後檢查其中的表達式以查看哪一個爲null 。 – millimoose

1

在問候你的問題2):

的Servlet真的不發送「指令」,以瀏覽器,他們構建以某種方式響應。他們可能(但可能不會)立即發送標題,或者當您嘗試首次寫入響應正文時,發送標題時,填充某個內部緩衝區時,或者它們可能會緩衝所有整個響應直到你完成。頭文件已被髮送出去的意思是響應已被「提交」,並且雖然您可以確定這是否出現在給定的響應中,但您無法真正阻止它從API發生。 (我試圖尋找在碼頭6的實施,看看會發生什麼,但代碼是什麼,但簡單,這似乎意味着容器的實現有一定的迴旋餘地在這裏。)

而且,當請求第一個servlet時間,servlet可能由容器實例化。 (除非那是因爲你在web.xml設置<load-on-startup>1</load-on-startup>,或者也許是因爲容器選擇這樣做之前實例化的 - 我不知道,如果實現允許這樣做)

相關問題