top
Loading...
JSP高級編程2.5
C a c h e - C o n t r o l 指指定任何緩存系統對文檔的操作。最常用的值有: n o - c a c h e(表明此文檔不需緩存),
n o - s t o r e(表明此文檔不必緩存,甚至不要保存在代理服務器中,通常是敏感內容),
m a x - a g e = s e c o n d s(表明文檔到過時的時間長度)。這個頭從H T T P 1 . 1開始引入
P r a g m a 指H T T P 1 . 0中的等價頭是C a c h e - c o n t r o l,并且只有一個可能的值n o - c a c h e
C o n n e c t i o n 指用于表明服務器是否愿意為客戶維持持續連接。如果愿意,它的值設為k e e p - a l i v e;
否則設為c l o s e。大多數的服務器代表它們的s e r v l e t處理這個頭,當s e r v l e t設置C o n t e n t -
L e n g t h頭時,服務器就自動將C o n n e c t i o n的值設為k e e p - a l i v e
R e t r y - A f t e r 指指定服務器可再次處理請求的時間,與S C _ S E RV I C E _ U N AVA I L A B L E狀態碼一起使
用。它的值要么是代表時間(秒)的整數,要么是代表實際時間的日期子串。
E x p i r e s 指指定何時文檔可能改變,或它的信息將變成非法。它也意味著,在這個時間之前文檔
不可能變化
L o c a t i o n 指指定文檔的新路徑,通常與S C _ C R E ATED, SC_MOVED_PREMANENTLY 和
S C _ M O V E D _ T E M P O R A R I LY等狀態碼一起使用。它的值必須是完整的U R L(包含
"h t t p:/ /")
W W W- A u t h e n t i c a t e 指指定由訪問請求URL 的客戶要求的認證體系和認證范圍。與S C _ U N AT H O R I Z E D狀
態碼一起使用
C o n t e n t - E n c o d i n g 指指定用于編碼響應體的體系。可能的值有: g z i p(或x - g z i p)、c o m p r e s s(或x -
c o m p r e s s)。多編碼體系應按應用于數據的使用順序用逗號隔開
(1) 設定H T T P頭
H t t p S e r v l e t R e s p o n s e類提供了一系列的方法,幫助s e r v l e t設置H T T P響應頭信息。可使用
s e t H e a d e r()方法設置頭值:
public void HttpServletResponse.setHeader(String name , String value)
這個方法將指定頭的值設置為S t r i n g。這個頭名稱是不變的,對所有的方法都一樣。如果頭
的值已經設定,新值將覆蓋前一值。頭的所有類型都可通過這個方法來設定。
如果需要為頭值定義一個日期戳,可使用s e t D a t e H e a d e r()方法:
public void HttpServletResponse.setDateHeader(String name , long date)
這個方法把指定名稱的頭值設定為特定的日期和時間,并接收日期的l o n g類型值(表示自
GMT 1970,1,1,0:0:0起的毫秒數)。如果這個頭已經設置過,新值將覆蓋舊值。
最后,可以用s e t I n t H e a d e r()為頭指定一個整型值:
public void HttpServletResponse.setIntHeader(String name , int value)
這個方法將頭的值設定為整型,如果已經設置過,則新值覆蓋舊值。
c o n t a i n s H e a d e r()方法提供了一種檢查頭是否存在的途徑:
public boolean HttpServletResponse.containsHeader(String name)
如果頭已被設置,這個方法返回t r u e,否則返回f a l s e。
另外, H T M L 3 . 2規范中,有另一種設置頭值的方法:在H T M L頁中使用內嵌的< M E TA
H T T P - E Q U I V >標簽。
<META HTTP-EQUIV="name" CONTENT="value">
這個標簽必須作為H T M L頁的< H E A D >組成部分發送。這個技術對s e r v l e t沒什么用,它主要
第二章預備知識49

用于靜態文檔,它們不必訪問自己的頭信息。
(2) 重定向請求
s e r v l e t使用狀態碼和頭信息的另一個用途是重定向請求。這是通過給客戶端發送另一個U R L
指示來實現的。重定向通常用在:當文檔移動時(給客戶端發送新的路徑),負載平衡(一個
U R L文檔可能分布在幾個不同的機器上),簡單的隨機文檔(隨機地選擇目標路徑)。
真正的重定向發生在以下兩行:
res.setStatus(res.SC_MOVED_TEMPORARILY);
res.setHeader("Location", site);
第一行設置狀態碼,表明需要重定向,第二行給出新的位置。為確保它們正常工作,必須
在發送任何輸出之前調用這些方法。記住, H T T P協議在發送內容體之前發送狀態碼和頭信息。
新站點的位置必須以絕對的U R L給出(例如,h t t p:/ / s e r v e r:p o r t / p a t h / f i l e . h t m l),否則,客戶就
難以找到。
用s e n d R e d i r e c t()方法能很方便地將這兩行簡化為一行:
public void HttpServletResponse.sendRedirect(String location) throws
IOException
這個方法重定向響應信息到新的位置,自動地設置狀態碼和L o c a t i o n的頭信息,這兩行就變成:
res.sendRedirect(site);
(3) 客戶牽引
客戶牽引與重定向類似,主要的區別在于:瀏覽器一直顯示第一頁的內容,并且在接收和
顯示第二頁之前等待一個指定的時間間隔。它之所以叫客戶牽引,是因為由客戶端拖曳下一頁
的內容。
這有什么用呢?首先,可以在第二頁之前,由第一頁的內容告訴客戶請求的內容已經
移動;其

北斗有巢氏 有巢氏北斗