參考內容
參考視頻:https://www.bilibili.com/video/BV1Y7411K7zz?p=325&vd_source=510ec700814c4e5dc4c4fda8f06c10e8
代碼地址:https://gitee.com/empirefree/SpringBoot-summarize/tree/尚硅谷-JavaWeb篇/
🔥1. 基本內容
1.1.基本概念
1.1.0 JavaEE/JavaSE
JavaEE:指的是一種規範,包含了目前tomcat,servlet等等,也包含了jdk(javaSE就包含了jdk裏面的各種包)
1.1.1 JavaWeb
Javaweb 是指java語言編寫的可通過瀏覽器訪問的程序總稱
1.1.2 Tomcat
tomcat是輕量級的Javaweb容器支持對jsp,servlet這種動態資源的加載,是市面上流行的Javaweb服務器。
1.1.3 Servlet
1.1.3.1 基本概念
Servlet是JavaEE規範之一,規範也是接口,也是Javaweb三大組件之一。
JavaWeb三大組件:servlet,filter過濾器,listener監聽器,是服務器上的java程序,負責接收與響應客戶端請求
各種不同版本支持的環境也有所不同tomcat -- servelet -- javaEE -- jdk環境
1.1.3.2 生命週期
整體伴隨項目的啓動和結束
- 執行Servlet構造器方法,init初始化方法
- 每次都會調用Service方法
- 執行Destory銷燬方法
1.1.3.3 HttpServlet
實際開發中,一般通過繼承httpServlet來實現Servlet接口
1.1.3.4 ServletConfig
Servlet配置信息類,可以獲取ServletContext對象
1.1.3.4 ServletContext
ServletContext是接口,表示上下文對象,一個web工程只有一個ServletContext對象實例,也是一個域對象(類似於Map對象)
1.1.3.5 HttpServletRequest/response
HttpServletRequest:tomcat接受到響應傳到Service的doget,dopost方法中,後續就可以HttpServletRequest使用入參數據。
HttpServletResponse:每次請求進來,Tomcat都會創建一個response對象傳給servlet使用
1.1.3.7 斜槓
斜槓一般表示絕對路徑
1.1.3.8 文件上傳下載
用Stream流進行傳輸
1.1.4 Http協議
1.1.4.1 基本概念
客戶端、服務端之間通信需要遵守的協議,兩者之間傳輸的數據叫報文
1.1.4.2 Get/Post請求
1. 請求行
1. 請求方式 get
2. 請求路徑: a.html
3. 請求協議版本號
2. 請求頭
1. Accept: 客戶端可以接受的數據類型
2. Accept-Language:告訴服務器客戶端客戶接受的語言類型
3. User-Agent:瀏覽器信息
4. Host:請求服務器的ip和端口
5. Connection:服務器回傳數據馬上關閉還是保持一小段時間連接
1.1.4.3 響應碼
1XX:服務器收到請求,需要請求者繼續執行操作
2XX:請求成功
3XX:重定向
4XX:客戶端錯誤
5XX:服務器錯誤
1.1.4.3 MIME類型
MIME是HTTP協議數據類型,包含文本,音頻之類的
1.1.4.4 Http請求步驟
1. 域名到ip的解析:由域名經過瀏覽器緩存、系統緩存、hosts文件、路由器緩存、遞歸搜索根域名服務器(DNS解析)
2. TCP/IP連接
3. 瀏覽器發送http請求,經過路由器轉發,通過服務器防火牆,到達服務器,服務器處理並返回HTML界面
4. 瀏覽器解析該HTML並展示
5. 服務器進行TCP四次揮手斷開連接
1.1.4.5 Https
https是通過SSL或TLS的通信加密協議
1. 客戶端發送https請求到服務端443端口
2. 服務端生成公私鑰給客戶端,客戶端進行一個隨機值的加密給服務端,服務端收到後進行解密,然後內容加密給客戶端
3. 客戶端收到加密內容後就能進行解密展示
http與https區別:
1. 端口不同,http是80端口,https是443端口
1. https加密和開銷多
1.1.5 Cookie
1.1.5.1 基本概念
服務器通知客戶端保存數據的一種技術,默認獲取到了之後每次請求都帶上cookie,默認4KB
1.1.5.2 生命週期
Maxage:
整數:指定秒數
負數:瀏覽器一關就會被刪除
0:馬上刪除cookie
1.1.6 Session
1.1.6.1 基本概念
Session就是一個接口(HttpSession),存在服務端,用來維護客戶端和服務端的會話。除了第一次調用是創建session之外,之後調用都是都是獲取前面創建好的session會話對象,默認超時時間30分鐘
1.1.6.2 Session-瀏覽器-Cookie
- 客戶端第一次請求,服務端根據request.getSession()先創建Session,傳給瀏覽器後瀏覽器Cookie的Key是JESSIONID,值是SessionId。Session保存在服務端內存中,每次重啓就沒了。之前用了SpringSession代理導致誤以爲兩者id不一致!!!
- 後續客戶端設置了Cookie之後就再請求服務端就能獲取創建好的Session對象
- 所以無論是服務器重啓,還是說瀏覽器關掉之後、手動刪了客戶端Cookie,下次請求的時候沒有攜帶Cookie,服務器都會重新創建一個新的Session會話
1.1.7 Filter
filter過濾器也包含了init創建,銷燬這些步驟
Filter也可以給所有service方法包含try,catch方法
1.1.7 ThreadLocal
ThreadLocal用於解決線程併發下數據安全問題
1.1.8 i18n國際化
語言規範,實現中英文轉換