JavaWeb相關面試題!
- 2019 年 10 月 5 日
- 筆記

- 簡述Servlet和JSP的關係
答∶JSP是以另外一種方式實現的Servlet,Servlet是JSP的早期版本,在JSP中,更加註重頁面的表現,而在Servlet中則更注重業務邏輯的實現。
因此,當編寫的頁面顯示效果比較複雜時,首選是JSP。或者在開發過程中,HTML程式碼經常發生變化,而Java程式碼則相對比較固定時,可以選擇JSP。而我們在處理業務邏輯時,首選則是Servlet。 同時,JSP只能處理瀏覽器的請求,而Servlet則可以處理一個客戶端的應用程式請求。因此,Servlet加強了Web伺服器的功能。
- 簡述Servlet的生命周期。(企業筆試題)
答∶Servlet運行機制和Applet類似,Servlet是載伺服器端運行的,但是Applet是在客戶端運行的。Servlet是javax.servlet包中HttpServlet類的子類,由伺服器完成該子類的創建和初始化。
Servlet的生命周期主要由3個過程組成。
1、init()方法:伺服器初始化Servlet。
2、service()方法:初始化完畢,Servlet對象調用該方法相應客戶的請求。
3、destroy()方法:調用該方法消滅Servlet對象。
其中,init()方法只在Servlet第一次被請求載入的時候被調用一次,當有客戶再請求Servlet服務時,Web伺服器將啟動一個新的執行緒,在該執行緒中,調用service方法相應客戶的請求。
- jsp有哪些內置對象?作用分別是什麼?
答∶JSP共有以下9種基本內置組件(可與ASP的6種內部組件相對應):
request |
用戶端請求,此請求會包含來自GET/POST請求的參數 |
---|---|
response |
網頁傳回用戶端的回應 |
pageContext |
網頁的屬性是在這裡管理 |
application servlet |
正在執行的內容 |
config servlet |
構架部件 |
session |
與請求有關的會話期 |
out |
用來傳送回應的輸出 |
page JSP |
網頁本身 |
exception |
針對錯誤網頁,未捕捉的例外 |
- jsp有哪些動作?作用分別是什麼?
答∶JSP共有以下6種基本動作
jsp:include |
在頁面被請求的時候引入一個文件。 |
---|---|
jsp:useBean |
尋找或者實例化一個JavaBean。 |
jsp:setProperty |
設置JavaBean的屬性。 |
jsp:getProperty |
輸出某個JavaBean的屬性。 |
jsp:forward |
把請求轉到一個新的頁面。 |
jsp:plugin |
根據瀏覽器類型為Java插件生成OBJECT或EMBED標記 |
- MVC的各個部分都有那些技術來實現?如何實現?
答∶MVC是Model-View-Controller的簡寫。"Model" 代表的是應用的業務邏輯
(通過JavaBean,EJB組件實現), "View" 是應用的表示面(由JSP頁面產生),
"Controller" 是提供應用的處理過程式控制制(一般是一個Servlet),通過這種設計模型把應用邏輯,處理過程和顯示邏輯分成不同的組件實現。這些組件可以進行交互和重用。
- 轉發和重定向的區別
答∶
forward方式:request.getRequestDispatcher("/somePage.jsp").forwardrequest, response);
redirect方式:response.sendRedirect("/somePage.jsp");forward是伺服器內部重定向, 程式收到請求後重新定向到另一個程式,客戶機並不知道;redirect則是伺服器收到請求後發送一個狀態頭給客戶,客戶將再請求一次,這裡多了兩次網路通訊的來往。當然forward也有缺點,就是forward的頁面的路徑如果是相對路徑就會有些問題了。
forward 會將 request state , bean 等等資訊帶往下一個 jspredirect 是送到 client 端後再一次 request ,所以資料不被保留.使用 forward 你就可以用 getAttribute() 來取的前一個 jsp 所放入的 bean 等等資料
- 使用HTTP協議將客戶端的請求傳送到伺服器端有哪兩種方式?請簡述它們的區別
答∶1) get是從伺服器上獲取數據,post是向伺服器傳送數據。
2) 在客戶端,Get方式在通過URL提交數據,數據在URL中可以看到;POST方式,數據放置在HTML HEADER內提交。
3) 對於get方式,伺服器端用request.getQueryString()可以獲取GET請求參數的變數值,對於post方式,伺服器端用request.getParameter獲取提交的數據。
4) GET方式提交的數據最多只能有1024位元組,而POST則沒有此限制。
5) 安全性問題。正如在(1)中提到,使用 Get 的時候,參數會顯示在地址欄上,而 Post 不會。所以,如果這些數據是中文數據而且是非敏感數據,那麼使用 get;如果用戶輸入的數據不是中文字元而且包含敏感數據,那麼還是使用 post為好。
- jsp主要內置對象有?
答∶
request |
---|
response |
out |
exception |
session |
application |
config |
pageContext |
page |
- 請簡述Cookie, Session 和Application它們的區別
答∶1) Cookie會在客戶端硬碟上創建Cookie文件
2) Session大部分情況下會在伺服器端硬碟上寫入Cookie文件
3) Cookie安全性最低
4) Application 表示Servlet上下文環境,在整個WEB應用中只有一個Application對象,用於存儲些全局性的數據
- 三個Statment區別,用法
答∶Statment,基本的;PreparedStatement是可編譯的,提高效率,callablestatment,存儲過程
- 什麼是mvc模式?
答∶是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟體設計典範,用一種業務邏輯、數據、介面顯示分離的方法組織程式碼,將業務邏輯聚集到一個部件裡面,在改進和個性化訂製介面及用戶交互的同時,不需要重新編寫業務邏輯。MVC被獨特的發展起來用於映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶介面的結構中。
模型 |
model |
---|---|
視圖 |
view |
控制器 |
controller |
Model(模型)是應用程式中用於處理應用程式數據邏輯的部分。通常模型對象負責在資料庫中存取數據。
View(視圖)是應用程式中處理數據顯示的部分。通常視圖是依據模型數據創建的。
Controller(控制器)是應用程式中處理用戶交互的部分。通常控制器負責從視圖讀取數據,控制用戶輸入,並向模型發送數據。