JSP 伺服器響應

來源:互聯網
上載者:User

標籤:style   blog   http   io   color   ar   os   使用   java   

Response響應對象主要將JSP容器處理後的結果傳回到用戶端。可以通過response變數設定HTTP的狀態和向用戶端發送資料,如Cookie、HTTP檔案頭資訊等。

一個典型的響應看起來就像下面這樣:

HTTP/1.1 200 OKContent-Type: text/htmlHeader2: ......HeaderN: ...  (Blank Line)<!doctype ...><html><head>...</head><body>...</body></html>

狀態行包含HTTP版本資訊,比如HTTP/1.1,一個狀態代碼,比如200,還有一個非常短的資訊對應著狀態代碼,比如OK。

下表摘要出了HTTP1.1回應標頭中最有用的部分,在網路編程中您將會經常見到它們:

回應標頭 描述
Allow 指定伺服器支援的request方法(GET,POST等等)
Cache-Control 指定響應文檔能夠被安全緩衝的情況。通常取值為 publicprivate 或no-cache 等等。 Public意味著文檔可緩衝,Private意味著文檔只為單使用者服務並且只能使用私人緩衝。No-cache 意味著文檔不被緩衝。
Connection 命令瀏覽器是否要使用持久的HTTP串連。close 命令瀏覽器不使用持久HTTP串連,而keep-alive 意味著使用持久化串連。
Content-Disposition 讓瀏覽器要求使用者將響應以給定的名稱儲存在磁碟中
Content-Encoding 指定傳輸時頁面的編碼規則
Content-Language 表述文檔所使用的語言,比如en, en-us,,ru等等
Content-Length 表明響應的位元組數。只有在瀏覽器使用持久化 (keep-alive) HTTP 串連時才有用
Content-Type 表明文檔使用的MIME類型
Expires 指明啥時候到期並從緩衝中移除
Last-Modified 指明文檔最後修改時間。用戶端可以 緩衝文檔並且在後續的請求中提供一個 If-Modified-Since要求標頭
Location 在300秒內,包含所有的有一個狀態代碼的響應地址,瀏覽器會自動重連然後檢索新文檔
Refresh 指明瀏覽器每隔多久請求更新一次頁面。
Retry-After 與503 (Service Unavailable)一起使用來告訴使用者多久後請求將會得到響應
Set-Cookie 指明當前頁面對應的cookie
HttpServletResponse類

response對象是javax.servlet.http.HttpServletRequest類的一個執行個體。就像伺服器會建立request對象一樣,它也會建立一個用戶端響應。

response對象定義了處理建立HTTP資訊頭的介面。通過使用這個對象,開發人員們可以添加新的cookie或時間戳記,還有HTTP狀態嗎等等。

下表列出了用來設定HTTP回應標頭的方法,這些方法由HttpServletResponse 類提供:

S.N. 方法 & 描述
1 String encodeRedirectURL(String url)

 

對sendRedirect()方法使用的URL進行編碼
2 String encodeURL(String url)

 

將URL編碼,回傳包含Session ID的URL
3 boolean containsHeader(String name)

 

返回指定的回應標頭是否存在
4 boolean isCommitted()

 

返迴響應是否已經提交到用戶端
5 void addCookie(Cookie cookie)

 

添加指定的cookie至響應中
6 void addDateHeader(String name, long date)

 

添加指定名稱的回應標頭和日期值
7 void addHeader(String name, String value)

 

添加指定名稱的回應標頭和值
8 void addIntHeader(String name, int value)

 

添加指定名稱的回應標頭和int值
9 void flushBuffer()

 

將任何緩衝中的內容寫入用戶端
10 void reset()

 

清除任何緩衝中的任何資料,包括狀態代碼和各種回應標頭
11 void resetBuffer()

 

清除基本的快取資料,不包括回應標頭和狀態代碼
12 void sendError(int sc)

 

使用指定的狀態代碼向用戶端發送一個出錯響應,然後清除緩衝
13 void sendError(int sc, String msg)

 

使用指定的狀態代碼和訊息向用戶端發送一個出錯響應
14 void sendRedirect(String location)

 

使用指定的URL向用戶端發送一個臨時的間接響應
15 void setBufferSize(int size)

 

設定響應體的緩衝區大小
16 void setCharacterEncoding(String charset)

 

指定響應的編碼集(MIME字元集),例如UTF-8
17 void setContentLength(int len)

 

指定HTTP servlets中響應的內容的長度,此方法用來設定 HTTP Content-Length 資訊頭
18 void setContentType(String type)

 

設定響應的內容的類型,如果響應還未被提交的話
19 void setDateHeader(String name, long date)

 

使用指定名稱和值設定回應標頭的名稱和內容
20 void setHeader(String name, String value)

 

使用指定名稱和值設定回應標頭的名稱和內容
21 void setIntHeader(String name, int value)

 

使用指定名稱和值設定回應標頭的名稱和內容
22 void setLocale(Locale loc)

 

設定響應的語言環境,如果響應尚未被提交的話
23 void setStatus(int sc)

 

設定響應的狀態代碼
HTTP回應標頭程式樣本

接下來的例子使用setIntHeader()方法和setRefreshHeader()方法來類比一個數字時鐘:

<%@ page import="java.io.*,java.util.*" %><html><head><title>Auto Refresh Header Example</title></head><body><center><h2>Auto Refresh Header Example</h2><%   // 設定每隔5秒自動重新整理   response.setIntHeader("Refresh", 5);   // 擷取目前時間   Calendar calendar = new GregorianCalendar();   String am_pm;   int hour = calendar.get(Calendar.HOUR);   int minute = calendar.get(Calendar.MINUTE);   int second = calendar.get(Calendar.SECOND);   if(calendar.get(Calendar.AM_PM) == 0)      am_pm = "AM";   else      am_pm = "PM";   String CT = hour+":"+ minute +":"+ second +" "+ am_pm;   out.println("Current Time is: " + CT + "\n");%></center></body></html>

 

將以上代碼儲存為main.jsp,然後通過瀏覽器訪問它。它將會每隔5秒顯示一下系統目前時間。

運行結果如下:

Auto Refresh Header ExampleCurrent Time is: 9:44:50 PM

您也可以自己動手修改以上代碼,試試使用其他的方法,將能得到更深的體會。

 

JSP 伺服器響應

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.