2020年java web基礎(chǔ)面試題

2020年java web基礎(chǔ)面試題

長沙一度軟件培訓(xùn)      2022-03-27 22:10:01     11

2020年java web基礎(chǔ)面試題,  jsp和servlet有什么區(qū)別?  jsp經(jīng)編譯后就變成了Servlet.(JSP的本質(zhì)就是Servlet,JVM只能識別java的類,不能識別JSP的代

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細(xì)介紹


  jsp和servlet有什么區(qū)別?


  jsp經(jīng)編譯后就變成了Servlet.(JSP的本質(zhì)就是Servlet,JVM只能識別java的類,不能識別JSP的代碼,Web容器將JSP的代碼編譯成JVM能夠識別的java類)


  jsp更擅長表現(xiàn)于頁面顯示,servlet更擅長于邏輯控制。


  Servlet中沒有內(nèi)置對象,Jsp中的內(nèi)置對象都是必須通過HttpServletRequest對象,HttpServletResponse對象以及HttpServlet對象得到。


  Jsp是Servlet的一種簡化,使用Jsp只需要完成程序員需要輸出到客戶端的內(nèi)容,Jsp中的Java腳本如何鑲嵌到一個類中,由Jsp容器完成。而Servlet則是個完整的Java類,這個類的Service方法用于生成對客戶端的響應(yīng)。


  jsp有哪些內(nèi)置對象?作用分別是什么?


  JSP有9個內(nèi)置對象:


  request:封裝客戶端的請求,其中包含來自GET或POST請求的參數(shù);


  response:封裝服務(wù)器對客戶端的響應(yīng);


  pageContext:通過該對象可以獲取其他對象;


  session:封裝用戶會話的對象;


  application:封裝服務(wù)器運行環(huán)境的對象;


  out:輸出服務(wù)器響應(yīng)的輸出流對象;


  config:Web應(yīng)用的配置對象;


  page:JSP頁面本身(相當(dāng)于Java程序中的this);


  exception:封裝頁面拋出異常的對象。


  說一下jsp的4種作用域?


  JSP中的四種作用域包括page、request、session和application,具體來說:


  page代表與一個頁面相關(guān)的對象和屬性。


  request代表與Web客戶機(jī)發(fā)出的一個請求相關(guān)的對象和屬性。一個請求可能跨越多個頁面,涉及多個Web組件;需要在頁面顯示的臨時數(shù)據(jù)可以置于此作用域。


  session代表與某個用戶與服務(wù)器建立的一次會話相關(guān)的對象和屬性。跟某個用戶相關(guān)的數(shù)據(jù)應(yīng)該放在用戶自己的session中。


  application代表與整個Web應(yīng)用程序相關(guān)的對象和屬性,它實質(zhì)上是跨越整個Web應(yīng)用程序,包括多個頁面、請求和會話的一個全局作用域。


  session和cookie有什么區(qū)別?


  由于HTTP協(xié)議是無狀態(tài)的協(xié)議,所以服務(wù)端需要記錄用戶的狀態(tài)時,就需要用某種機(jī)制來識具體的用戶,這個機(jī)制就是Session.典型的場景比如購物車,當(dāng)你點擊下單按鈕時,由于HTTP協(xié)議無狀態(tài),所以并不知道是哪個用戶操作的,所以服務(wù)端要為特定的用戶創(chuàng)建了特定的Session,用用于標(biāo)識這個用戶,并且跟蹤用戶,這樣才知道購物車?yán)锩嬗袔妆緯?/p>


  這個Session是保存在服務(wù)端的,有一個唯一標(biāo)識。在服務(wù)端保存Session的方法很多,內(nèi)存、數(shù)據(jù)庫、文件都有。


  集群的時候也要考慮Session的轉(zhuǎn)移,在大型的網(wǎng)站,一般會有專門的Session服務(wù)器集群,用來保存用戶會話,這個時候Session信息都是放在內(nèi)存的,使用一些緩存服務(wù)比如Memcached之類的來放Session。


  思考一下服務(wù)端如何識別特定的客戶?


  這個時候cookie就登場了。每次HTTP請求的時候,客戶端都會發(fā)送相應(yīng)的cookie信息到服務(wù)端。實際上大多數(shù)的應(yīng)用都是用cookie來實現(xiàn)Session跟蹤的,第一次創(chuàng)建Session的時候,服務(wù)端會在HTTP協(xié)議中告訴客戶端,需要在cookie里面記錄一個SessionID,以后每次請求把這個會話ID發(fā)送到服務(wù)器,我就知道你是誰了。


  有人問,如果客戶端的瀏覽器禁用了cookie怎么辦?


  一般這種情況下,會使用一種叫做URL重寫的技術(shù)來進(jìn)行會話跟蹤,即每次HTTP交互,URL后面都會被附加上一個諸如sid=xxxxx這樣的參數(shù),服務(wù)端據(jù)此來識別用戶。


  cookie其實還可以用在一些方便用戶的場景下,設(shè)想你某次登陸過一個網(wǎng)站,下次登錄的時候不想再次輸入賬號了,怎么辦?


  這個信息可以寫到cookie里面,訪問網(wǎng)站的時候,網(wǎng)站頁面的腳本可以讀取這個信息,就自動幫你把用戶名給填了,能夠方便一下用戶。這也是cookie名稱的由來,給用戶的一點甜頭。


  所以,總結(jié)一下:


  Session是在服務(wù)端保存的一個數(shù)據(jù)結(jié)構(gòu),用來跟蹤用戶的狀態(tài),這個數(shù)據(jù)可以保存在集群、數(shù)據(jù)庫、文件中;


  cookie是客戶端保存用戶信息的一種機(jī)制,用來記錄用戶的一些信息,也是實現(xiàn)Session的一種方式。


  說一下session的工作原理?


  其實session是一個存在服務(wù)器上的類似于一個散列表格的文件。里面存有我們需要的信息,在我們需要用的時候可以從里面取出來。


  類似于一個大號的map吧,里面的鍵存儲的是用戶的sessionid,用戶向服務(wù)器發(fā)送請求的時候會帶上這個sessionid。這時就可以從中取出對應(yīng)的值了。


  如果客戶端禁止cookie能實現(xiàn)session還能用嗎?


  cookie與Session,一般認(rèn)為是兩個獨立的東西,Session采用的是在服務(wù)器端保持狀態(tài)的方案,而cookie采用的是在客戶端保持狀態(tài)的方案。


  但為什么禁用cookie就不能得到Session呢?


  因為Session是用SessionID來確定當(dāng)前對話所對應(yīng)的服務(wù)器Session,而SessionID是通過cookie來傳遞的,禁用cookie相當(dāng)于失去了SessionID,也就得不到Session了。


  假定用戶關(guān)閉cookie的情況下使用Session,其實現(xiàn)途徑有以下幾種:


  設(shè)置php.ini配置文件中的“session.use_trans_sid=1”,或者編譯時打開打開了“--enable-trans-sid”選項,讓PHP自動跨頁傳遞SessionID。


  手動通過URL傳值、隱藏表單傳遞SessionID。


  用文件、數(shù)據(jù)庫等形式保存SessionID,在跨頁過程中手動調(diào)用。



  以上就是長沙一度軟件培訓(xùn)java培訓(xùn)機(jī)構(gòu)的小編針對“2020年java web基礎(chǔ)面試題”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。


Java基礎(chǔ)面試題 Java面試題

培訓(xùn)啦提醒您:交易時請核實對方資質(zhì),對于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險,謹(jǐn)防上當(dāng)。