更新時間:2020-03-30 15:29:59 來源:動力節點 瀏覽2886次
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方法用于生成對客戶端的響應。
jsp有哪些內置對象?作用分別是什么?
JSP有9個內置對象:
request:封裝客戶端的請求,其中包含來自GET或POST請求的參數;
response:封裝服務器對客戶端的響應;
pageContext:通過該對象可以獲取其他對象;
session:封裝用戶會話的對象;
application:封裝服務器運行環境的對象;
out:輸出服務器響應的輸出流對象;
config:Web應用的配置對象;
page:JSP頁面本身(相當于Java程序中的this);
exception:封裝頁面拋出異常的對象。
說一下jsp的4種作用域?
JSP中的四種作用域包括page、request、session和application,具體來說:
page代表與一個頁面相關的對象和屬性。
request代表與Web客戶機發出的一個請求相關的對象和屬性。一個請求可能跨越多個頁面,涉及多個Web組件;需要在頁面顯示的臨時數據可以置于此作用域。
session代表與某個用戶與服務器建立的一次會話相關的對象和屬性。跟某個用戶相關的數據應該放在用戶自己的session中。
application代表與整個Web應用程序相關的對象和屬性,它實質上是跨越整個Web應用程序,包括多個頁面、請求和會話的一個全局作用域。
session和cookie有什么區別?
由于HTTP協議是無狀態的協議,所以服務端需要記錄用戶的狀態時,就需要用某種機制來識具體的用戶,這個機制就是Session.典型的場景比如購物車,當你點擊下單按鈕時,由于HTTP協議無狀態,所以并不知道是哪個用戶操作的,所以服務端要為特定的用戶創建了特定的Session,用用于標識這個用戶,并且跟蹤用戶,這樣才知道購物車里面有幾本書。
這個Session是保存在服務端的,有一個唯一標識。在服務端保存Session的方法很多,內存、數據庫、文件都有。
集群的時候也要考慮Session的轉移,在大型的網站,一般會有專門的Session服務器集群,用來保存用戶會話,這個時候Session信息都是放在內存的,使用一些緩存服務比如Memcached之類的來放Session。
思考一下服務端如何識別特定的客戶?
這個時候Cookie就登場了。每次HTTP請求的時候,客戶端都會發送相應的Cookie信息到服務端。實際上大多數的應用都是用Cookie來實現Session跟蹤的,第一次創建Session的時候,服務端會在HTTP協議中告訴客戶端,需要在Cookie里面記錄一個SessionID,以后每次請求把這個會話ID發送到服務器,我就知道你是誰了。
有人問,如果客戶端的瀏覽器禁用了Cookie怎么辦?
一般這種情況下,會使用一種叫做URL重寫的技術來進行會話跟蹤,即每次HTTP交互,URL后面都會被附加上一個諸如sid=xxxxx這樣的參數,服務端據此來識別用戶。
Cookie其實還可以用在一些方便用戶的場景下,設想你某次登陸過一個網站,下次登錄的時候不想再次輸入賬號了,怎么辦?
這個信息可以寫到Cookie里面,訪問網站的時候,網站頁面的腳本可以讀取這個信息,就自動幫你把用戶名給填了,能夠方便一下用戶。這也是Cookie名稱的由來,給用戶的一點甜頭。
所以,總結一下:
Session是在服務端保存的一個數據結構,用來跟蹤用戶的狀態,這個數據可以保存在集群、數據庫、文件中;
Cookie是客戶端保存用戶信息的一種機制,用來記錄用戶的一些信息,也是實現Session的一種方式。
說一下session的工作原理?
其實session是一個存在服務器上的類似于一個散列表格的文件。里面存有我們需要的信息,在我們需要用的時候可以從里面取出來。
類似于一個大號的map吧,里面的鍵存儲的是用戶的sessionid,用戶向服務器發送請求的時候會帶上這個sessionid。這時就可以從中取出對應的值了。
如果客戶端禁止cookie能實現session還能用嗎?
Cookie與Session,一般認為是兩個獨立的東西,Session采用的是在服務器端保持狀態的方案,而Cookie采用的是在客戶端保持狀態的方案。
但為什么禁用Cookie就不能得到Session呢?
因為Session是用SessionID來確定當前對話所對應的服務器Session,而SessionID是通過Cookie來傳遞的,禁用Cookie相當于失去了SessionID,也就得不到Session了。
假定用戶關閉Cookie的情況下使用Session,其實現途徑有以下幾種:
設置php.ini配置文件中的“session.use_trans_sid=1”,或者編譯時打開打開了“--enable-trans-sid”選項,讓PHP自動跨頁傳遞SessionID。
手動通過URL傳值、隱藏表單傳遞SessionID。
用文件、數據庫等形式保存SessionID,在跨頁過程中手動調用。
以上就是動力節點java培訓機構的小編針對“2020年java web基礎面試題”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習