精品熟女碰碰人人a久久,多姿,欧美欧美a v日韩中文字幕,日本福利片秋霞国产午夜,欧美成人禁片在线观看

JSP 服務(wù)器響應(yīng)

jsp 服務(wù)器響應(yīng)

response響應(yīng)對(duì)象主要將jsp容器處理后的結(jié)果傳回到客戶端。可以通過response變量設(shè)置http的狀態(tài)和向客戶端發(fā)送數(shù)據(jù),如cookie、http文件頭信息等。

一個(gè)典型的響應(yīng)看起來就像下面這樣:

http/1.1 200 ok
content-type: text/html
header2: ...
...
headern: ...
  (空行)
<!doctype ...>
<html>
<head>...</head>
<body>
...
</body>
</html>

狀態(tài)行包含http版本信息,比如http/1.1,一個(gè)狀態(tài)碼,比如200,還有一個(gè)非常短的信息對(duì)應(yīng)著狀態(tài)碼,比如ok。

下表摘要出了http1.1響應(yīng)頭中最有用的部分,在網(wǎng)絡(luò)編程中您將會(huì)經(jīng)常見到它們:

響應(yīng)頭 描述
allow 指定服務(wù)器支持的request方法(get,post等等)
cache-control 指定響應(yīng)文檔能夠被安全緩存的情況。通常取值為 public,private 或no-cache 等等。 public意味著文檔可緩存,private意味著文檔只為單用戶服務(wù)并且只能使用私有緩存。no-cache 意味著文檔不被緩存。
connection 命令瀏覽器是否要使用持久的http連接。close值 命令瀏覽器不使用持久http連接,而keep-alive 意味著使用持久化連接。
content-disposition 讓瀏覽器要求用戶將響應(yīng)以給定的名稱存儲(chǔ)在磁盤中
content-encoding 指定傳輸時(shí)頁面的編碼規(guī)則
content-language 表述文檔所使用的語言,比如en, en-us,,ru等等
content-length 表明響應(yīng)的字節(jié)數(shù)。只有在瀏覽器使用持久化 (keep-alive) http 連接時(shí)才有用
content-type 表明文檔使用的mime類型
expires 指明啥時(shí)候過期并從緩存中移除
last-modified 指明文檔最后修改時(shí)間。客戶端可以 緩存文檔并且在后續(xù)的請(qǐng)求中提供一個(gè) if-modified-since請(qǐng)求頭
location 在300秒內(nèi),包含所有的有一個(gè)狀態(tài)碼的響應(yīng)地址,瀏覽器會(huì)自動(dòng)重連然后檢索新文檔
refresh 指明瀏覽器每隔多久請(qǐng)求更新一次頁面。
retry-after 與503 (service unavailable)一起使用來告訴用戶多久后請(qǐng)求將會(huì)得到響應(yīng)
set-cookie 指明當(dāng)前頁面對(duì)應(yīng)的cookie

httpservletresponse類

response 對(duì)象是 javax.servlet.http.httpservletresponse 類的一個(gè)實(shí)例。就像服務(wù)器會(huì)創(chuàng)建request對(duì)象一樣,它也會(huì)創(chuàng)建一個(gè)客戶端響應(yīng)。

response對(duì)象定義了處理創(chuàng)建http信息頭的接口。通過使用這個(gè)對(duì)象,開發(fā)者們可以添加新的cookie或時(shí)間戳,還有http狀態(tài)碼等等。

下表列出了用來設(shè)置http響應(yīng)頭的方法,這些方法由httpservletresponse 類提供:

s.n. 方法 & 描述
1 string encoderedirecturl(string url)

對(duì)sendredirect()方法使用的url進(jìn)行編碼
2 string encodeurl(string url)

將url編碼,回傳包含session id的url
3 boolean containsheader(string name)

返回指定的響應(yīng)頭是否存在
4 boolean iscommitted()

返回響應(yīng)是否已經(jīng)提交到客戶端
5 void addcookie(cookie cookie)

添加指定的cookie至響應(yīng)中
6 void adddateheader(string name, long date)

添加指定名稱的響應(yīng)頭和日期值
7 void addheader(string name, string value)

添加指定名稱的響應(yīng)頭和值
8 void addintheader(string name, int value)

添加指定名稱的響應(yīng)頭和int值
9 void flushbuffer()

將任何緩存中的內(nèi)容寫入客戶端
10 void reset()

清除任何緩存中的任何數(shù)據(jù),包括狀態(tài)碼和各種響應(yīng)頭
11 void resetbuffer()

清除基本的緩存數(shù)據(jù),不包括響應(yīng)頭和狀態(tài)碼
12 void senderror(int sc)

使用指定的狀態(tài)碼向客戶端發(fā)送一個(gè)出錯(cuò)響應(yīng),然后清除緩存
13 void senderror(int sc, string msg)

使用指定的狀態(tài)碼和消息向客戶端發(fā)送一個(gè)出錯(cuò)響應(yīng)
14 void sendredirect(string location)

使用指定的url向客戶端發(fā)送一個(gè)臨時(shí)的間接響應(yīng)
15 void setbuffersize(int size)

設(shè)置響應(yīng)體的緩存區(qū)大小
16 void setcharacterencoding(string charset)

指定響應(yīng)的編碼集(mime字符集),例如utf-8
17 void setcontentlength(int len)

指定http servlets中響應(yīng)的內(nèi)容的長度,此方法用來設(shè)置 http content-length 信息頭
18 void setcontenttype(string type)

設(shè)置響應(yīng)的內(nèi)容的類型,如果響應(yīng)還未被提交的話
19 void setdateheader(string name, long date)

使用指定名稱和日期設(shè)置響應(yīng)頭的名稱和日期
20 void setheader(string name, string value)

使用指定名稱和值設(shè)置響應(yīng)頭的名稱和內(nèi)容
21 void setintheader(string name, int value)

指定 int 類型的值到 name 標(biāo)頭
22 void setlocale(locale loc)

設(shè)置響應(yīng)的語言環(huán)境,如果響應(yīng)尚未被提交的話
23 void setstatus(int sc)

設(shè)置響應(yīng)的狀態(tài)碼

http響應(yīng)頭程序示例

接下來的例子使用setintheader()方法和setrefreshheader()方法來模擬一個(gè)數(shù)字時(shí)鐘:

<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>
<%@ page import="java.io.*,java.util.*" %>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>碩編程(yapf.com)</title>
</head>
<body>
<h2>自動(dòng)刷新實(shí)例</h2>
<%
   // 設(shè)置每隔5秒自動(dòng)刷新
   response.setintheader("refresh", 5);
   // 獲取當(dāng)前時(shí)間
   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("當(dāng)前時(shí)間: " + ct + "\n");
%>
</body>
</html>

將以上代碼保存為main.jsp,然后通過瀏覽器訪問它。它將會(huì)每隔5秒顯示一下系統(tǒng)當(dāng)前時(shí)間。

我們可以看下以下 gif 演示圖:

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

相關(guān)文章