?1、簡(jiǎn)述
? ?網(wǎng)絡(luò)的七層協(xié)議從上到下:7、應(yīng)用層 6、表示層 5、會(huì)話層 4、傳輸層 3、網(wǎng)絡(luò)層 2、數(shù)據(jù)鏈路層 1、物理層。其中高層(即7、6、5、4層)定義了應(yīng)用程序的功能,下面3層(即3、2、1層)主要面向通過(guò)網(wǎng)絡(luò)的端到端的數(shù)據(jù)流。
? 常見(jiàn)協(xié)議有:IP/TCP協(xié)議,F(xiàn)TP協(xié)議,SMTP及POP3協(xié)議等等。
2、Http相關(guān)
? ? 協(xié)議是指計(jì)算機(jī)通信網(wǎng)絡(luò)中兩臺(tái)計(jì)算機(jī)之間進(jìn)行通信所必須共同遵守的規(guī)定或規(guī)則,超文本傳輸協(xié)議(HTTP)是一種通信協(xié)議,它允許將超文本標(biāo)記語(yǔ)言(HTML)文檔從Web服務(wù)器傳送到客戶(hù)端的瀏覽器。
? ? http協(xié)議是無(wú)狀態(tài)的,無(wú)狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力,服務(wù)器不知道客戶(hù)端是什么狀態(tài)。從另一方面講,打開(kāi)一個(gè)服務(wù)器上的網(wǎng)頁(yè)和你之前打開(kāi)這個(gè)服務(wù)器上的網(wǎng)頁(yè)之間沒(méi)有任何聯(lián)系
打開(kāi)瀏覽器,輸入url,瀏覽網(wǎng)頁(yè)的過(guò)程的原理:
輸入U(xiǎn)RL后,瀏覽器給Web服務(wù)器發(fā)送了一個(gè)Request請(qǐng)求, Web服務(wù)器接到Request后進(jìn)行處理,生成相應(yīng)的Response,然后發(fā)送給瀏覽器, 瀏覽器解析Response中的HTML,展示網(wǎng)頁(yè)。
統(tǒng)一資源定位器(url):
URL(Uniform Resource Locator) 地址用于描述一個(gè)網(wǎng)絡(luò)上的資源,? 基本格式如下
? ? ? ? ? schema://host[:port#]/path/.../[?query-string][#anchor]
scheme? ? ? ? ? ? ? 指定低層使用的協(xié)議(例如:http, https, ftp)
host? ? ? ? ? ? ? ? ? HTTP服務(wù)器的IP地址或者域名
port#? ? ? ? ? ? ? ? HTTP服務(wù)器的默認(rèn)端口是80,這種情況下端口號(hào)可以省略。如果使用了 ? ? ? ? ? ? ? ? ? ? ? ? 別的端口,必須指明,例如 http://www.cnblogs.com:8080/
path? ? ? ? ? ? ? ? ? 訪問(wèn)資源的路徑
query-string? ? ? 發(fā)送給http服務(wù)器的數(shù)據(jù)
anchor-? ? ? ? ? ? 錨
? ?Http協(xié)議定義了很多與服務(wù)器交互的方法,最基本的有4種,分別是GET,POST,PUT,DELETE. 一個(gè)URL地址用于描述一個(gè)網(wǎng)絡(luò)上的資源,而HTTP中的GET, POST, PUT, DELETE就對(duì)應(yīng)著對(duì)這個(gè)資源的查,改,增,刪4個(gè)操作。 我們最常見(jiàn)的就是GET和POST了。GET一般用于獲取/查詢(xún)資源信息,而POST一般用于更新資源信息.。
GET和POST的區(qū)別
1. GET提交的數(shù)據(jù)會(huì)放在URL之后,以?分割URL和傳輸數(shù)據(jù),參數(shù)之間以&相連,如EditPosts.aspx?name=test1&id=123456.? POST方法是把提交的數(shù)據(jù)放在HTTP包的Body中.
2. GET提交的數(shù)據(jù)大小有限制(因?yàn)闉g覽器對(duì)URL的長(zhǎng)度有限制),而POST方法提交的數(shù)據(jù)沒(méi)有限制.
3. GET方式需要使用Request.QueryString來(lái)取得變量的值,而POST方式通過(guò)Request.Form來(lái)獲取變量的值。
4. GET方式提交數(shù)據(jù),會(huì)帶來(lái)安全問(wèn)題,比如一個(gè)登錄頁(yè)面,通過(guò)GET方式提交數(shù)據(jù)時(shí),用戶(hù)名和密碼將出現(xiàn)在URL上,如果頁(yè)面可以被緩存或者其他人可以訪問(wèn)這臺(tái)機(jī)器,就可以從歷史記錄獲得該用戶(hù)的賬號(hào)和密碼.
Response 消息中的第一行叫做狀態(tài)行,由HTTP協(xié)議版本號(hào), 狀態(tài)碼, 狀態(tài)消息 三部分組成。
狀態(tài)碼用來(lái)告訴HTTP客戶(hù)端,HTTP服務(wù)器是否產(chǎn)生了預(yù)期的Response.。
狀態(tài)碼:
1XX? 提示信息 - 表示請(qǐng)求已被成功接收,繼續(xù)處理
2XX? 成功 - 表示請(qǐng)求已被成功接收,理解,接受
3XX? 重定向 - 要完成請(qǐng)求必須進(jìn)行更進(jìn)一步的處理
4XX? 客戶(hù)端錯(cuò)誤 -? 請(qǐng)求有語(yǔ)法錯(cuò)誤或請(qǐng)求無(wú)法實(shí)現(xiàn)
5XX? 服務(wù)器端錯(cuò)誤 -? 服務(wù)器未能實(shí)現(xiàn)合法的請(qǐng)求
常見(jiàn)狀態(tài)碼:
200 -該請(qǐng)求被成功地完成,所請(qǐng)求的資源發(fā)送回客戶(hù)端
302 -重定向,新的URL會(huì)在response 中的Location中返回,瀏覽器將會(huì)自動(dòng)使用新的URL發(fā)出新的Request
400 Bad Request ?-客戶(hù)端請(qǐng)求與語(yǔ)法錯(cuò)誤,不能被服務(wù)器所理解
403 Forbidden -服務(wù)器收到請(qǐng)求,但是拒絕提供服務(wù)
404 Not Found -請(qǐng)求資源不存在(輸錯(cuò)了URL)
JSON:
? ?JSON(JavaScript Object Notation),類(lèi)似于XML,是一種數(shù)據(jù)交換格式,比如Java產(chǎn)生了一個(gè)數(shù)據(jù)想要給JavaScript,則除了利用XML外,還可以利用JSON;JSON相比XML的優(yōu)勢(shì)是表達(dá)起來(lái)很簡(jiǎn)單;
? ?注意:JSON并不是一個(gè)文檔格式,沒(méi)有*.json的文檔,一般JSON格式的文檔存在txt中,而XML可以是一個(gè)標(biāo)準(zhǔn);
?JSON有兩種數(shù)據(jù)結(jié)構(gòu):
(1)Map,也稱(chēng)為對(duì)象;{....}——{'key1':'value1','key2':'value2'}
(2)Array;[......] —— ['arr1','arr2','arr3'];
總結(jié):
(1)JSON的數(shù)據(jù)結(jié)構(gòu)只有兩種;
(2)可以嵌套表示,比如Array中可以嵌套Object等;
(3)記?。篛bject是以{}表示,Array是以[? ]表示;
JSON的解析方式:
一、傳統(tǒng)解析方式
通過(guò)解析json字符串,得到對(duì)象。

通過(guò)解析json字符串,得到Arraylist

二、利用GSON解析
3、html相關(guān)
一、Html簡(jiǎn)介? ??
HTML 是一種標(biāo)記語(yǔ)言? ? ? 忽略大小寫(xiě),語(yǔ)法寬松? ??
使用 HTML 標(biāo)記和元素,可以:1、控制頁(yè)面和內(nèi)容的外觀 2、發(fā)布聯(lián)機(jī)文檔3、使用 HTML 文檔中插入的鏈接檢索聯(lián)機(jī)信息 ?4\創(chuàng)建聯(lián)機(jī)表單,收集用戶(hù)的信息、執(zhí)行事務(wù)等等 ? ?5、插入動(dòng)畫(huà) 6、開(kāi)發(fā)幫助文件 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
HTML 標(biāo)記的格式組成:
<ELEMENT ATTRIBUTE = value>
ELEMENT:? 元素 - 標(biāo)識(shí)標(biāo)記
ATTRIBUTE: 屬性 - 描述標(biāo)記
value:? ? 值? - 分配給屬性的內(nèi)容
二、超鏈接
<A HREF = protocol://host.domain:port/path/filename> Hypertext </A>
三、在HTML文檔中使用特殊字符(跟XML的一樣)
> ? ==== >? ? greater 大于 ? ? ?< ? ==== <? ? litter 小于
&de;?? ==== ≥???? 大于等于 ? ? ? ? ? ?≤ ? ==== ≤???? litter equal
≠ ? ==== ≠???? not equal不等 ? ? ‍ ?? ====?????? 空格
" ==== ”???? 雙引 ? ? ? ? ? ? ? &apos ==== ‘???? 單引號(hào)
© ==== ????? 版權(quán)符號(hào) ? ? ? ? ? ?® ?==== ????? 注冊(cè)商標(biāo)
& ?==== &???? 與符號(hào)
4、javascript相關(guān)
一、什么是 JavaScript?
JavaScript 是一門(mén)跨平臺(tái)、面向?qū)ο蟮膭?dòng)態(tài)的弱類(lèi)型的輕量級(jí)解釋型語(yǔ)言,是一種基于對(duì)象和事件驅(qū)動(dòng)并具有相對(duì)安全性的客戶(hù)端腳本語(yǔ)言。應(yīng)用于 HTML 文檔能夠在網(wǎng)站上提供動(dòng)態(tài)的交互能力,他不同于 Java。簡(jiǎn)單說(shuō)就是基于瀏覽器處理 HTML 文檔,實(shí)現(xiàn)各種網(wǎng)頁(yè)特效,響應(yīng)用戶(hù)的各種操作,為網(wǎng)頁(yè)添加動(dòng)態(tài)效果,提升用戶(hù)操作體驗(yàn),比如圖片滾動(dòng)播放效果,點(diǎn)擊登錄按鈕彈出對(duì)話框,鼠標(biāo)移入移出動(dòng)畫(huà),表單提交數(shù)據(jù)驗(yàn)證等。
?二、為什么要學(xué)習(xí) JavaScript?
JavaScript 通常被稱(chēng)為 JS,他發(fā)明的目的,就是作為瀏覽器的內(nèi)置腳本語(yǔ)言,為網(wǎng)頁(yè)開(kāi)發(fā)者提供操控瀏覽器的能力,他可以讓網(wǎng)頁(yè)呈現(xiàn)出各種特殊效果,為用戶(hù)提供友好的互動(dòng)體驗(yàn)。隨著 Ajax 技術(shù)的出現(xiàn),前端可以在不刷新頁(yè)面的情況下和后端進(jìn)行數(shù)據(jù)交換,更新頁(yè)面數(shù)據(jù),jQuery 等庫(kù)的盛行讓 JS 編寫(xiě)變得異常簡(jiǎn)單,Bootstrap 框架更讓前端的成本無(wú)限降低,大大提高了前端開(kāi)發(fā)的效率,JS 在前端領(lǐng)域前景非常廣闊。
隨著 Node 的發(fā)布,使得 JS 不僅可以運(yùn)行在前端,還可以運(yùn)行在服務(wù)器上。這對(duì) JS 來(lái)說(shuō)是一次質(zhì)的突破,Node.js 項(xiàng)目使得 JS 可以用于開(kāi)發(fā)服務(wù)器端的大型項(xiàng)目,網(wǎng)站的前后端都用 JS 開(kāi)發(fā)已經(jīng)稱(chēng)為了現(xiàn)實(shí)。
至此 JS 除了可以被瀏覽器解析,也可以作為后端語(yǔ)言使用,越來(lái)越多的應(yīng)用程序,將 JS 作為內(nèi)嵌的腳本語(yǔ)言,可以用來(lái)構(gòu)建移動(dòng)端 APP,開(kāi)發(fā) HTML 游戲,可以不依賴(lài)于瀏覽器,構(gòu)建桌面應(yīng)用程序。
可以預(yù)期,最終只使用 JS 這一種語(yǔ)言,就可以開(kāi)發(fā)出適應(yīng)不同平臺(tái)(包括桌面端,服務(wù)器端,手持端)的程序。在 Jeef Atwood 發(fā)布的博客中,他提出了著名的“Atwood定律”,即“任何能夠用 JavaScript 實(shí)現(xiàn)的應(yīng)用程序,最終都必將用 JavaScript 實(shí)現(xiàn)”。
相比學(xué)習(xí)其他語(yǔ)言,JS 很容易學(xué)習(xí)。只要有瀏覽器,就能運(yùn)行 JS 程序,只要有文本編輯器,就可以編寫(xiě) JS 代碼。不用安裝復(fù)雜的 IED(集成開(kāi)發(fā)環(huán)境)和編譯器。JS 的語(yǔ)法相對(duì)簡(jiǎn)單一些,本身的語(yǔ)法不是特別多,而且語(yǔ)言靈活,完全可以只用簡(jiǎn)單的命令,完成大部分的操作。
雖然 JS 的核心語(yǔ)法不難學(xué)習(xí),但是要真正學(xué)透還不是一件容易的事,JS 其實(shí)是很復(fù)雜的,隨著學(xué)習(xí),越能體會(huì)到他的強(qiáng)大。JS 要發(fā)揮作用,必須與其他組件配合,這些外部組件五花八門(mén),而且數(shù)量龐大,涉及到了網(wǎng)絡(luò)應(yīng)用的各個(gè)方面,比如編輯器組件,QQ 空間提供的關(guān)注組件等,要掌握他們并非易事,必須下狠功夫。JS 語(yǔ)言有一些設(shè)計(jì)缺陷,在一些地方會(huì)出現(xiàn)怪異的運(yùn)行結(jié)果,各主流瀏覽器對(duì)于 JS 的支持不盡相同,兼容性是最讓人頭疼的事情,學(xué)習(xí) JS,很大一部分時(shí)間都是用來(lái)搞清除哪些地方有陷阱。
三、JavaScript 組成
JS 由三部分組成:
ECMAScript:也叫解釋器,充當(dāng)翻譯角色,這是 JS 的核心部分。
DOM:文檔對(duì)象模型(Document Object Model)。DOM 賦予了 JS 操作 HTML 的能力,即 document 操作。
BOM:瀏覽器對(duì)象模型(Browser Object Model)。BOM 賦予了 JS 操作瀏覽器的能力,即 window 操作。?
四、JavaScript 用法
HTML 中的腳本必須位于標(biāo)簽之間??梢栽?HTML 文檔中放入不限數(shù)量的腳本。腳本可位于 HTML 的 或 中,或者同時(shí)存在于這兩個(gè)部分中。通常的做法是把函數(shù)放在? 中,或者放在頁(yè)面底部,這樣不會(huì)干擾頁(yè)面的內(nèi)容?!∫部梢园涯_本保存在外部文件中,文件擴(kuò)展名為 .js,外部文件通常包含被多個(gè)網(wǎng)頁(yè)使用的代碼。注意:在使用外部腳本時(shí),腳本內(nèi)不能包含標(biāo)簽。
5、編寫(xiě) JavaScript 的流程
首先,也是最重要的,先要搞清楚網(wǎng)頁(yè)效果的實(shí)現(xiàn)原理,要達(dá)到什么目的,需要對(duì)哪些屬性做出修改,以及用戶(hù)的哪些操作,通過(guò)用戶(hù)的某種操作,一步步的構(gòu)思 JS 實(shí)現(xiàn)的方法。
然后 HTML+CSS 布局頁(yè)面。
接著選擇需要修改的屬性的名稱(chēng)(id 或 class)。
再根據(jù)用戶(hù)的操作,選擇相應(yīng)的觸發(fā)事件。
最后,在事件中,根據(jù)第一步的構(gòu)思,編寫(xiě) JS 代碼。