Servlet面試題

1、Servlet生命週期?

Servlet聲明週期分爲3個部分,從Servlet接口中的方法就可以知道。

初始化:從Web加載Servlet開始,第一次請求時候調用Servlet的init()方法進行初始化,init()調用且只調用一次。

處理請求:調用service()方法處理請求,之後每一次的請求都會調用service()方法。

銷燬:當服務卸載或停止的時候,調用destroy()方法進行一些清除或銷燬工作。

2、get提交和post提交有何區別?

1)get一般用於從服務器上獲取數據,post一般用於向服務器傳送數據。

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

3)能提交的數據有區別,get方式能提交的數據只能是文本,且大小不超過1024個字節,而post不僅可以提交文本還有

二進制文件。

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

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

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

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

4、什麼是cookie?

    Cookie是由W3C組織提出,最早由netscape社區發展的一種機制網頁之間的交互是通過http協議傳輸數據的,

而http協議是無狀態的協議。無狀態的協議是什麼意思呢?一旦數據提交完後,瀏覽器和服務器的連接就會關閉,

再次交互的時候需要重新建立新的連接。服務器無法確認用戶的信息,於是乎,W3C就提出了:給每一個用戶都發

一個通行證,無論誰訪問的時候都需要攜帶通行證,這樣服務器就可以從通行證上確認用戶的信息。通行證就是Cookie。

5、Session和cookie有什麼區別?

從存儲方式上比較:

Cookie只能存儲字符串,如果要存儲非ASCII字符串還要對其編碼。

Session可以存儲任何類型的數據,可以把Session看成是一個容器。

從隱私安全上比較:

Cookie存儲在瀏覽器中,對客戶端是可見的。信息容易泄露出去。如果使用Cookie,最好將Cookie加密。

Session存儲在服務器上,對客戶端是透明的。不存在敏感信息泄露問題。

從有效期上比較:

Cookie保存在硬盤中,只需要設置maxAge屬性爲比較大的正整數,即使關閉瀏覽器,Cookie還是存在的。

Session的保存在服務器中,設置maxInactiveInterval屬性值來確定Session的有效期。並且Session依賴於名爲

JSESSIONID的Cookie,該Cookie默認的maxAge屬性爲-1。如果關閉了瀏覽器,該Session雖然沒有從服務器中消亡,

但也就失效了。

從對服務器的負擔比較:

Session是保存在服務器的,每個用戶都會產生一個Session,如果是併發訪問的用戶非常多,是不能使用Session的,

Session會消耗大量的內存。

Cookie是保存在客戶端的。不佔用服務器的資源。像baidu、Sina這樣的大型網站,一般都是使用Cookie來進行會話跟蹤。

從瀏覽器的支持上比較:

如果瀏覽器禁用了Cookie,那麼Cookie是無用的了!

如果瀏覽器禁用了Cookie,Session可以通過URL地址重寫來進行會話跟蹤。

從跨域名上比較:

Cookie可以設置domain屬性來實現跨域名

Session只在當前的域名內有效,不可誇域名
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章