面試官不同著重的方向也不同,不過問Servlet的話,以下內容由很大幾率都會被問到,可以作為參考,可以沒有說Servlet問題就這麼多哦。
1、servlet生命週期
#初始化:web容器載入servlet,呼叫init()方法;
處理請求:允許service()方法,service()自動執行與請求對應的doXXX方法(doGet或doPost)
銷毀:服務結束後,web容器呼叫servlet的distory()方法銷毀servlet
2、jsp與servlet 有什麼差別。
jsp本質上是servlet,但是兩者的創建方式不同,servlet都是java程式碼構成,用於流程控制和事務處理,而jsp由html和jsp標籤構成,可以方便地編寫動態網頁。 jsp和servlet主要有兩方面不同:編譯:jsp修改後就可立刻看到效果,不需要編譯,而servlet需要編譯。轉換:jsp是動態網頁開發技術是運行在服務端的腳本語言,而servlet是web伺服器的程式設計技術,所以jsp在運行時就是要轉換成servlet。
3、get和post有何區別
get參數傳遞通過url,post放在resquest body中;
get請求參數有長度限制,post沒有
get不安全,因為參數暴露在url中。
get請求只能進行url編碼。 post支援多種編碼
get請求參數會被完整保留在瀏覽歷史記錄,而post不會被保留。
get和post本質就是tcp鏈接,並無差別。但是由於HTTP的規定和瀏覽器/伺服器的限制,導致他們在應用過程中體現出一些不同。
get產生一個tcp封包;post產生兩個tcp封包。
4、doGet與doPost方法的兩個參數是什麼
HttpServletRequest:封裝與請求相關的資訊
HttpServletResponse:封裝了與回應相關的資訊
5、jsp有哪些內建物件
request :包含用戶端請求的資訊
response:包含伺服器傳回客戶端的回應訊息
session:與請求有關的會話期
pageContext:管理網頁屬性
application:伺服器啟動創建,伺服器關閉停止,為多個應用程式保存訊息
out:傳送資料給客戶端
config:servlet的架構元件
#page:指網頁本身
exception:才可針對錯誤頁面使用
6、四大作用域
page:一個頁面
request:一次請求
session:一次會話
application:伺服器從啟動到停止
7、jsp中動態include和靜態include有什麼差別
動態include用jsp:include動作實作< ;jsp:include page="include.jsp" flush="true"/> 他總是會檢查所含文件中的變化,適合用於包含動態頁面並且可以帶參數。
靜態include以include偽代碼實現,決定不會檢查所含檔案的變化,適用於包含靜態介面<%@ include file="included.htm"%>
#8、forward和redirect的區別
轉送與重定向:
#第一點:從網址列來說forward是伺服器請求資源,伺服器直接存取目標位址的url,把目標url的回應內容讀取過來,然後發給瀏覽器,瀏覽器並不知道伺服器發送的內容從哪裡來的,所以網址列還是原來的url。 redirect是伺服器根據邏輯,發送狀態碼,告訴瀏覽器重新去請求那個位址,所以網址列會顯示新的url 。
第二點:從資料共享來說,forward轉送頁面和轉發到的頁面共享request裡面的數據,redirect不能共享數據。
第三點:從運行地方來說,forward一般用於登陸的時候,會根據角色轉送到相對於的模組。
redirect一般用於使用者登出登陸時返回主頁或跳到其他頁面時。
第四點:從效率來說forward高,redirect低。
以上是面試問servlet怎麼回答的詳細內容。更多資訊請關注PHP中文網其他相關文章!