Servlet面試題概括

尊重原創:http://blog.csdn.net/caohaicheng/article/details/38116481html

 

一、說一說Servlet生命週期java

Servlet生命週期包括三部分:web

初始化:Web容器加載servlet,調用init()方法瀏覽器

處理請求:當請求到達時,運行其service()方法。service()自動派遣運行與請求相對應的doXXX(doGet或者doPost)方法。安全

銷燬:服務結束,web容器會調用servlet的distroy()方法銷燬servlet。服務器

二、get提交和post提交有何區別session

(1)get通常用於從服務器上獲取數據,post通常用於向服務器傳送數據架構

(2)請求的時候參數的位置有區別,get的參數是拼接在url後面,用戶在瀏覽器地址欄能夠看到。post是放在http包的包體中。app

好比說用戶註冊,你不能把用戶提交的註冊信息用get的方式吧,那不是說把用戶的註冊信息都顯示在Url上了嗎,是不安全的。jsp

(3)能提交的數據有區別,get方式能提交的數據只能是文本,且大小不超過1024個字節,而post不只能夠提交文本還有二進制文件。

因此說想上傳文件的話,那咱們就須要使用post請求方式

(4)servlet在處理請求的時候分別對應使用doGet和doPost方式進行處理請求

三、JSP與Servlet有什麼區別

Servlet是服務器端的程序,動態生成html頁面發送到客戶端,可是這樣程序裏會有不少out.println(),java與html語言混在一塊兒

很亂,因此後來sun公司推出了JSP.其實JSP就是Servlet,每次運行的時候JSP都首先被編譯成servlet文件,而後再被編譯成

.class文件運行。有了jsp,在MVC項目中servlet再也不負責動態生成頁面,轉而去負責控制程序邏輯的做用,控制jsp與javabean

之間的流轉。

四、doGet與doPost方法的兩個參數是什麼

HttpServletRequest:封裝了與請求相關的信息

HttpServletResponse:封裝了與響應相關的信息

五、request.getAttribute()和request.getParameter

(1)有setAttribute,沒有setParameter方法

(2)getParameter獲取到的值只能是字符串,不能夠是對象,而getAttribute獲取到的值是Object類型的。

(3)經過form表單或者url來向另外一個頁面或者servlet傳遞參數的時候須要用getParameter獲取值;getAttribute只能獲取setAttribute的值

(4)setAttribute是應用服務器把這個對象放到該頁面所對應的一塊內存當中,當你的頁面服務器重定向到另外一個頁面的時候,應用服務器

會把這塊內存拷貝到另外一個頁面對應的內存當中。經過getAttribute能夠取得你存下的值,固然這種方法能夠用來傳對象。

用session也是同樣的道理,這是說request和session的生命週期不同而已。

六、JSP有哪些內置對象,做用是什麼?

 

JSP內置對象  
名稱 做用
request 包含用戶端請求的信息
response 包含服務器傳回客戶端的響應信息
session 與請求有關的會話期
pageContext 管理網頁屬性
application 服務器啓動時建立,服務器關閉時中止,爲多個應用程序保存信息
out 向客戶端輸出數據
config servlet的架構部件
page 指網頁自己
exception 針對錯誤頁面纔可以使用

 

七、四種會話跟蹤技術做用域

(1)page:一個頁面

(2)request::一次請求

(3)session:一次會話

(4)application:服務器從啓動到中止。

七、JSP中動態INCLUDE和靜態INCLUDE有什麼區別

include指令用於把另外一個頁面包含到當前頁面中,在何時包含的?再轉換成servlet的時候包含進去的。

動態INCLUDE用jsp:include動做實現 <jsp:include page="included.jsp" flush="true" />它老是會檢查所含文件中的變化,適合用於包含動態頁面,

而且能夠帶參數.

靜態INCLUDE用include僞碼實現,定不會檢查所含文件的變化,適用於包含靜態頁面<%@ include file="included.htm" %>

八、forward和redirect的區別

轉發與重定向

(1)從地址欄顯示來講 

forward是服務器請求資源,服務器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,而後把這些內容再發給瀏覽器.瀏覽器根本不知道服務器發送

的內容從哪裏來的,因此它的地址欄仍是原來的地址.redirect是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器從新去請求那個地址.因此地址欄顯示的是

新的URL.

(2)從數據共享來講 

forward:轉發頁面和轉發到的頁面能夠共享request裏面的數據.

redirect:不能共享數據.

(3)從運用地方來講 

forward:通常用於用戶登錄的時候,根據角色轉發到相應的模塊.

redirect:通常用於用戶註銷登錄時返回主頁面和跳轉到其它的網站等.

(4)從效率來講 

forward:高.

redirect:低.

相關文章
相關標籤/搜索