官术网_书友最值得收藏!

6.3 response對象

response對象用于響應客戶請求,向客戶端輸出信息。它封裝了JSP產生的響應,并發送到客戶端以響應客戶端的請求。請求的數據可以是各種數據類型,甚至是文件。response對象在JSP頁面內有效。

6.3.1 重定向網頁

使用response對象提供的sendRedirect()方法可以將網頁重定向到另一個頁面。重定向操作支持將地址重定向到不同的主機上,這一點與轉發不同。在客戶端瀏覽器上將會得到跳轉的地址,并重新發送請求鏈接。用戶可以從瀏覽器的地址欄中看到跳轉后的地址。進行重定向操作后,request中的屬性全部失效,并且開始一個新的request對象。

sendRedirect()方法的語法格式如下:

     response.sendRedirect(String path);

參數說明:

path:用于指定目標路徑,可以是相對路徑,也可以是不同主機的其他URL地址。

【例6.9】 使用sendRedirect()方法重定向網頁到login.jsp頁面(與當前網頁同級)和明日編程詞典網(與該網頁不在同一主機)的代碼如下:

注意

在JSP頁面中使用該方法時,不要再用JSP腳本代碼(包括return語句),因為重定向之后的代碼已經沒有意義了,并且還可能產生錯誤。

【例6.10】 通過sendRedirect()方法重定向頁面到用戶登錄頁面。(實例位置:資源包\TM\sl\6\6

(1)創建index.jsp文件,在該文件中,調用response對象的sendRedirect()方法重定向頁面到用戶登錄頁面login.jsp。index.jsp文件的關鍵代碼如下:

     <%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>
     <%response.sendRedirect("login.jsp"); %>

(2)編寫login.jsp文件,在該文件中添加用于收集用戶登錄信息的表單及表單元素。關鍵代碼如下:

運行本實例,默認執行的是index.jsp頁面,在該頁面中又執行了重定向頁面到login.jsp的操作,所以在瀏覽器中將顯示如圖6.7所示的用戶登錄頁面。

圖6.7 運行結果

6.3.2 處理HTTP文件頭

通過response對象可以設置HTTP響應報頭,其中,最常用的是禁用緩存、設置頁面自動刷新和定時跳轉網頁。下面分別進行介紹。

1.禁用緩存

在默認情況下,瀏覽器將會對顯示的網頁內容進行緩存。這樣,當用戶再次訪問相關網頁時,瀏覽器會判斷網頁是否有變化,如果沒有變化則直接顯示緩存中的內容,這樣可以提高網頁的顯示速度。對于一些安全性要求較高的網站,通常需要禁用緩存。

【例6.11】 通過設置HTTP頭的方法實現禁用緩存。示例代碼如下:

     <%
     response.setHeader("Cache-Control","no-store");
     response.setDateHeader("Expires",0);
     %>

2.設置頁面自動刷新

通過設置HTTP頭還可以實現頁面的自動刷新。

【例6.12】 使網頁每隔10秒自動刷新一次。示例代碼如下:

     <%
     response.setHeader("refresh","10");
     %>

3.定時跳轉網頁

通過設置HTTP頭還可以實現定時跳轉網頁的功能。

【例6.13】 使網頁5秒鐘后自動跳轉到指定的網頁。示例代碼如下:

     <%
     response.setHeader("refresh","5;URL=login.jsp");
     %>

6.3.3 設置輸出緩沖

通常情況下,服務器要輸出到客戶端的內容不會直接寫到客戶端,而是先寫到一個輸出緩沖區,在計算機術語中,緩沖區被定義為暫時放置輸入或輸出資料的內存。實際上,緩沖區也可以這樣理解:在一個糧庫中,由于裝卸車隊的速度要快于傳送帶的傳輸速度,為了不造成裝卸車隊的浪費,糧庫設計了一個站臺,裝卸車隊可以先將運送的糧食卸到這個平臺上,然后讓傳送機慢慢傳送。糧庫的這個站臺就起到了緩沖的作用。當滿足以下3種情況之一,就會把緩沖區的內容寫到客戶端。

JSP頁面的輸出信息已經全部寫入緩沖區。

緩沖區已滿。

在JSP頁面中,調用了response對象的flushBuffer()方法或out對象的flush()方法。

response對象提供了如表6.2所示的對緩沖區進行配置的方法。

表6.2 對緩沖區進行配置的方法

【例6.14】 設置緩沖區的大小為32KB。示例代碼如下:

     response.setBufferSize(32);

說明

如果將緩沖區的大小設置為0KB,則表示不緩沖。

主站蜘蛛池模板: 双柏县| 安泽县| 绵阳市| 泽普县| 尖扎县| 遵义县| 郁南县| 资阳市| 灵丘县| 东乡| 德保县| 武陟县| 随州市| 丽水市| 明星| 灵寿县| 江达县| 安阳市| 台东县| 丰顺县| 吉木萨尔县| 贵定县| 安康市| 乌兰浩特市| 甘泉县| 满城县| 沭阳县| 吴川市| 合川市| 罗平县| 贵南县| 定结县| 惠水县| 建水县| 房山区| 历史| 基隆市| 蒙阴县| 南华县| 城市| 大厂|