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只在當前的域名內有效,不可誇域名