天天看點

Servlet面試題歸納

1、說一說Servlet生命周期

Servlet生命周期包括三部分:

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

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

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

2、get送出和post送出有何差別

(1)get一般用于從伺服器上擷取資料,post一般用于向伺服器傳送資料

(2)請求的時候參數的位置有差別,get的參數是拼接在url後面,使用者在浏覽器位址欄可以看到。post是放在http包的包體中。

比如說使用者注冊,你不能把使用者送出的注冊資訊用get的方式吧,那不是說把使用者的注冊資訊都顯示在Url上了嗎,是不安全的。

(3)能送出的資料有差別,get方式能送出的資料隻能是文本,且大小不超過1024個位元組,而post不僅可以送出文本還有二進制檔案。

是以說想上傳檔案的話,那我們就需要使用post請求方式

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

3、JSP與Servlet有什麼差別

Servlet是伺服器端的程式,動态生成html頁面發送到用戶端,但是這樣程式裡會有很多out.println(),java與html語言混在一起

很亂,是以後來sun公司推出了JSP.其實JSP就是Servlet,每次運作的時候JSP都首先被編譯成servlet檔案,然後再被編譯成

.class檔案運作。有了jsp,在MVC項目中servlet不再負責動态生成頁面,轉而去負責控制程式邏輯的作用,控制jsp與javabean

之間的流轉。

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

HttpServletRequest:封裝了與請求相關的資訊

HttpServletResponse:封裝了與響應相關的資訊

5、request.getAttribute()和request.getParameter

(1)有setAttribute,沒有setParameter方法

(2)getParameter擷取到的值隻能是字元串,不可以是對象,而getAttribute擷取到的值是Object類型的。

(3)通過form表單或者url來向另一個頁面或者servlet傳遞參數的時候需要用getParameter擷取值;getAttribute隻能擷取setAttribute的值

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

會把這塊記憶體拷貝到另一個頁面對應的記憶體當中。通過getAttribute可以取得你存下的值,當然這種方法可以用來傳對象。

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

6、JSP有哪些内置對象,作用是什麼?

JSP内置對象

名稱 作用
request 包含使用者端請求的資訊
response 包含伺服器傳回用戶端的響應資訊
session 與請求有關的會話期
pageContext 管理網頁屬性
application 伺服器啟動時建立,伺服器關閉時停止,為多個應用程式儲存資訊
out 向用戶端輸出資料
config servlet的架構部件
page 指網頁本身
exception 針對錯誤頁面才可使用

7、四種會話跟蹤技術作用域

(1)page:一個頁面

(2)request::一次請求

(3)session:一次會話

(4)application:伺服器從啟動到停止。

7、JSP中動态INCLUDE和靜态INCLUDE有什麼差別

include指令用于把另一個頁面包含到目前頁面中,在什麼時候包含的?再轉換成servlet的時候包含進去的。

動态INCLUDE用jsp:include動作實作 <jsp:include page="included.jsp" flush="true" />它總是會檢查所含檔案中的變化,适合用于包含動态頁面,

并且可以帶參數.

靜态INCLUDE用include僞碼實作,定不會檢查所含檔案的變化,适用于包含靜态頁面<%@ include file="included.htm" %>

8、forward和redirect的差別

轉發與重定向

(1)從位址欄顯示來說 

forward是伺服器請求資源,伺服器直接通路目标位址的URL,把那個URL的響應内容讀取過來,然後把這些内容再發給浏覽器.浏覽器根本不知道伺服器發送

的内容從哪裡來的,是以它的位址欄還是原來的位址.redirect是服務端根據邏輯,發送一個狀态碼,告訴浏覽器重新去請求那個位址.是以位址欄顯示的是

新的URL.

(2)從資料共享來說 

forward:轉發頁面和轉發到的頁面可以共享request裡面的資料.

redirect:不能共享資料.

(3)從運用地方來說 

forward:一般用于使用者登陸的時候,根據角色轉發到相應的子產品.

redirect:一般用于使用者登出登陸時傳回首頁面和跳轉到其它的網站等.

(4)從效率來說 

forward:高.

redirect:低.