<dl id="opymh"></dl>

<div id="opymh"></div>
      <div id="opymh"><tr id="opymh"></tr></div>

        <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

        <em id="opymh"></em>

        <em id="opymh"><ol id="opymh"></ol></em>

              頻道欄目
              首頁 > 程序開發 > Web開發 > Jsp > 正文
              JSP開發實例之JSP 服務器響應——響應頭信息分析
              2018-07-27 14:38:43         來源:luyaran的博客  
              收藏   我要投稿

              Response響應對象主要將JSP容器處理后的結果傳回到客戶端。可以通過response變量設置HTTP的狀態和向客戶端發送數據,如Cookie、HTTP文件頭信息等。我么來看一個典型的響應:

              HTTP/1.1 200 OK
              Content-Type: text/html
              Header2: ...
              ...
              HeaderN: ...
                (空行)
              <!doctype ...>
              <html>
              <head>...</head>
              <body>
              ...
              </body>
              </html>
              
              
              

              狀態行包含HTTP版本信息,比如HTTP/1.1,一個狀態碼,比如200,還有一個非常短的信息對應著狀態碼,比如OK。

              我們來看下HTTP1.1響應頭中最有用的部分:

              響應頭 描述
              Allow 指定服務器支持的request方法(GET,POST等等)
              Cache-Control 指定響應文檔能夠被安全緩存的情況。通常取值為publicprivateno-cache等等。 Public意味著文檔可緩存,Private意味著文檔只為單用戶服務并且只能使用私有緩存。No-cache 意味著文檔不被緩存。
              Connection 命令瀏覽器是否要使用持久的HTTP連接。close命令瀏覽器不使用持久HTTP連接,而keep-alive 意味著使用持久化連接。
              Content-Disposition 讓瀏覽器要求用戶將響應以給定的名稱存儲在磁盤中
              Content-Encoding 指定傳輸時頁面的編碼規則
              Content-Language 表述文檔所使用的語言,比如en, en-us,,ru等等
              Content-Length 表明響應的字節數。只有在瀏覽器使用持久化 (keep-alive) HTTP 連接時才有用
              Content-Type 表明文檔使用的MIME類型
              Expires 指明啥時候過期并從緩存中移除
              Last-Modified 指明文檔最后修改時間。客戶端可以 緩存文檔并且在后續的請求中提供一個If-Modified-Since請求頭
              Location 在300秒內,包含所有的有一個狀態碼的響應地址,瀏覽器會自動重連然后檢索新文檔
              Refresh 指明瀏覽器每隔多久請求更新一次頁面。
              Retry-After 與503 (Service Unavailable)一起使用來告訴用戶多久后請求將會得到響應
              Set-Cookie 指明當前頁面對應的cookie

              response 對象是 javax.servlet.http.HttpServletResponse 類的一個實例。就像服務器會創建request對象一樣,它也會創建一個客戶端響應,并且它還定義了處理創建HTTP信息頭的接口。通過使用這個對象,我們可以添加新的cookie或時間戳,還有HTTP狀態碼等等。

              我們來看下用來設置HTTP響應頭的方法,這些方法由HttpServletResponse 類提供:

              S.N. 方法 & 描述
              1 String encodeRedirectURL(String url) 對sendRedirect()方法使用的URL進行編碼
              2 String encodeURL(String url) 將URL編碼,回傳包含Session ID的URL
              3 boolean containsHeader(String name) 返回指定的響應頭是否存在
              4 boolean isCommitted() 返回響應是否已經提交到客戶端
              5 void addCookie(Cookie cookie) 添加指定的cookie至響應中
              6 void addDateHeader(String name, long date) 添加指定名稱的響應頭和日期值
              7 void addHeader(String name, String value) 添加指定名稱的響應頭和值
              8 void addIntHeader(String name, int value) 添加指定名稱的響應頭和int值
              9 void flushBuffer() 將任何緩存中的內容寫入客戶端
              10 void reset() 清除任何緩存中的任何數據,包括狀態碼和各種響應頭
              11 void resetBuffer() 清除基本的緩存數據,不包括響應頭和狀態碼
              12 void sendError(int sc) 使用指定的狀態碼向客戶端發送一個出錯響應,然后清除緩存
              13 void sendError(int sc, String msg) 使用指定的狀態碼和消息向客戶端發送一個出錯響應
              14 void sendRedirect(String location) 使用指定的URL向客戶端發送一個臨時的間接響應
              15 void setBufferSize(int size) 設置響應體的緩存區大小
              16 void setCharacterEncoding(String charset) 指定響應的編碼集(MIME字符集),例如UTF-8
              17 void setContentLength(int len) 指定HTTP servlets中響應的內容的長度,此方法用來設置 HTTP Content-Length 信息頭
              18 void setContentType(String type) 設置響應的內容的類型,如果響應還未被提交的話
              19 void setDateHeader(String name, long date) 使用指定名稱和值設置響應頭的名稱和內容
              20 void setHeader(String name, String value) 使用指定名稱和值設置響應頭的名稱和內容
              21 void setIntHeader(String name, int value) 指定 int 類型的值到 name 標頭
              22 void setLocale(Locale loc) 設置響應的語言環境,如果響應尚未被提交的話
              23 void setStatus(int sc) 設置響應的狀態碼

              我們接下來使用setIntHeader()方法和setRefreshHeader()方法來模擬一個數字時鐘:

              <%@ page language="java" contentType="text/html; charset=UTF-8"
               pageEncoding="UTF-8"%>
              <%@ page import="java.io.*,java.util.*" %>
              
              

              自動刷新實例

              <%@ page language="java" contentType="text/html; charset=UTF-8"
                  pageEncoding="UTF-8"%>
              <%@ page import="java.io.*,java.util.*" %>
              <!DOCTYPE html>
              <html>
              <head>
              <meta charset="utf-8">
              <title>luyaran</title>
              </head>
              <body>
              <h2>自動刷新實例</h2>
              <%
                 // 設置每隔5秒自動刷新
                 response.setIntHeader("Refresh", 5);
                 // 獲取當前時間
                 Calendar calendar = new GregorianCalendar();
                 String am_pm;
                 int hour = calendar.get(Calendar.HOUR);
                 int minute = calendar.get(Calendar.MINUTE);
                 int second = calendar.get(Calendar.SECOND);
                 if(calendar.get(Calendar.AM_PM) == 0)
                    am_pm = "AM";
                 else
                    am_pm = "PM";
                 String CT = hour+":"+ minute +":"+ second +" "+ am_pm;
                 out.println("當前時間: " + CT + "\n");
              %>
              </body>
              </html>
              

              我們將以上代碼保存為main.jsp,然后通過瀏覽器訪問它,結果將會每隔5秒顯示一下系統當前時間。

              當然,這個結果得大家自己運來看下了,大家也可以自己動手修改以上代碼,試試使用其他的方法,將能得到更深的體會。

              點擊復制鏈接 與好友分享!回本站首頁
              上一篇:關于JSP內置對象get和post的區別講解
              下一篇:最后一頁
              相關文章
              圖文推薦
              點擊排行

              關于我們 | 聯系我們 | 廣告服務 | 投資合作 | 版權申明 | 在線幫助 | 網站地圖 | 作品發布 | Vip技術培訓 | 舉報中心

              版權所有: 紅黑聯盟--致力于做實用的IT技術學習網站

              极速飞艇好假
              <dl id="opymh"></dl>

              <div id="opymh"></div>
                  <div id="opymh"><tr id="opymh"></tr></div>

                    <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

                    <em id="opymh"></em>

                    <em id="opymh"><ol id="opymh"></ol></em>

                          <dl id="opymh"></dl>

                          <div id="opymh"></div>
                              <div id="opymh"><tr id="opymh"></tr></div>

                                <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

                                <em id="opymh"></em>

                                <em id="opymh"><ol id="opymh"></ol></em>