国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java學習筆記—HttpServletResponse和HttpServletRequest(14)

2019-11-14 23:25:52
字體:
來源:轉載
供稿:網友
java學習筆記—HttpServletResponse和HttpServletRequest(14)

如果開發者需要獲取用戶的請求那么請使用HttpServletRequest接口的對象。

如果開發者需要響應用戶的請求那么請使用HttpServletResponse接口的對象。

HttpServletResponse接口

該接口默認繼承ServletResponse接口。該接口的主要任務是處理響應頭信息、以及處理客戶端請求的響應體數據和Cookie的數據傳輸。

ServletResponse接口中常用的方法

核心的方法是給Response對象進行數據的輸出。

ServletOutputStream getOutputStream()     ? 獲取響應對象的字節輸出流PRintWriter getWriter()                    ? 獲取響應對象的字符流對象setContentType(String type)                ? 指定響應的數據的內容類型setCharacterEncoding(String charset)        ? 指定響應數據的編碼方式

HttpServletResponse接口中常用的方法

設置響應狀態碼和響應頭信息setStatus(int sc) setHeader(String name, String value)進行請求的重定向sendRedirect(String location)進行Cookie數據傳輸void addCookie(Cookie cookie)使用URL ReWritting技術實現會話String encodeURL(String url) String encodeRedirectURL(String url)
控制響應狀態碼和響應頭
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {         // 設置響應狀態碼         response.setStatus(302);  // 資源臨時轉移         // 設置響應頭信息指定資源目前的最新地址         response.setHeader("location", "/day06/index.jsp");    }

問題: 對于一個不懂HTTP協議的人而言,以上的代碼是寫不出來的。

可以使用以下的語句進行替換:

response.sendRedirect("/day06/index.jsp");
字節流做響應體的輸出
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {       // 通知瀏覽器以UTF-8的方式進行解碼       response.setHeader("content-type", "text/html;charset=utf-8");       // 獲取字節流對象       ServletOutputStream out = response.getOutputStream();       // 定義要輸出的數據       String data = "hello<br/>";       // 輸出數據       out.write(data.getBytes());       data = "<font color=/"blue/">this is a blue color!</font><br/>";       out.write(data.getBytes());       // 輸出中文數據       data = "中國";       // 獲取中文數據的UTF-8編碼       out.write(data.getBytes("UTF-8")); // UTF-8    }

以上的代碼中使用協議的語句可以使用以下的代碼進行簡化:

response.setContentType("text/html;charset=utf-8");     

以上的代碼可以使用模擬HTTP協議的meta標簽進行簡化:

out.write("<meta http-equiv=/"content-type/" content=/"text/html; charset=UTF-8/">".getBytes());

如果使用字節流直接輸出數字會怎樣?

// 輸出int數據int num = 65;out.write(num);

由于瀏覽器是一個文本軟件,那么在解析數字的時候都會默認的進行字符的轉換,因此以上的代碼顯示的是A。如果要強行的輸出65,那么需要使用out.write(“65”.getBytes());

1 使用字節流輸出圖片

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {       // 獲取網站對象       ServletContext context = this.getServletContext();       // 獲取網站資源       String path = context.getRealPath("/imgs/

如果一個網站中既有圖片又有文本,那么需要使用什么流?

Repsonse不可能同時獲取字節流和字符流,對于以上的問題是由于HTTP通信原理沒有掌握清楚才導致。瀏覽器發送請求處理的一定是頁面,但是頁面中的圖片表現的形式不是字節流的方式而是<img serc=”url”/>直接發送給瀏覽器即可,瀏覽器會檢索該src指定的路徑繼續發送請求以字節流的方式獲取圖片。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 遂溪县| 蛟河市| 绥德县| 鄱阳县| 泰顺县| 呼图壁县| 西乡县| 察隅县| 沁源县| 双江| 巨鹿县| 麻城市| 莲花县| 海林市| 哈密市| 龙川县| 泰来县| 宜兰县| 潮州市| 天镇县| 乐业县| 江达县| 克东县| 汉川市| 西乌| 铜川市| 西林县| 灵璧县| 太仆寺旗| 大厂| 济源市| 黑龙江省| 巴彦淖尔市| 库尔勒市| 桑植县| 高阳县| 和田县| 息烽县| 关岭| 平湖市| 突泉县|