同時設置錯誤信息和身體我想寫一個servlet將返回像這樣的HTTP響應:從servlet的
HTTP/1.1 500 <short custom message>
Content-Length: ...
<longer custom message>
的原因是,我希望有一個編程客戶端,以便能夠處理響應消息採取特定的迴應,但我也想用更長的解釋填寫響應主體,以便使用瀏覽器很容易。
現在,HttpServletResponse有一個sendError(int,String)方法,它允許我指定錯誤代碼和消息。 javadocs只是說這個消息會嵌入到某種html頁面中,但是沒有關於設置http響應消息的信息。調用這個方法後,你不能寫任何其他的東西給響應。在我的測試中(使用jetty),該消息既用於http響應,也用於html body,這對我來說很好,除了我想指定兩個不同的字符串並且我不認爲http響應的設置消息通過不同的實現來保證。
還有一個你可以用任何代碼調用的setStatus(int)方法,然後你可以編寫你自己的html主體。這很接近,除了你不能指定http響應消息。
最後,有一個setStatus(int,String)方法實際上完全符合我的要求,但由於某種不明確性而不推薦使用。我假設一些servlet容器正在將消息寫入響應主體並關閉響應。
除了使用已棄用的方法,我假設我在這裏搞砸了,但我很好奇,如果其他人知道任何技巧?
謝謝,這是一個很好的觀點,可能會幫助大多數人解決這個問題:)我碰巧在沒有整個網絡應用程序設置的情況下使用嵌入式碼頭:這是一個完全獨立的servlet。我至少可以查看是否可以用代碼設置錯誤頁面,但我可能會確定編程調用者只是在主體中查看細節。 – 2010-10-07 21:13:27
只是想提一下我碰到的一個警告。如果嘗試使用html頁面而不是jsp,服務器將不會發送正確的狀態碼,儘管會顯示錯誤頁面內容。 – Asa 2012-05-14 06:34:34