1. 閱讀文章
復習
JAVA基礎——接口(全網最詳細教程)
Java之對象的多態性(使用生活中通俗的例子講解)
新學
JavaWeb——Servlet(全網最詳細教程包括Servlet源碼分析)
有用
創建Dynamic Web Project工程(詳細的科普文)
2. 問題解答
1. 什么是服務器?什么是客戶端?
客戶端(Client)是發送請求(request),服務器端(Service)是響應請求(response),返回相應的資源數據
一般web的客戶端就是瀏覽器(PC或移動設備),進行網頁資源的請求,服務器響應之后返回數據,再由瀏覽器進行渲染。
2. var 、 let 、const 區別
從 2020 年開始,ES2015(ES6)添加了let 、const
- var
當在最外層函數的外部聲明var變量時,作用域是全局的。這意味著在最外層函數的外部用var聲明的任何變量都可以在windows中使用。
當在函數中聲明var時,作用域是局部的。這意味著它只能在函數內訪問。
var 變量可以重新聲明和修改
這意味著我們可以在相同的作用域內執行下面的操作,并且不會出錯
變量提升是 JavaScript 的一種機制:在執行代碼之前,變量和函數聲明會移至其作用域的頂部
var聲明的變量會被提升到其作用域的頂部,并使用 undefined 值對其進行初始化.
- let
let現在已經成為變量聲明的首選,因為它是對var聲明的改進。
let 是塊級作用域。在帶有let的塊中聲明的變量僅可在該塊中使用
就像var一樣,用let聲明的變量可以在其范圍內被修改。但與var不同的是,let變量無法在其作用域內被重新聲明
使用let,是比var更好的選擇。當使用let時,你不必費心思考變量的名稱,因為變量僅在其塊級作用域內存在。
用let聲明的變量會被提升到其作用域的頂部,不會對值進行初始化
因此,如果你嘗試在聲明前使用let變量,則會收到Reference Error。
- Const
像let聲明一樣,const聲明只能在聲明它們的塊級作用域中訪問
const 不能被修改并且不能被重新聲明。這意味著用const聲明的變量的值保持不變。不能修改或重新聲明。
因此,每個const聲明都必須在聲明時進行初始化。
當用const聲明對象時,這種行為卻有所不同。雖然不能更新const對象,但是可以更新該對象的屬性。
就像let一樣,const聲明也被提升到頂部,但是沒有初始化
參考資料
JavaScript 中的 Var、Let 和 Const 有什么區別
3. session、token、cookie區別
session 由服務端創建,cookie由客戶端創建。
token是用戶登錄后服務器端生成,并將其發送到客戶端。
http是無狀態的,即這次訪問與上次訪問是沒有關系的。所以如果想要判斷如果兩次請求是同一個人訪問的,則需要使用到cookie、token、session
cookie是客戶端發送給服務器的。
服務器生成一個 session 會話,并生成一個包含cookie的請求頭返回給客戶端
再此后客戶端再訪問服務器時攜帶這個cookie,cookie 中攜帶有用戶信息。
服務端接收到請求,驗證 cookie 信息
Token是一個由一串字符組成的令牌,用于在計算機系統中進行身份驗證和授權
Token 是一種在客戶端和服務端之間傳遞身份信息的方式。
當用戶登錄成功后,服務端會生成一個 Token,將其發送給客戶端。
服務器根據Token來限制用戶的行為,防止發生被攻擊的風險
參考
一文徹底搞清session、cookie、token的區別