1、JSP和Servlet有什么區別
- jsp經過編譯后變成類Servlet(JSP的本質就是Servelt,JVM只能識別java的類,不能識別jsp的代碼,于是web容器將jsp的代碼編譯成JVM能夠識別的java類,也就是servelt)
- jsp更擅長表現于頁面顯示,而servlet更擅長于邏輯控制
- jsp是servlet的一組簡化,使用jsp只需要完成程序員需要輸出到客戶端的內容,jsp中的java腳本如何鑲嵌到一個類中,由jsp容器完成;而servlet是個完整的java類,這個類的service方法(doGet(),doPost())用于生成對客戶端的響應
2、Jsp有哪些內置對象,作用是什么
- request:封裝客戶端的請求,其中包含來自Get或Post請求的參數
- response:封裝服務器對客戶端的響應
- pageCOntext:通過該對象可以獲取其他對象
- session:封裝用戶對話的對象
- application:封裝服務器運行環境的對象
- out:輸出服務器響應的輸出流對象
- config:Web應用的配置對象
- page:JSP頁面本身(相當于Java程序中的this)
- exception:封裝頁面拋出異常的對象
3、說一下jsp的4種作用域
- page:與一個頁面相關 的對象和屬性。只在當前頁面有效,所以不能作為在頁面間傳遞數據
- request:代表與web客戶端發出的一個請求相關 的對象和屬性。請求發送的時候創建,請求結束銷毀。所以可以在服務端跳轉時傳遞參數數據。 最常用的,因為周期短,需要在頁面顯示的臨時數據可以置于此作用域
- session:代表某個用戶與服務器建立的一次會話 相關的對象和屬性。跟某個用戶相關的數據應該放在用戶自己的session中,一般用于登錄驗證時存放用戶狀態。用戶第一次發起請求時創建,用戶退出時才銷毀
- application:代表與整個Web應用程序相關 的對象和屬性。它實質上是跨越整個Web應用程序,包括多個頁面、請求和會話的一個全局作用域
4、session和cookie的區別?
session :
HTTP協議時無狀態的協議,所以服務端需要記錄用戶的狀態時,就需要用某種機制來識別具體的用戶,這個機制就是session。服務端 要為每個不同的用戶創建特定的session,來標識這個用戶。這個session是保存在服務端的,有一個唯一標識 。在服務端保存session的方法有很多,內存、數據庫、文件都可以。當服務器集群的時候,如大型的網站,會有專門的session服務器集群,用來保存用戶會話,這個時候session是放在內存的,使用一些緩存服務來放session
cookie
服務端如何根據session來識別客戶呢?這時候就要用上cookie了。第一次創建session的時候,服務端會在HTTP協議中告訴客戶端,**需要在cookie里面記錄一個session ID ** ,以后每次請求把這個session ID發送到服務器,這樣服務器就能識別這個用戶了。如果客戶端的瀏覽器禁用了cookie怎么辦?這種情況下,會使用一種叫做URL重寫的技術來進行會話跟蹤,即每次HTTP交互,URL后面都會被附加上一個諸如sid=xxxx這樣的參數,服務端據此來識別用戶。
區別 :
- 保存的位置不同:session是保存在服務端,而cookie是保存在客戶端
- 存儲沒人不同:cookie只能存儲字符串,而session存儲結構類似于hashtable的結構,可以存放任何類型
- 存儲大小:cookie最多可以放4k大小的內容,session沒有限制
- session的安全性要高于cookie。很顯然,用戶信息是很隱秘的東西,放在客戶端是很危險的。
- 應用場景:cookie可以用來保存用戶的登錄信息,如果刪除cookie則下一次用戶仍需要重新登錄;session類似于拿著鑰匙去開鎖,拿到的就是我們個人的信息,一般可以在session中存放個人的信息或者購物車的信息