日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Servlet面试题整理

發布時間:2023/12/20 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Servlet面试题整理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Servlet和JSP面試題整理

1. forward和redirect的區別?

  • 地址欄顯示不同,forward地址欄顯示的是原來的地址,因為其是由服務器請求資源,直接訪問目標地址的URL,并讀取響應內容,然后將內容發送至瀏覽器,瀏覽器并不知道目標地址。redirect顯示的是新的URL,因為其是個是服務器根據邏輯發送狀態碼至瀏覽器,讓瀏覽器重新請求目標地址,所以瀏覽器是知道目標地址的。
  • 數據共享方式不同,forward轉發頁面和目標頁面均可共享request的數據。redirect則是不可以共享數據。
  • 通常應用的場景不同,forward一般用于用戶登陸的時候,根據角色轉發到相應的模塊。redirect一般用于用戶注銷登陸時返回主頁面和跳轉到其它的網站等
  • 效率不同,通常認為forward的效率要更高

2. session和cookie有什么區別?

  • cookie可以被客戶端禁用,但是客戶端無法禁用服務端的session。
  • 存儲的對象不同,session能夠存儲任意的Java對象,cookie只能存儲String類型的對象。
  • 數據存儲的地址不同,cookie數據保存在客戶端,session數據保存在服務器端

3. Servlet有什么優點?

  • 可移植性好
    Servlet是用Java語言編寫的,因此它可以移植到不同的操作系統和服務器上。
  • 安全性好
    Servlet也具有類型檢查特征,并利用Java的垃圾收集和沒有指針的設計,使得Servlet避免了內存管理等問題。
  • 高效性
    Servlet加載執行后會常駐服務器內存中,當再次受到客戶端的請求時,服務器會產生新的線程而不是進程為客戶端服務,這樣就提高了響應速度。

4. 對Servlet線程安全的理解

  • 客戶端第一次請求Servlet的時,tomcat會根據web.xml配置文件實例化servlet,當又有一個客戶端訪問該servlet的時候,不會再實例化該servlet,這就是JSP/Servlet容器默認采用的單實例多線程(這是造成線程安全的主因)處理多個請求的方式。
  • Servlet本身是無狀態的,一個無狀態的Servlet是絕對線程安全的,所以servlet是否線程安全是由它的實現來決定的,如果它內部的屬性或方法會被多個線程改變,它就是線程不安全的,反之,就是線程安全的。
  • 避免使用實例變量 ,避免使用非線程安全的集合,在多個Servlet中對某個外部對象(例如文件)的修改是務必加鎖,互斥訪問,都能夠提高線程安全性。

5. Servlet的生命周期

  • 當客戶端第一次請求Servlet時,Servlet被加載到內存中,容器會創建Servlet實例,并調用其init()方法進行初始化工作。
  • 容器創建請求對象和響應對象,然后調用Servlet的service()方法為客戶端提供服務。
  • 當Servlet不再被需要時,容器調用Servlet的destory()方法將Servlet實例銷毀。
  • 注: 當客戶端請求的Servlet已經存在于服務器內存時,容器會創建新的線程調用service()方法響應客戶端請求。在Servlet的整個生命周期中,init()方法和destory()方法只會被調用一次。

6. JSP中動態INCLUDE與靜態INCLUDE的區別?

  • 動態INCLUDE 用jsp:include動作實現它總是會檢查所含文件中的變化,并且可以帶參數,適合用于包含動態頁面。
  • 靜態INCLUDE 用include偽碼實現,不會檢查所含文件的變化,適用于包含靜態頁面。

7. get和post有何區別?

  • get參數傳遞通過url,post放在resquest body中
  • get請求參數有長度限制,post沒有
  • get不安全,因為參數暴露在url中。post安全,參數是隱藏的
  • get請求只能進行url編碼。post支持多種編碼
  • get請求參數會被完整保留在瀏覽歷史記錄,而post不會被保留。
  • get產生一個tcp數據包;post產生兩個tcp數據包。
  • get和post本質就是tcp鏈接,并無差別。但是由于HTTP的規定和瀏覽器/服務器的限制,導致他們在應用過程中體現出一些不同。

總結

以上是生活随笔為你收集整理的Servlet面试题整理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。