HTML??和Apache服務(wù)器后臺(tái)程序(PHP)交互
服務(wù)器有?個(gè)??
在瀏覽器中輸???的地址 127.0.0.1/login.html
??中可以向服務(wù)器提交數(shù)據(jù) form表單
服務(wù)器端使?對(duì)應(yīng)的?式接收表單中的數(shù)據(jù) _POST["name"]
服務(wù)器使?echo返回給??數(shù)據(jù)
1.?絡(luò)模型
???OSI七層模型 -> 四層模型
???html -> 服務(wù)
???html 通過(guò)操作系統(tǒng)提供的接?發(fā)起請(qǐng)求 -> 將請(qǐng)求的數(shù)據(jù)使?TCP/IP協(xié)議進(jìn)?
包裝 -> ?絡(luò)層進(jìn)?數(shù)據(jù)分包 -> 鏈路中 ->物理層 -》》》》》》? 絡(luò) 》》》》》》》主機(jī) 物理層 -》鏈路層 -》?絡(luò)層 -》傳輸層 -》應(yīng)?層
2.Http和TCP/UDP的關(guān)系
???HTTP協(xié)議 主要負(fù)責(zé)數(shù)據(jù)的具體傳輸 對(duì)數(shù)據(jù)進(jìn)?封裝
???TCP/UDP協(xié)議 負(fù)責(zé)將數(shù)據(jù)在?絡(luò)中傳輸
3.請(qǐng)求Request和響應(yīng)Response
???請(qǐng)求Request
??????客戶端需要向服務(wù)器 上傳數(shù)據(jù)
??????客戶端需要從服務(wù)器 下載數(shù)據(jù)
???響應(yīng)Response
??????服務(wù)器端對(duì)客戶端的請(qǐng)求作出的回應(yīng)
4.三次握?建?連接
???HTTP封裝完數(shù)據(jù)之后 需要將數(shù)據(jù)使?TCP協(xié)議向?絡(luò)中的其他主機(jī)(服務(wù)器)進(jìn)?發(fā)送
???需要經(jīng)過(guò)三個(gè)過(guò)程/三次握?
5.Http協(xié)議報(bào)?
???請(qǐng)求?式:
???GET :請(qǐng)求數(shù)據(jù)(1.提交數(shù)據(jù) 2.接收返回的數(shù)據(jù)) 提交的數(shù)據(jù)會(huì)在url地址中顯 示表示出來(lái) 4M
???POST:請(qǐng)求數(shù)據(jù)(1.提交數(shù)據(jù) 2.接收返回的數(shù)據(jù)) 提交的數(shù)據(jù)在請(qǐng)求體重 url地 址不會(huì)出現(xiàn) (有?件就必須使?POST)
???HEAD:只是獲取服務(wù)器端返回的響應(yīng)信息 不會(huì)獲取具體的內(nèi)容
???狀態(tài)碼:
??????200-206 請(qǐng)求成功
??????300-305 重定向 www.baidu.com -> www.qq.com
??????400-415 客戶端錯(cuò)誤
??????500-505 服務(wù)器端錯(cuò)誤
???請(qǐng)求頭 請(qǐng)求體
???響應(yīng)頭 響應(yīng)體
6.IP地址属百、DNS
???IP地址 就是?來(lái)唯?標(biāo)識(shí)?絡(luò)中的?臺(tái)設(shè)備
???IPV4 IPV6
???域名:www.baidu.com
???使?DNS 域名解析器
???IP地址:183.232.231.172
???http://127.0.0.1/upload/image/1.jpeg
???http://127.0.0.1/login.php?user_name=jack&user_password=123
???http: 數(shù)據(jù)傳輸使?的具體協(xié)議 Http Https
???127.0.0.1 www.baidu.com :訪問(wèn)的主機(jī)地址
???login.php: 訪問(wèn)主機(jī)的那個(gè)?件或者?錄
???? 分隔符 表示 需要向服務(wù)器提交數(shù)據(jù) 提交?式GET 后?就是具體提交的數(shù)據(jù)
???user_name=jack 提交的?個(gè)數(shù)據(jù) user_name服務(wù)器定義的字段 jack字段對(duì)應(yīng)的數(shù)據(jù)
???使?&來(lái)連接多個(gè)字段
7.端?號(hào)
???端?對(duì)應(yīng)的是?種服務(wù)
???80端?對(duì)應(yīng)的是?絡(luò)服務(wù)
???公認(rèn)端?:0-1023 ?些特定的服務(wù)
???注冊(cè)端?:1024-49151 應(yīng)?程序使?該范圍端? 8888 9999 6666
???動(dòng)態(tài)私有端?:49152- 65535
URL和URLEncoder帘不、URLDecoder
???java使?URL來(lái)封裝?絡(luò)數(shù)據(jù)的地址
???url地址??不能包含中?或者其他?些特殊的字符 對(duì)于這些字符需要進(jìn)?編碼或者解碼URLConnection 和 HttpURLConnection
//向?絡(luò)中發(fā)起請(qǐng)求
//1.獲取對(duì)應(yīng)的url地址
String str = "http://127.0.0.1/login.php? user_name=jack&user_password=123";
URL url = new URL(str);
//2.使?URLConnection發(fā)起連接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET"); //GET POST
conn.setDoInput(true); //設(shè)置是否打開接收的流
conn.setDoOutput(true); //設(shè)置是否打開輸出流 POST?式必須打開
conn.setConnectTimeout(5*1000); //請(qǐng)求時(shí)間
conn.setUseCaches(false); //不需要緩存
//3.接收發(fā)送和接收都是?輸?輸出流
//url.openStream() 從服務(wù)器端獲取數(shù)據(jù)
//conn.getOutputStream() 向服務(wù)器端發(fā)送數(shù)據(jù)
InputStream is = url.openStream();
//4.處理輸?流的數(shù)據(jù) -> byte[] -> String
byte[] buffer = new byte[1024];
int len = 0;
while( (len = is.read(buffer)) != -1){
String content = new String(buffer,0,len);
System.out.println(content);
}
//5.關(guān)閉流
is.close();
11.使?get和post?式請(qǐng)求服務(wù)器端數(shù)據(jù)
10.下載?件(圖?、視頻氯析、pdf)
11.多線程下載器