1、jsp 和 servlet 有什麼差別?
jsp經過編譯後變成了Servlet.(JSP的本質就是Servlet,JVM只能辨識java的類,不能辨識JSP的程式碼,Web容器將JSP的程式碼編譯成JVM能夠識別的java類別)
jsp更擅長表現於頁面顯示,servlet更擅長於邏輯控制。
Servlet中沒有內建對象,Jsp中的內建物件都是必須透過HttpServletRequest對象,HttpServletResponse物件以及HttpServlet物件得到。
Jsp是Servlet的一種簡化,使用Jsp只需要完成程式設計師需要輸出到客戶端的內容,Jsp中的Java腳本如何鑲嵌到一個類別中,由Jsp容器完成。而Servlet則是個完整的Java類,這個類別的Service方法用來產生對客戶端的回應。
(相關教學推薦:java入門程式)
2、jsp 有哪些內建物件?作用分別是什麼?
JSP有9個內建物件:
request:封裝客戶端的請求,其中包含來自GET或POST請求的參數;
response:封裝伺服器對客戶端的回應;
pageContext:透過該物件可以取得其他物件;
session:封裝使用者會話的物件;
application:封裝伺服器運行環境的物件;
out:輸出伺服器回應的輸出流對象;
config:Web應用程式的設定物件;
page:JSP頁面本身(相當於Java程式中的this);
exception:封裝頁面拋出例外的物件。
(相關影片教學推薦:java影片教學)
3、說 jsp 的 4 種作用域?
JSP中的四個作用域包括page、request、session和application,具體來說:
page代表與一個頁面相關的物件和屬性。
request代表與Web客戶機發出的一個請求相關的物件和屬性。一個請求可能跨越多個頁面,涉及多個Web元件;需要在頁面顯示的臨時資料可以置於此作用域。
session代表與某個使用者與伺服器建立的一次會話相關的物件和屬性。跟某個使用者相關的資料應該放在使用者自己的session中。
application代表與整個Web應用程式相關的物件和屬性,它實質上是跨越整個Web應用程序,包括多個頁面、請求和會話的一個全域作用域。
4、session 和 cookie 有什麼差別?
由於HTTP協定是無狀態的協議,所以當服務端需要記錄用戶的狀態時,就需要用某種機制來識具體的用戶,這個機制就是Session .典型的場景例如購物車,當你點擊下單按鈕時,由於HTTP協議無狀態,所以並不知道是哪個用戶操作的,所以服務端要為特定的用戶創建了特定的Session,用用於標識這個用戶,並且追蹤用戶,這樣才知道購物車裡面有幾本書。這個Session是保存在服務端的,有一個唯一識別。在服務端保存Session的方法很多,記憶體、資料庫、檔案都有。集群的時候也要考慮Session的轉移,在大型的網站,一般會有專門的Session伺服器集群,用來保存用戶會話,這個時候Session 資訊都是放在內存的,使用一些緩存服務比如Memcached之類的來放Session。
思考一下服務端如何辨識特定的客戶?這時候Cookie就登場了。每次HTTP請求的時候,客戶端都會傳送對應的Cookie訊息到服務端。實際上大多數的應用程式都是用Cookie 來實作Session追蹤的,第一次建立Session的時候,服務端會在HTTP協定中告訴客戶端,需要在Cookie 裡面記錄一個Session ID,以後每次要求把這個會話ID傳送到伺服器,我就知道你是誰了。有人問,如果客戶端的瀏覽器停用了 Cookie 怎麼辦?一般這種情況下,會使用一種叫做URL重寫的技術來進行會話跟踪,即每次HTTP交互,URL後面都會被附加上一個諸如 sid=xxxxx 這樣的參數,服務端據此來識別用戶。
Cookie其實還可以用在一些方便使用者的場景下,設想你某次登陸過一個網站,下次登入的時候不想再輸入帳號了,怎麼辦?這個資訊可以寫到Cookie裡面,造訪網站的時候,網站頁面的腳本可以讀取這個訊息,就自動幫你把用戶名給填了,能夠方便一下用戶。這也是Cookie名稱的由來,給使用者的一點甜頭。所以,總結一下:Session是在服務端保存的資料結構,用來追蹤使用者的狀態,這個資料可以保存在叢集、資料庫、檔案中;Cookie是客戶端保存使用者資訊的一種機制,用來記錄用戶的一些訊息,也是實現Session的一種方式。
5、說一下 session 的工作原理?
其實session是一個存在伺服器上的類似一個散列表格的檔案。裡面存有我們需要的訊息,在我們需要用的時候可以從裡面取出。類似一個大號的map吧,裡面的鍵存儲的是用戶的sessionid,用戶向伺服器發送請求的時候會帶上這個sessionid。這時就可以從中取出對應的數值了。
推薦教學:java面試題
以上是2020全新Java面試題目-Java Web(一)的詳細內容。更多資訊請關注PHP中文網其他相關文章!