天天看點

request & response

response:響應

         作用:

                  往浏覽器寫東西

         組成部分:

                  響應行響應頭 響應體

         操作響應行

                  格式:

                          協定/版本 狀态碼 狀态碼說明

                  狀态碼:

                          1xx:已發送請求

                          2xx:已完成響應

                                   200:正常響應

                          3xx:還需浏覽器進一步操作

                                   302:重定向配合響應頭:location

                                   304:讀緩存

                          4xx:使用者操作錯誤

                                   404:使用者操作錯誤.

                                   405:通路的方法不存在

                          5xx:伺服器錯誤

                                   500:内部異常

重定向:  

                          方式1:

                                   response.sendRedirect("/day10/loc2");

                          方式2:

                                   response.setStatus(302);

                                   respooen.setHeader("location","/day10/loc2");

         定時重新整理:

                          方案1:設定頭 refresh

                                   respooen.setHeader("refresh","秒數;url=跳轉的路徑");

                          方案2:http的meta标簽

                                   <metahttp-equiv="refresh"content="3;url=/day10/refresh2.html">

處理響應中文亂碼:

                          方式1:

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

                          方式2:

                                   response.setHeader("content-type","text/html;charset=utf-8");

檔案下載下傳:

                  1.超連結下載下傳

                          <ahref="/day10/download/day10.txt" target="_blank" rel="external nofollow" >下載下傳 day10.txt</a>

                          若浏覽器能解析該資源的mime類型,則打開;若不能接下則下載下傳;

                  2.編碼下載下傳通過servlet完成

                          <ahref="/day10/download?name=day10.txt" target="_blank" rel="external nofollow" >下載下傳 day10.txt</a>

                          a.設定檔案的mime類型

                                   StringmimeType=context.getMimeType(檔案名)

                                   response.setContentType(mimeType);

                          b.設定下載下傳頭資訊 content-disposition

                                   response.setHeader("content-disposition","attachment;filename="+檔案名稱);

                          c.提供流

                                   response.getOutputStream();

                  擴充:使用commons-io工具類

                          對拷流:

                                   IOUtils.copy(is,os);

request:請求

         作用:擷取浏覽器發送過來的資料

         組成部分:

                  請求行請求頭 請求體

         操作請求行

                  格式:

                          請求方式請求資源 協定/版本

                  常用方法:

                          StringgetMethod():擷取請求方式

                          StringgetRemoteAddr():擷取ip位址

                          StringgetContextPath() :在java中擷取項目名稱  (/day10)

操作請求參數

                  username=tom&password=123&hobby=drink&hobby=sleep

                  常用方法:

                          StringgetParameter(String key):擷取一個值

                          String[]getParameterValues(String key):通過一個key擷取多個值

                          Map<String,String[]>getParameterMap():擷取所有的參數名稱和值

請求的中文亂碼:

                  對于get請求:參數追加到位址欄,會使用utf-8編碼,伺服器(tomcat7)接受到請求之後,                   使用iso-8859-1解碼,是以會出現亂碼

                  對于post請求,參數是放在請求體中,伺服器擷取請求體的時候使用iso-8859-1解碼,                   也會出現亂碼

                  通用的方法:

                          newString(參數.getBytes("iso-8859-1"),"utf-8");

                  針對于post請求來說:隻需要将請求流的編碼設定成utf-8即可

                          request.setCharacterEncoding("utf-8");

請求轉發:

                  request.getRequestDispatcher("内部路徑").forward(request,response);

封裝對象:

Bean.setxxx()一個個封裝不友善

                  apache提供的一個工具類BeanUtils封裝資料

                          使用步驟:

                                   1.導入jar包commons-beanutils-1.8.3.jar、commons-logging-1.1.1.jar                  

                                   2.調用 BeanUtils.populate(Object bean,Map<> 參數);

請求轉發和重定向差別:

         重定向發送兩次請求,請求轉發一次請求

         重定向位址欄發生該表,請求轉發不變

         重定向是從浏覽器發送,請求轉發是伺服器内部

         重定向不存在request域對象,請求轉發可以使用request域對象

         重定向是response的方法,請求轉發是request的方法

         重定向可以請求站外資源,請求轉發不可以             

RR