撩課Java+系統架構 視頻 點擊開始學習 81.Servlet的會話機制? 82.Filter是什麼?有什麼作用? 83.Listener是什麼?有什麼作用? 84.你瞭解過Servlet3.0嗎? 85.JSP和Servlet有哪些相同點和不同點? ...
撩課Java+系統架構 視頻 點擊開始學習
81.Servlet的會話機制?
HTTP 是一種無狀態協議, 這意味著每次客戶端檢索網頁時, 都要單獨打開一個伺服器連接, 因此伺服器不會記錄下 先前客戶端請求的任何信息。 它與FTP、Telnet等協議不同, FTP等協議可以記住用戶的連接信息。 會話(Session)是指一個終端用戶 與交互系統進行通信的時間間隔, 通常指從登陸系統到註銷系統之間 所經過的時間以及如果需要的話, 可能還有一定操作空間。 JSP有四種方式實現會話跟蹤功能。 Cookie 伺服器在響應請求時 可以將一些數據以"鍵-值"對的形式 通過響應信息保存在客戶端。 當瀏覽器再次訪問相同的應用時, 會將原先的存有session ID的Cookie 通過請求信息帶到伺服器端, 網路伺服器通過識別唯一的session ID來 代表每個客戶端, 從而識別這個客戶端接下來的請求。 用於會話跟蹤的Cookie叫做會話Cookie。 Servlet規範中會話跟蹤的cookie名字 必須是JSESSIONID, 保存在瀏覽器的記憶體中。 Cookie可以用於保持用戶的會話狀態, 但Cookie信息保存在客戶端, 存在較大的安全隱患, 且一般瀏覽器對Cookie的數目 及數據大小有嚴格的限制。 在Web應用中, 一般情況下通過HttpSession對象保持會話狀態 Session Session技術則是 服務端的解決方案, 它是通過伺服器來保持狀態的。 在Java中是通過調用 HttpServletRequest的getSession方法 使用true作為參數創建的。 在創建了Session的同時, 伺服器會為該Session生成唯一的Session id, 而這個Session id在隨後的請求中 會被用來重新獲得已經創建的Session; 在Session被創建之後, 就可以調用Session相關的方法 往Session中增加內容了, 而這些內容只會保存在伺服器中, 發到客戶端的只有Session id; 當客戶端再次發送請求的時候, 會將這個Session id帶上, 伺服器接受到請求之後 就會依據Session id找到相應的Session, 從而再次使用之。 正式這樣一個過程, 用戶的狀態也就得以保持了。 隱藏表單域 隱藏表單域是將會話ID 添加到HTML的隱藏表單中 (類型為hidden的input)。 重定向和轉發 重寫URL 把會話ID編碼在URL中。 counter.jsp;jsessionnid=be8d697876787876befdbde898789098980 對於URL覆寫, 伺服器從請求的URI中提取出會話ID, 並把該請求與相應的會話關聯起來, 然後在訪問會話數據的時候, JSP頁面所進行的處理方式 就和使用cookie跟蹤會話id時 所使用的方式完全相同。 所以sesssion的實現 要依靠cookie或URL覆寫技術。
82.Filter是什麼?有什麼作用?
過濾器是處於客戶端與伺服器
資源文件之間的一道過濾網,
在訪問資源文件之前,
通過一系列的過濾器對請求進行修改、判斷等,
把不符合規則的請求在中途攔截或修改。
也可以對響應進行過濾,
攔截或修改響應。
瀏覽器發出的請求先遞交給第一個filter進行過濾,
符合規則則放行,
遞交給filter鏈中的下一個過濾器進行過濾。
過濾器在鏈中的順序
與它在web.xml中配置的順序有關,
配置在前的則位於鏈的前端。
當請求通過了鏈中所有過濾器後
就可以訪問資源文件了,
如果不能通過,
則可能在中間某個過濾器中被處理掉。
在doFilter()方法中,
chain.doFilter()前的一般是對request執行的過濾操作,
chain.doFilter後面的代碼
一般是對response執行的操作。
過濾器一般用於登錄許可權驗證、
資源訪問許可權控制、
敏感辭彙過濾、
字元編碼轉換等等操作,
便於代碼重用,
不必每個servlet中還要進行相應的操作。
83.Listener是什麼?有什麼作用?
監聽器用於監聽web應用中某些對象、
信息的創建、銷毀、增加,修改,刪除等
動作的發生,
然後作出相應的響應處理。
當範圍對象的狀態發生變化的時候,
伺服器自動調用監聽器對象中的方法。
常用於統計線上人數和線上用戶,
系統載入時進行信息初始化,
統計網站的訪問量等等。
分類:
按監聽的對象劃分,可以分為
ServletContext對象監聽器
HttpSession對象監聽器
ServletRequest對象監聽器
按監聽的事件劃分
對象自身的創建和銷毀的監聽器
對象中屬性的創建和消除的監聽器
session中的某個對象的狀態變化的監聽器
84.你瞭解過Servlet3.0嗎?
Servlet3.0相對於Servlet2.0來說 最大的改變是引入了Annotation註解 來取代xml配置, 用於簡化web應用的開發和部署。 最主要幾項特性: 1. 新增的註解支持: 該版本新增了若幹註解, 用於簡化 Servlet、 過濾器(Filter) 和監聽器(Listener)的聲明, 這使得 web.xml 部署描述文件 從該版本開始不再是必選的了。 2. 非同步處理支持: 有了該特性, Servlet 線程不再需要一直阻塞, 直到業務處理完畢才能再輸出響應, 最後才結束該 Servlet 線程。 在接收到請求之後, Servlet 線程可以將耗時的操作 委派給另一個線程來完成, 自己在不生成響應的情況下返回至容器。 針對業務處理較耗時的情況, 這將大大減少伺服器資源的占用, 並且提高 併發處理速度。 3. 可插性支持: 熟悉 Struts2 的開發者一定會 對其通過插件的方式 與包括 Spring 在內的各種常用框架的整合 特性記憶猶新。 將相應的插件封裝成 JAR 包並放在類路徑下, Struts2 運行時便能自動載入這些插件。 現在 Servlet 3.0 提供了類似的特性, 開發者可以通過插件的方式很方便的 擴充已有 Web 應用的功能, 而不需要修改原有的應用。
85.JSP和Servlet有哪些相同點和不同點?
JSP是Servlet技術的擴展, 本質上是Servlet的簡易方式, 更強調應用的外表表達。 JSP編譯後是"類servlet"。 Servlet和JSP最主要的不同點在於, Servlet的應用邏輯是在Java文件中, 並且完全從表示層中的HTML里分離開來。 而JSP的情況是 Java和HTML可以組合 成一個擴展名為.jsp的文件。 在實際項目開發當中, JSP側重於視圖, Servlet主要用於控制邏輯。