好記性不如爛筆頭11-WEB應用的HttpServletResponse

來源:互聯網
上載者:User

標籤: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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.