只要有關於Java的Servlet的幾個問題:Java servlet爲將數據發送到瀏覽器
1)當瀏覽器請求一個servlet首次發生什麼?
2)是在response.setContentType(文本,HTML)發送到瀏覽器的第一個指令?
已經在網上搜索答案,但不能肯定。
感謝
只要有關於Java的Servlet的幾個問題:Java servlet爲將數據發送到瀏覽器
1)當瀏覽器請求一個servlet首次發生什麼?
2)是在response.setContentType(文本,HTML)發送到瀏覽器的第一個指令?
已經在網上搜索答案,但不能肯定。
感謝
沒有,送的第一件事情是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。
嗨,感謝您的回答,我只是想知道您是否可能知道servlet中空指針異常的典型原因是什麼? – user1344192
@ user1344192一樣Java程序,提領一空。 (沒有典型的根本原因,因爲它取決於整個應用程序中的數據流。)啓動調試器,讓它在發生異常的行之前中斷,然後檢查其中的表達式以查看哪一個爲null 。 – millimoose
在問候你的問題2):
的Servlet真的不發送「指令」,以瀏覽器,他們構建以某種方式響應。他們可能(但可能不會)立即發送標題,或者當您嘗試首次寫入響應正文時,發送標題時,填充某個內部緩衝區時,或者它們可能會緩衝所有整個響應直到你完成。頭文件已被髮送出去的意思是響應已被「提交」,並且雖然您可以確定這是否出現在給定的響應中,但您無法真正阻止它從API發生。 (我試圖尋找在碼頭6的實施,看看會發生什麼,但代碼是什麼,但簡單,這似乎意味着容器的實現有一定的迴旋餘地在這裏。)
而且,當請求第一個servlet時間,servlet可能由容器實例化。 (除非那是因爲你在web.xml
設置<load-on-startup>1</load-on-startup>
,或者也許是因爲容器選擇這樣做之前實例化的 - 我不知道,如果實現允許這樣做)
讀頭首先Servlet和JSP。所有這些概念都解釋清楚,特別是對於初學者來說,它的好書 –