標籤:httpservletresponse web
HttpServletResponse是java開發的web應用中,一個很常見也很重要對象,HttpServletResponse往往和HttpServletRequest成對的出現。
1、HttpServletResponse對象
Web伺服器收到一個http請求,會針對每個請求建立一個HttpServletRequest和HttpServletResponse對象。向用戶端發送資料找HttpServletResponse,從用戶端擷取資料用HttpServletRequest;
HttpServletResponse對象可以向用戶端發送三種類型的資料:
a. 回應標頭b.狀態代碼c.資料
getOutputStream和getWriter方法分別用於得到輸出位元據、輸出文本資料的ServletOuputStream、Printwriter對象。
getOutputStream和getWriter這兩個方法互斥,調用了其中的任何一個方法後,就不能再調用另一方法。
Servlet程式向ServletOutputStream或PrintWriter對象中寫入的資料將被Servlet引擎從response裡面擷取,Servlet引擎將這些資料當作響應訊息的本文,然後再與響應狀態行和各回應標頭組合後輸出到用戶端。
Serlvet的service方法結束後,Servlet引擎將檢查getWriter或getOutputStream方法返回的輸出資料流對象是否已經調用過close方法,如果沒有,Servlet引擎將調用close方法關閉該輸出資料流對象。
2、設定HttpServletResponse回應標頭控制瀏覽器
2.1、設定http回應標頭控制瀏覽器禁止緩衝當前文檔內容
response.setDateHeader("expries",-1);
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");
2.2、設定http回應標頭控制瀏覽器定時重新整理網頁(refresh)
response.setHeader("refresh","15");//設定refresh回應標頭控制瀏覽器每隔15秒鐘重新整理一次
2.3、通過HttpServletResponse實現請求重新導向
請求重新導向指:一個web資源收到用戶端請求後,通知用戶端去訪問另外一個web資源,這稱之為請求重新導向。
應用情境:使用者登陸,使用者首先訪問登入頁面,登入成功後,就會跳轉到某個頁面,這個過程就是一個請求重新導向的過程。
實現方式有兩種:
第一種
response.sendRedirect(String location),即調用response對象的sendRedirect方法實現請求重新導向
sendRedirect內部的實現原理:使用response設定302狀態代碼和設定location回應標頭實現重新導向;
第二種:
使用response設定302狀態代碼和設定location回應標頭實現重新導向實現請求重新導向
response.setHeader("Location","/change.jsp");
response.setStatus(HttpServletResponse.SC_FOUND);//設定302狀態代碼,等同於response.setStatus(302);
2.4、reponse請求重新導向和request請求轉寄的區別
request也有類似的功能,主要是做請求轉寄。
重新導向一般是進行了某些資料的處理和驗證之後,定位了一個新的地方繼續工作;
請求轉寄一般是把使用者的請求,轉寄到別的地方,中間一般不做處理。
3、使用HttpServletResponse進行重新導向的原始碼
package com.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
/**
*通過HttpServletResponse進行重新導向
*@author 範芳銘
*/
public class ResponseDedirect extendsHttpServlet {
privatestatic final long serialVersionUID = -7412891131635994698L;
publicvoid doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException {
//調用sendRedirect方法實現請求重新導向
response.sendRedirect("/change.jsp");
}
public void doPost(HttpServletRequest request, HttpServletResponseresponse)
throws ServletException,IOException {
doGet(request, response);
}
}
好記性不如爛筆頭11-WEB應用的HttpServletResponse