HttpServletResponse

1.       控制消息頭

            addHeader(String name,String value)用於添加消息頭,不管有沒有重名的消息頭。

            setHeaderr(String name,String value)用於設置消息頭,如果存在重名則替換掉原先的消息頭。

            addIntHeader(String name,int value)setIntHeader(String name,int value)方法用於設置數字爲消息頭的值。與上面兩個相比只多了個轉換intstirng的功能。

            addDateHeader(String name,long date)setDateHeader(String name,long date)方法。

2.       設置發送內容的編碼和瀏覽器接收解析的編碼

            通過HttpResponse.setContentType("text/html;charset=GB2312");這種方式將設置發送編碼爲charset的值,同時瀏覽器也會按照這個值去接收解析。因爲它是直接對ContentType消息頭進行設置。

            通過HttpResponse. setCharacterEncoding("UTF-8");這種方式只能夠設置發送編碼,要想設置接收編碼,程序中必須有語句HttpResponse.setContentType("text/html”)。遮陰前一個語句設置了編碼,如果沒有後一個語句,只是設置了發送,但是沒有設置消息頭,瀏覽器不知道如何接受。(如果在代碼中沒有手動設置ContentType消息頭,則服務器發送給客戶端的消息頭中將不包含它)。

例如:

resp.setContentType("text/html");

       resp.setCharacterEncoding("UTF-8");

       PrintWriter out = resp.getWriter();

out.write("我是張!");

            setLocale(java.util.Locale)方法

這個方法用於設置國家和語言環境,要想設置編碼必須在web.xml中設置對應關係。

例如:

web.xml中:

<locale-encoding-mapping-list>

       <locale-encoding-mapping>

       <locale>zh_CN</locale>

       <encoding>UTF-8</encoding>

       </locale-encoding-mapping>

 </locale-encoding-mapping-list>

在代碼中:

resp.setContentType("text/html");

        resp.setLocale(java.util.Locale.CHINA);

       PrintWriter out = resp.getWriter();

out.write("我是張!");

注意:這個如果要設置瀏覽器的接收編碼,也要加上resp.setContentType("text/html");原理和上面相同。

2.4 如果上面三個都沒有設置,那麼服務器將默認選擇使用ISO-8859-1發送,將產生中文亂碼。一般表現爲??????形式的亂碼。而涉及到對UTF-8轉碼錯誤的亂碼,一般是“看不懂象形文字“。

3.  一些常用的Header

    3.1 實現定時刷新或者跳轉。

       resp.setHeader("Refresh", "2");//定時刷新

       resp.setHeader("Refresh", "5;url=http://www.baidu.com"); //定時跳轉

    3.2 禁止緩存

    response.setHeader("Pragma","No-cache");    

    response.setHeader("Cache-Control","no-cache"); 

    response.setDateHeader("Expires", 0);

3.       response.getWriter()response.getOutputStream()方法。

4.       response.sendRedirect()重定向。

使用RequestDispatcher實現請求轉發。

Servlet中獲取RequestDispatcher對象的方法:

通過ServletContext接口,getServletContext().getRequestDispatcher(String path)這裏的path只能是以/開頭,代表web應用程序的根目錄。

通過RequestgetRequestDispatcher(String path)方法,這裏的path如果是以/開頭,代表web應用程序的根目錄,否則相對目錄。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章