HttpServletResponse

HTTP協議包含請求和響應部分。
HttpServletRequest就表明着請求部分
HttpServletResponse就表明着響應部分html

 

常見應用:web

  一、文件下載(不知道怎麼貼代碼就不貼了)瀏覽器

    

    通知客戶端如下載的方式打開
    response.setHeader("Content-type", "text/html;application/octet-stream");
    response.setHeader("Content-Disposition", "attachment;filename=1.jpg");緩存

    若是文件是中文名的話服務器

    

    String path = getServletConfig().getServletContext().getRealPath("/美女.jpg");
    //通知客戶端如下載的方式打開
    String name = path.substring(path.lastIndexOf("\\")+1);
    response.setHeader("Content-type", "text/html;application/octet-stream");
    response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(name, "utf-8")+"");併發

  二、輸出中文數據app

    

    字節流:
    out.write("中文".getBytes("UTF-8"));有亂碼
    解決辦法:
    方式一:更改瀏覽器的查看編碼(不可取)

    通知瀏覽器,使用的碼錶
    方式二:response.setHeader("Content-Type", "text/html;charset=UTF-8");
    方式三:response.getOutputStream().write("<meta http-equiv='Content-Type' content='text/html;charset=UTF-8'>".getBytes("UTF-8"));
    *方式四:response.setContentType("text/html;charset=UTF-8");//方式2、3、四都是同樣的

    字符流:
    Servlet中的字符流默認查ISO-8859-1(SUN的Servlet規範要求的)
    如何更改這個默認的編碼呢?response.setCharacterEncoding("UTF-8");

    //不要忘記通知瀏覽器的編碼
    response.setCharacterEncoding("UTF-8");
    response.setHeader("Content-Type", "text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    out.write(s);//默認查的是ISO-8859-1碼錶(SUN的Servlet規範要求的)


    在字符流輸出中文數據時:response.setContentType("text/html;charset=UTF-8");
    有兩個做用:通知字符流以UTF-8編碼輸出
    通知客戶端以UTF-8解碼顯示ui

  三、動態生成驗證碼編碼

  

  四、控制緩存時間code

  發送HTTP頭控制緩存時間

  response.setDateHeader(「Expires」, System.currentTimeMillis()+1000*60*60);//緩存1小時

  五、定時刷新

  發送HTTP頭

  response.setHeader("Refersh",1);//每隔一秒刷新本頁面

  response.setHeader("Refersh",5;URL=1.html);//5秒鐘以後跳轉到1.html

  六、請求重定向

  

    經過response實現請求重定向。 請求重定向指:一個web資源收到客戶端請求後,通知客戶端去訪問另一個web資源,這稱之爲請求重定向。 地址欄會變,併發送2次    請求,增長服務器負擔 實現方式 response.sendRedirect() 實現原理: 302/307狀態碼和location頭便可實現重定向

  七、細節

  

  字節流和字符流不能同時使用,互斥的。   經過字符流或字節流輸出的數據並非直接打給瀏覽器的。而是把數據寫到response對象的緩存中的。服務器從緩存中取出數據,按照HTTP協議的響應格式輸出給瀏覽器。   若是你調用的response的輸出流沒有主動關閉,服務器會替你關的。

相關文章
相關標籤/搜索