最近在面試的時候,發現有一些關於Servlet/JSP的問題,記憶有點模糊,所以做一點這方面的總結如下:
1、 Servlet和GCI的區別?
答:Servlet是基於Java編寫的,處於服務器進程中,它能夠通過多線程方式運行service()方法,一個實例可以服務於多個請求,而且一般不會銷毀;而CGI對每個請求都生產新的進程,服務完成后銷毀,所以從效率上低於Servlet。
2、 牢記Servlet的生命周期?
答:Servlet的生命周期從Web加載Servlet開始,通過調用Servlet的init()方法進行Servlet的初始化,通過調用service()方法處理請求,,根據不同的請求調用不同的方法。服務結束,Web容器調用Servlet的destroy()方法。
3、 JSP是Servlet技術的擴展,更加強調表現層的處理。Servlet和JSP最主要的不同點在於,答:服務器端有一個JSP容器,主要處理JSP頁面請求,容器首先把JSP轉成一Servlet,所有的JSP元素都會被轉換為Java代碼,然后編譯這個Servlet類。JSP側重於視圖,Servlet主要用於控制業務邏輯。
4、 JSP有那些內置對象?作用分別是什么?
·HttpServletRequest類的request對象:代表請求對象,主要用於接收客戶端通過HTTP協議連接傳輸到服務端的數據
·HttpServletResponse類的response對象:代表響應對象,主要用於向客戶端回應發送數據。
·ServletContext類的application對象:主要用於保存所有應用系統中的共有數據,它是一個共享的內置對象,即是一個容器中的多個用戶共享一個application對象,只要沒有關閉服務器,application一直存在。
·HttpSessoin類的session對象:主要用來區分每個用戶信息和會話狀態。
·Pagecontext類的pageContext對象:主要用來管理頁面屬性,代表了一個頁面的上下文,pageContext對象的創建和初始化都是有容器自動完成的。
·Object類的page對象:代表正在運行的JSP頁面,也就是說page對象代表了JSP被編譯后的Servlet。page對象只能用在當前的JSP范圍之內。
·ServletConfig類的config對象:代碼片段配置對象,用於初始化Servlet的配置參數。
·JspWriter類的out對象:主要用於向客戶端輸出數據。
·exception對象:處理JSP文件執行時發生的錯誤和異常,只要在錯誤頁面里才能使用。
5、 說出JSP的6個動作指令和作用?
·jsp:include:在頁面被請求的時候引入一個靜態或動態的文件。
·jsp:useBean:尋求或者實例化一個JavaBean。
·jsp:setProperty:設置JavaBean的屬性。
·jsp:getProperty:獲取某個JavaBean的屬性。
·jsp:forward:把請求轉到一個新的頁面(html文件、jsp文件或者一個程序段)。
·jsp:plugin:根據瀏覽器類型為Java插件生成object或embed標記。
6、 JSP的3種跳轉方式
·response.sendRedirct()方法:重新發送請求。
·response.setHeader()方法:與response.sendRedirect()方法。
·<jsp:forward page=”跳轉的頁面”/>:是服務器端的跳轉。