servlet与jsp面试题
1.什么是Servlet?
用java語言編寫的運行在服務器上,處理用戶請求做出相應的小服務程序.
2.Servlet的生命周期?
加載實例化階段會加載項目的web.xml配置文件,并解析得到所有配置好的servlet-class中配置的包名+類名,通過反射機制就實例化好了包名+類名對應的Servlet類對象。
?Servlet 初始化后調用 init () 方法。
?Servlet 調用 service() 方法來處理客戶端的請求。
?Servlet 銷毀前調用 destroy() 方法。
?最后,Servlet 是由 JVM 的垃圾回收器進行垃圾回收的。
Servlet 的生命周期。按照功能的不同,大致可以將 Servlet 的生命周期分為四個階段,分別是加載實例化階段、初始化階段、運行階段【處理請求】和銷毀階段。
1.加載實例化階段
當Servlet容器啟動以后,會加載項目的web.xml配置文件,并解析得到所有配置好的servlet-class中配置的包名+類名,通過反射機制就實例化好了包名+類名對應的Servlet類對象。
2.初始化階段
當客戶端向 Servlet 容器發出 HTTP 請求要求訪問 Servlet 時,Servlet 容器首先會解析請求,檢查內存中是否已經有了該 Servlet 對象,如果有,則直接使用該 Servlet 對象,如果沒有,則創建 Servlet 實例對象,然后通過調用 init() 方法實現 Servlet 的初始化工作。需要注意的是,在 Servlet 的整個生命周期內,它的 init() 方法只能被調用一次。
3.運行階段【處理請求】
這是 Servlet 生命周期中最重要的階段,在這個階段中,Servlet 容器會為這個請求創建代表 HTTP 請求的 ServletRequest 對象和代表 HTTP 響應的 ServletResponse 對象,然后將它們作為參數傳遞給 Servlet 的 service() 方法。
service() 方法從 ServletRequest 對象中獲得客戶請求信息并處理該請求,通過 ServletResponse 對象生成響應結果。
在 Servlet 的整個生命周期內,對于 Servlet 的每一次訪問請求,Servlet 容器都會調用一次 Servlet 的 service() 方法,并且創建新的 ServletRequest 和 ServletResponse 對象,也就是說,service() 方法在 Servlet 的整個生命周期中會被調用多次。
4.銷毀階段
當服務器關閉或 Web 應用被移除出容器時,Servlet 隨著 Web 應用的關閉而銷毀。在銷毀 Servlet 之前,Servlet 容器會調用 Servlet 的 destroy() 方法,以便讓 Servlet 對象釋放它所占用的資源。在 Servlet 的整個生命周期中,destroy() 方法也只能被調用一次。
需要注意的是,Servlet 對象一旦創建就會駐留在內存中等待客戶端的訪問,直到服務器關閉或 Web 應用被移除出容器時,Servlet 對象才會銷毀。
3.Servlet中常見的接口?
1.Servlet接口
2.ServletConfig接口
3.ServletContext接口
4.ServletRequest---->HttpServletRequest接口
5.ServletResponse—>HttpServletResponse接口
6.HttpSession接口
4.forword與redirect的區別?
5.什么是會話跟蹤?
服務器處理程序實現記錄/保存請求/鏈接的狀態的過程就叫會話跟蹤。
6.為什么使用會話跟蹤?
瀏覽器發送的http請求,http請求使用的是http協議,而http協議是一種無狀態的協議,它不會去主動記錄使用這個http協議的用戶是誰,一旦請求發送成功,服務器做出響應以后,那么此時瀏覽器與服務器之間的鏈接就會消失,這時服務器就不知道請求來自哪里,是誰發送來的。
7.常見的會話跟蹤技術
2.URL 重寫 :URL 可以在后面附加參數,和服務器的請求一起發送,這些參數為名字 / 值對。
3 .Cookie: 一個 Cookie 是一個小的,已命名數據元素。服務器使用 SET-Cookie 頭標將它作為 HTTP響應的一部分傳送到客戶端,客戶端被請求保存 Cookie 值,在對同一服務器的后續請求使用一個Cookie 頭標將之返回到服務器。與其它技術比較, Cookie 的一個優點是在瀏覽器會話結束后,甚至在客戶端計算機重啟后它仍可以保留其值。
4 .Session :使用 setAttribute(String str,Object obj) 方法將對象捆綁到一個會話.
8.Cookie與Session 的區別?
9.get與post的區別?
10.什么是過濾器?
java過濾器能夠對目標資源的請求和響應進行截取。
11.什么是過濾器鏈?
由多個過濾器組成處理同一個請求/響應的Servlet組件。
將請求/響應傳遞給下一個過濾器/目標資源。
12.什么是Servlet的監聽器?
Servlet 事件監聽器是一個實現了特定接口的 Java 程序,這個程序專門用于監聽 Web 應用中 ServletContext、HttpSession 和 ServletRequest 等對象的創建和銷毀過程、監聽這些對象屬性的修改以及感知綁定到 HttpSession 域中的某個對象的狀態。
13.8種監聽器的類型?
14.HttpSession的鈍化與活化?
HttpSession 對象從內存中轉移至硬盤的過程稱為鈍化.
HttpSession 對象從持久化狀態變為運行狀態的過程稱為活化。
15.什么是JSP?
包含有java程序的運行在服務器上的頁面{HTML}.
16.jsp的執行過程?
當我們請求一個jsp頁面的時候,服務器收到jsp頁面的請求以后,會先將被訪問的jsp文件轉換成Servlet文件,繼續編譯轉換以后的Servlet文件得到Servlet文件對應的字節碼文件,接著執行這個編譯以后的字節碼文件,將運行結果封裝到響應對象中,返回給客戶端瀏覽器。
缺點:第一次訪問jsp頁面會比較慢一些。
17.include指令[<%@include file=”” %>]與include動作[<jsp:include page=""></jsp:include>]有什么區別?
18.Servlet與JSP的區別?
19.jsp的內置對象的名稱、類型、作用
總結
以上是生活随笔為你收集整理的servlet与jsp面试题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快学好这个去给学妹修热水器
- 下一篇: FreeRTOS及其应用,万字长文,基础