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的方法
重定向可以請求站外資源,請求轉發不可以