- Java Web從入門到精通(第3版)
- 明日科技
- 1250字
- 2020-06-29 17:34:00
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,則表示不緩沖。
- PHP動態網站程序設計
- Mastering Rust
- Teaching with Google Classroom
- 移動增值應用開發技術導論
- Programming Microsoft Dynamics? NAV 2015
- SQL Server 入門很輕松(微課超值版)
- 從零開始學UI:概念解析、實戰提高、突破規則
- Continuous Delivery and DevOps:A Quickstart Guide Second Edition
- 從零開始學Unity游戲開發:場景+角色+腳本+交互+體驗+效果+發布
- 你好!Python
- Python程序設計案例教程
- Python AI游戲編程入門:基于Pygame和PyTorch
- Python編程零基礎入門
- Mastering Assembly Programming
- Drupal 8 Module Development