response 封裝服務器向客戶端的響應信息,核心職責是輸出內容、設置 HTTP 頭、控制瀏覽器行為。本文重點講解頭信息操作、頁面刷新跳轉、輸出流管理。
javax.servlet.http.HttpServletResponse 實例ServletResponse → HttpServletResponse(專用於 HTTP)
setHeader(String name, String value):設置單值頭。addHeader(String name, String value):追加多值頭。setContentType(String type):設置 MIME 類型與字符集(必須在獲取輸出流前調用)。setCharacterEncoding(String charset):設置響應字符編碼。利用 Refresh 頭實現:
<!-- Response_01.jsp: 每 2 秒自動刷新 -->
<% response.setHeader("refresh", "2"); %>
<h5>您訪問了 <%=count++%> 次</h5>
<!-- Response_02.jsp: 3 秒後跳轉到指定頁面 -->
<h3>3 秒後跳轉... <a href="51cto.html">點擊這裡</a></h3>
<% response.setHeader("refresh", "3;URL=51cto.html"); %>
語法:refresh: 秒數 [;URL=目標地址]。無 URL 則刷新當前頁。
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
sendError(int sc, String msg):發送錯誤狀態(404、500 等),容器顯示錯誤頁。setStatus(int sc):設置狀態碼(如 302 重定向底層實現)。PrintWriter getWriter():字符輸出流(文本/HTML)。ServletOutputStream getOutputStream():字節輸出流(圖片/文件下載)。IllegalStateException。response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
ServletOutputStream out = response.getOutputStream();
// 寫入文件字節流
out.close();