<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # HttpServletResponse說明 ### 基本概述 ????HttpServletResponse是用于將Servlet處理好的內容發送給瀏覽器的類,服務器通過對HttpServletResponse對象中的內容進行截取、拼接就能獲得一個完整的HTTP響應信息。 參考文檔:[http://tomcat.apache.org/tomcat-5.5-doc/servletapi/index.html](http://tomcat.apache.org/tomcat-5.5-doc/servletapi/index.html) ### 常用方法 ????public?void?addHeader(String?name,String?value)?//添加一個消息頭到HttpServletResponse對象中去。 ????public?void?setHeader(String?name,String?value)?//重設一個消息頭,其與addHeader的區別是,add是添加(重復也行),set表示的是,如果有該消息頭就覆蓋它,沒有就創建它 ????public?void?setStatus(int?sc)?//設置響應消息的狀態碼,具體可以參照我的另一篇博客HTTP協議入門 ????public?void?sendRedirect(String?location)?throws?java.io.IOException?//?這個方法在與request的getRequestDispatch()比較時,會探討 ????public?ServletOutputStream?getOutputStream()?throws?java.io.IOException?//得到一個二進制輸出流,可以回送任意格式數據數據 ????public?java.io.PrintWriter?getWriter()?throws?java.io.IOException?//得到一個字符輸出流,可以回送字符數據 ### getWriter()和getOutputStream()的區別 getWriter()?用于向客戶機回送字符數據 getOutputStream()?返回的對象,可以回送字符數據,也可以回送字節數據(二進制數據) OutputStream?os=response.getOutputStream(); os.write("hello,world".getBytes()); PS:通過該方法也能用getOutputStream()回送字符數據 #### 如何選擇 如果是回送字符數據,則使用??PrintWriter對象?,效率高 如果是回送字節數據(binary?date)?,則只能使用?OutputStream ? #### 注意事項 PrintWriter,OutputStream?這兩個流不能同時使用 比如: OutputStream?os=response.getOutputStream(); os.write("hello,world".getBytes()); PrintWriter?out=response.getWriter(); out.println("abc"); ? 會報錯: java.lang.IllegalStateException:?getOutputStream()?has?already?been?called?for?this?response ? #### 不能同時使用PrintWriter和OutputStream的原因 ![](https://box.kancloud.cn/2016-02-23_56cbf5ff7730b.jpg) 結論:Web服務器在完成一次service之后會自動關閉流,并銷毀當前的request和response對象,故無法同時使用兩個流。 案例: ~~~ package com.pc; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Servlet7 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); response.setCharacterEncoding("utf-8"); // 演示下載文件 response.setHeader("Content-Disposition", "attachment; filename=EVO_120G.jpg"); // 打開文件 // 1.獲取到要下載文件的全路徑 String path = this.getServletContext().getRealPath("/EVO_120G.jpg"); // 測試 System.out.println("path=" + path); // 2.創建文件輸入流 FileInputStream fis = new FileInputStream(new File(path)); // 做一個緩沖字符數組 byte buff[] = new byte[1024]; int length = 0; // 3.指向response的輸出流 OutputStream os = response.getOutputStream(); // 4.循環讀出 // length表示每次實際讀入的字節數 while((length = fis.read(buff)) != -1){ os.write(buff, 0, length); } // 關閉 os.close(); fis.close(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } } ~~~ ----------參考《韓順平.細說Servlet》
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看