亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

Servlet&jsp基礎:第二部分

2019-11-14 23:00:16
字體:
來源:轉載
供稿:網友
Servlet&jsp基礎:第二部分聲明:原創作品,轉載時請注明文章來自SAP師太技術博客( 博/客/園www.cnblogs.com):www.49028c.com/jiangzhengjun,并以超鏈接形式標明文章原始出處,否則將追究法律責任!原文鏈接:http://www.49028c.com/jiangzhengjun/p/4289271.html

HttpServletResponse. 20

產生響應狀態行... 20

HTTP狀態常量... 20

setStatus(int sc)20

sendError21

構建響應消息頭... 21

addHeader與setHeader21

addIntHeader與setIntHeader21

addDateHeader與setDateHeader22

setContentLength. 22

setContentType. 22

setCharacterEncoding. 22

setLocale. 23

containsHeader23

響應頭的應用... 23

讓瀏覽器定時刷新網頁或跳轉到其他頁面... 23

禁止瀏覽器緩存當前文檔內容... 24

使用<meta>標簽模擬響應消息頭... 24

創建響應正文... 24

getOutputStream與getWriter方法... 24

輸出緩沖區... 25

文件下載... 27

<img>動態圖像... 28

請求轉發與請求重定向... 30

RequestDispatcher接口... 30

用include方法實現資源包含... 32

輸出靜態內容時默認Servlet所采用的流分析... 33

用forward方法實現請求轉發... 34

RequestDispatcher.forward方式應用細節... 35

用sendRedirect方法實現請求重定向... 38

請求重定向(sendRedirect)與請求轉發(forward)的區別... 39

HttpServletResponse

image007

產生響應狀態行

HTTP響應消息分為三們部分:狀態行、響應消息頭、消息實體。

HTTP狀態常量

HttpServletResponse定義了若干與HTTP響應狀態碼對應的常量,以SC(Status Code)開頭。

setStatus(int sc)

響應狀態行:HTTP版本+狀態代碼+提示信息

HTTP/1.1 200 OK

用于設置HTTP響應消息的狀態碼,并生成響應狀態行。正常情況下的響應碼為200,Web服務器默認自動

產生這種正常情況下的響應狀態行,所以,通常情況下的Servlet不需要調用該方法來指定狀態代碼和產生響應狀態行。只有在HTTP響應消息中使用特殊的狀態碼時,才需要調用這個方法

sendError

sendError(int sc)

sendError(int sc, java.lang.String msg)

用于發送表示錯誤信息的狀態碼(如404,找不到資源)。msg用于提示說有出錯的原因,該文本信息將出現在發送給客戶端的正文本內容中,注,該消息不是用來替換HTTP響應狀態行中提示信息的,它只是出現在實體部分。

response.sendError(405,"xxxxx"); 返回的響應狀態行如下:

HTTP/1.1 405Method Not Allowed

構建響應消息頭addHeader與setHeader

http://www.ietf.org/rfc/rfc2047.txt

addHeader(java.lang.String name, java.lang.String value)

setHeader(java.lang.String name, java.lang.String value)

如果已經設置過同名的響應并沒有,setHeader方法將用新的設置值取代原來的設置值,而addHeader方法則是增加一個同名的響應頭。HTTP響應消息中允許同一名稱的頭字段出現多次。

addIntHeader與setIntHeader

addIntHeader(java.lang.String name, int value)

setIntHeader(java.lang.String name, int value)

與addHeader與setHeader不同的是它們傳進的值可以直接是一個整數值。一般很少用這兩個方法,使用前面兩個完全一樣。

response.setHeader("Refresh", "2"); 響應頭加上了Refresh頭如下:

Refresh: 2

注,頭的值一般不會使用雙引號引起來的。

addDateHeader與setDateHeader

addDateHeader(java.lang.String name, long date)

setDateHeader(java.lang.String name, long date)

這兩個方法專門用于設置包含日期值的響應頭的方法。HTTP響應頭中的日期通常都是GMT格式。它們避免了將毫秒數轉換成GMT格式時間的麻煩。

setContentLength

setContentLength(int len)

setContentLength方法用于設置響應消息的實體內容的大小,單位為字節。對于HTTP協議來說,這個方法就是設置Content-Length響應頭字段的值。因為瀏覽器與Web服務器之間使用持久(Keep-alive的HTTP連接,如果Web服務器沒有采用chunked傳輸編碼方式,那么它必須在每個應答中發送一個Content-Length的響應頭來表示各個實體內容的長度,以便客戶端能夠分辨出上一個響應內容的結束位置。一般來說,Setvlet程序不必調用setContentLength方法來設置Content-Length頭字段,因為Servlet引擎在向客戶端實際輸出響應內容時,它可以自動設置Content-Length頭字段或采用chunked傳輸編碼方式。

setContentType

設置響應實體的MIME類型,即對Content-Type頭的設置。如響應的實體為jpeg圖片,則需要將響應內容的類型設置為“image/jpeg”;如果是xml,則要設置為“text/xml”。

頁網的類型通常是“text/html”,所以如果以是Servlet程序的方式輸出網頁內容,則需要顯試地調用setContentType方法來指定,否則響應頭中不存在Content-Type并沒有,那么瀏覽器會將內容以“text/plain”內型來解釋,即以原文本的形式展示。當然如果請求的資源不是Servlet,比如是xx.html,則Web容器會根據你請求的資源的文件的擴展外來在conf/web.xml找相應的已配置的MIME類型,然后自動加上這個頭信息,并設置成相應的MIME類型。

在MIME類型后面還可以指定響應內容所使用的字符集類型,如,“text/html; charset=GB2312”,如果沒有指定,在Tomcat5.x產生的響應頭的MIME類型后默認為ISO8859-1的字符集編碼,而Tocmat4.x將不會自動加上。

注,一般charset全小寫,但有的廠商是charSet

setCharacterEncoding

setCharacterEncoding是在2.4規范中新增的方法。用于設置輸出內容的MIME聲明中的字符集編碼,對于HTTP來說,即設置Content-Type頭字段中的字符集編碼部分。

注,如果沒有設置Content-Type頭字段,該方法的設置的編碼不會出現在響應頭中(因為實體內容的編碼方式只能存放在在Content-Type的后部分),但是它的設置結果仍然決定了輸出內容的編碼方式(即直接使用out內置對象輸出字符串時會采用該方法設置的編碼方式,當然如果使用的是response.getOutputStream時,就談不上編碼方式了,因為OutputStream輸出不涉及到流)。另外,該方法的比setContentType和setLocale方法的優先權高,它的設置會覆蓋這兩個方法所設置的字符集編碼。

setLocale

setLocale(java.util.Locale loc)

用于設置響應消息的本地化信息,對HTTP來說,它將設置Content-Language響應頭和Content-Type頭中的字符集編碼部分。如果沒有設置Content-Type頭,該方法設置的字符集不會出現在響應頭中(因為實體內容的編碼方式只能存放在在Content-Type的后部分),但是它的設置仍然決定了輸出內容的編碼方式(即直接使用out內置對象輸出字符串時會采用該方法設置的編碼方式,當然如果使用的是response.getOutputStream時,就談不上編碼方式了,因為OutputStream輸出不涉及到流)。

注,如果調用了setCharacterEncoding或setContentType方法已指定了響應內容的字符集,則該方法將不再起效。

由于Local對象中只包含了語言和國家的地區信息,并沒有包含字符集編碼的信息,所以需要在web.xml中來配置:

<locale-encoding-mapping-list>

<locale-encoding-mapping>

<locale>zh_CN</locale>

<encoding>GB2312</encoding>

</locale-encoding-mapping>

</locale-encoding-mapping-list>

containsHeader

boolean containsHeader(java.lang.String name)

containsHeader用于檢查某個名稱的頭是否已經被設置

響應頭的應用讓瀏覽器定時刷新網頁或跳轉到其他頁面

// response.setHeader("Refresh", "2");

response.setHeader("Refresh", "2;URL=ServletContextTest");

// response.setHeader("Refresh","2;URL=http://localhost:8080/myapp/ServletContextTest");

禁止瀏覽器緩存當前文檔內容

有三個HTTP響應頭可以禁止瀏覽器緩存當前頁面:

response.setDateHeader("Expires", 0);

response.setHeader("

response.setHeader("Cache-Control","no-cache");

不是所有的瀏覽器都能完全支持上面的三個響應頭,因此最好是同時使用上面的三個響應頭,只要瀏覽器能支持其中任何一種形式,就能禁止緩存頁面。

使用<meta>標簽模擬響應消息頭

上面我們是通過response內置對象來設置響應頭的,這只能在Servlet與jsp里使用,如果編寫的是靜態的html時,我們如果要設置響應消息頭,則只能借助于html標簽<meta>的http-equiv屬性來實現。

<meta http-equiv="Expires"content="0">

<meta http-equiv="Pragma"content="no-cache">

<meta http-equiv="Cache-Control"content="no-cache">

在靜態的HTML里我們一般顯示地設置頁面的編碼方式:

<meta http-equiv="Content-Type"content="text/html; charset=GB2312">

注,如果在Servlet或Jsp頁面里使用了<meta>來設置編碼方式,而又使用也服務器端的設置方式,則以服務器方式的為準,也就是以響應頭里的Content-Type信息為準。

創建響應正文getOutputStream與getWriter方法

ServletOutputStreamgetOutputStream() throws java.io.IOException

java.io.PrintWritergetWriter() throws java.io.IOException

ServletOutputStream為OutputStream的子類。

getOutputStream返回的是字節流,不涉及到編碼

getWriter返回的是字符流,涉及編碼方式

這兩個方法互相排斥,調用了其中任何一個方法后,就不能再調用另一方法。在Servlet里寫以下兩行:

Word-spacing: 0px; text-transform: none; word-break: normal; margin: 0cm 0cm 0pt; letter-spacing: normal; line-heig

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本不卡高字幕在线2019| 青青草原一区二区| 全色精品综合影院| 91麻豆国产语对白在线观看| 青青a在线精品免费观看| 欧美极品少妇全裸体| 91精品国产综合久久男男| 久久久久久久999精品视频| 日韩av影院在线观看| 欧美成人一区二区三区电影| 91手机视频在线观看| 国产精品视频播放| 性色av香蕉一区二区| 国产成人免费91av在线| 亚洲第一区在线观看| 国产视频精品xxxx| 亚洲国产日韩一区| 国产欧美日韩免费看aⅴ视频| 国产一区二区三区在线观看网站| 国产精品入口日韩视频大尺度| 中文字幕视频在线免费欧美日韩综合在线看| 国内精品久久久久久中文字幕| 成人黄色av网站| 2019中文字幕在线免费观看| 一夜七次郎国产精品亚洲| …久久精品99久久香蕉国产| 国产精品久久久91| 在线亚洲欧美视频| 久久精视频免费在线久久完整在线看| 日韩精品在线视频美女| 亚洲影院污污.| 伊人伊成久久人综合网小说| 国产成人免费av电影| 55夜色66夜色国产精品视频| 亚洲精品www| 久久99久久亚洲国产| 欧美精品久久久久| 日韩美女免费观看| 国产不卡精品视男人的天堂| 亚洲精品电影在线| 日本午夜在线亚洲.国产| 欧美一区二粉嫩精品国产一线天| 91系列在线播放| 亚洲第一级黄色片| 亚洲久久久久久久久久久| 亚洲有声小说3d| 亚洲一区二区中文字幕| 久久成人综合视频| 亚洲最大在线视频| 欧美性猛交xxxx乱大交3| 视频一区视频二区国产精品| 亚洲欧美日韩在线一区| 中文字幕少妇一区二区三区| 96pao国产成视频永久免费| 国产精品综合网站| 久久男人资源视频| 一区二区日韩精品| 91久久久在线| 秋霞午夜一区二区| 国模吧一区二区三区| 日韩中文在线观看| 日韩欧美精品免费在线| 精品一区二区电影| 日韩av网站大全| 欧美激情videoshd| 一个色综合导航| 欧美美女15p| 奇米一区二区三区四区久久| 国产精品1234| 国产精品久久久久久久久免费看| 欧美高清视频在线| 色www亚洲国产张柏芝| 亚洲欧美日韩网| 日韩成人中文电影| 精品国产一区二区三区久久久狼| 亚洲精品suv精品一区二区| 亚洲自拍av在线| 欧美怡春院一区二区三区| 亚洲桃花岛网站| 久久91亚洲人成电影网站| 欧美成人免费大片| 国产精品中文在线| 久久久久国产一区二区三区| 97国产精品免费视频| 亚洲成人av资源网| 成人国产精品久久久久久亚洲| 国产成人精品一区二区在线| 亚洲区中文字幕| 欧美日韩中文字幕在线| 91在线观看免费网站| 久久精品国产成人精品| 中文字幕在线观看亚洲| 久久影院免费观看| 91色精品视频在线| 亚洲欧美日韩高清| 国产在线播放不卡| 欧美在线一级视频| 日本老师69xxx| 亚洲精品乱码久久久久久按摩观| 精品一区电影国产| 欧美xxxx综合视频| 欧美日韩一区二区在线| 亚洲第一区中文字幕| 午夜精品久久久久久久99热浪潮| 69国产精品成人在线播放| 亚洲无av在线中文字幕| 亚洲一区二区久久久久久| 色一区av在线| 久久人人爽人人爽人人片av高请| 亚洲成人精品久久| 欧美午夜精品伦理| 中文字幕亚洲一区二区三区五十路| 九九热精品视频| 亚洲精品www| 国产视频久久久久久久| 国产成人在线播放| yw.139尤物在线精品视频| 黄色精品一区二区| 成人免费自拍视频| 日韩大胆人体377p| 性亚洲最疯狂xxxx高清| 久久久久久这里只有精品| 深夜福利国产精品| 777精品视频| 国产视频精品一区二区三区| www.色综合| 自拍亚洲一区欧美另类| 欧美极品美女视频网站在线观看免费| 热久久免费视频精品| 九九精品视频在线| 日韩av快播网址| 国模精品视频一区二区三区| 亚洲偷欧美偷国内偷| 亚洲精品一区二区网址| 91精品国产综合久久男男| 国产精品v日韩精品| 色综合久综合久久综合久鬼88| 黄网站色欧美视频| 欧美高清视频免费观看| 欧美日韩一二三四五区| 久久久久久九九九| 国产一区香蕉久久| 国产精品青草久久久久福利99| 97视频在线观看播放| 精品少妇v888av| 91网站免费观看| 久久精品久久久久久| 88xx成人精品| 欧美日韩免费区域视频在线观看| 日韩精品在线观看一区二区| 欧美在线国产精品| 久久久久久有精品国产| 国产精品成av人在线视午夜片| 亚洲香蕉伊综合在人在线视看| 亚洲成人精品av| 91黑丝在线观看| 欧美性猛交xxxx免费看漫画| 色樱桃影院亚洲精品影院| 国产精品黄视频| 日韩欧美黄色动漫| 午夜精品一区二区三区在线播放| 久久精品国产69国产精品亚洲| 亚洲毛茸茸少妇高潮呻吟| 日韩中文字幕精品|