分類 | 描述 |
---|---|
應用層 | 負責具體業務和視圖展現,如網絡首頁及搜索輸入和結果展現 |
服務層 | 爲應用層提供服務支持,如用戶管理服務,購物車服務等 |
數據層 | 提供數據存儲訪問服務,如數據庫、緩存、文件、搜索引擎等 |
Get | Post | |
---|---|---|
請求行 | GET /user_login?username=admin&password=123 HTTP/1.1:表示使用Get請求 , 表示請求什麼路徑地址 ,表示使用什麼版本的協議 | POST /user_login HTTP/1.1:意思和get請求的意思同樣,只不過這裏的地址不再跟數據了。 而且這裏使用post請求 |
請求頭 | Host : 表示主機地址;User-Agent : 表示客戶端的信息;Accept : 聲明客戶端能夠接收什麼類型的數據;Accept-Language : 表示客戶端支持的語言;Accept-Encoding : 表示客戶端支持的壓縮格式;Referer : 表示請求從哪裏過來的;Connection : 表示鏈接狀態。 | Content-Type : 其實就是說明提交上去的數據是什麼類型數據 。 是一個通過url編碼的form表單數據;Content-Length : 提交的數據長度;Cache-Control : 表示再次請求的時候,是否讀緩存。 |
請求體 | get請求沒有請求體 | username=zhangsan&password=123:是以流的形式寫給服務器的 |
響應行 | HTTP/1.1 200:表示服務器也支持1.1的版本協議 , 對此次請求處理的狀態碼是200 | 與get方法相同 |
響應頭 | Content-Type: text/html;charset=UTF-8 : 表示返回的結果是一份網頁,使用的是UTF-8編碼;Content-Length: 75 : 返回的數據長度;Date: Sun, 21 May 2017 07:09:28 GMT : 響應時間 | 與get方法相同 |
響應體 | process login with admin : 123 | 與get方法相同 |
Cookie | Session | |
---|---|---|
存儲位置 | 數據存放在客戶端 | 數據存放在服務器端 |
存儲大小 | 存放的數據有限 | 依賴服務器的內存空間 |
安全性 | 數據不安全 | 數據相對比較安全 |
服務器負荷 | 減輕服務器壓力, 用戶磁盤佔用比較多 | 服務器壓力大一點 |
不會銷燬Session;由於session須要經過JSESSIONID來獲取,JSESSIONID 存儲在cookie中,關閉瀏覽器以後,cookie銷燬,再次訪問沒法獲取JSESSIONID ,天然不能獲取到原來的session。html
IOC-Inversion of Control,即控制反轉。數據庫
做用:將建立對象的動做交給容器來執行,無需本身手動建立。瀏覽器
DI-Dependency Injection,即依賴注入緩存
做用:只須要經過註解代表本身所須要的對象,容器就能夠動態的將某個依賴注入到組件之中,提高了組件重用的頻率。安全
經過反射和動態代理能夠實現出本身的IOC和DI服務器
首先,什麼是代理?cookie
舉個例子,經紀人和歌手,想找歌手出席商業活動,不須要直接找到歌手本人,只要聯繫經紀人就能夠,網絡
在此處經紀人就是起到一個代理的做用。session
既然有動態代理,就會有靜態代理,那麼什麼是靜態代理?函數
若代理類在程序運行前就已經存在,那麼這種代理方式被成爲靜態代理 ,這種狀況下的代理類一般都是咱們在Java代碼中定義的。 一般狀況下, 靜態代理中的代理類和委託類會實現同一接口或是派生自相同的父類。
搞清楚了什麼是靜態代理,那麼什麼是動態代理呢?
代理類在程序運行時建立的代理方式被成爲動態代理。
也就是說,代理類並非在Java代碼中定義的,而是在運行時根據咱們在Java代碼中的指示動態生成的。
相比於靜態代理,動態代理的優點在於能夠很方便的對代理類的函數進行統一處理,而不用修改每一個代理類的函數。
最後,如何使用動態代理?