初学Java Web(8)——过滤器和监听器
生活随笔
收集整理的這篇文章主要介紹了
初学Java Web(8)——过滤器和监听器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
什么是過濾器
過濾器就是 Servlet 的高級特性之一,就是一個具有攔截/過濾功能的一個東西,在生活中過濾器可以是香煙濾嘴,濾紙,凈水器,空氣凈化器等,在 Web 中僅僅是一個實現了 Filter 接口的 Java 類而已。
-
特點:雙向,攔截請求,攔截響應
-
作用:
過濾器可以對所有的請求或者響應做攔截操作
為什么在 Web 開發中需要用到過濾器?
- 問題:為什么非得使用過濾器,我直接在 Servlet 中作判斷不行嗎?
- 開發遵循的原則:
1.DRY原則(Don't Reeat Yourself,不要重復你自己):重復,意味著維護的成本很高。
2.責任分離原則:誰擅長什么功能就做什么功能,Servlet 擅長的是邏輯而不是處理請求
舉一個實際的例子:(處理 POST 請求中文編碼的問題)
- Web 中過濾器的作用:
1.可以在請求資源之前設置請求的編碼
2.可以進行登錄校驗
3.可以進行請求參數的內容的過濾
4.數據壓縮 / 數據加密 / 數據格式的轉換
5.可以設置瀏覽器相關的數據
Filter 的開發和使用
對應于 Servlet 的開發步驟:
- 注意:此時?<url-pattern>?表示對哪些資源做過濾/攔截。例如:
- /hello.jsp
當前 Filter 就僅僅只對 hello.jsp 資源做攔截. - /index
當前 Filter 就僅僅只對 /index 資源做攔截. - /*
當前 Filter 就對所有資源做攔截.訪問任意的資源,都會先進入該過濾器器. - /system/*
當前 Filter 就對以?/system/?打頭的資源做攔截.
如/system?,?/system/a,?/system/a/b/c,?/systema
Filter 映射細節
- <dispatcher>配置項指定了 Filter 的過濾時間:
- REQUEST:只對請求做過濾,默認選項,如果有該配置項則必須顯式寫明
- FORWARD:只對請求轉發(forword)方式做過濾
- ERROR:只對跳轉到全局的錯誤頁面做過濾
- INCLUDE:只對請求包含(include)方式做過濾
- 對應的注解屬性為:dispatcherTypes
過濾器實例
戳這里
監聽器
-
作用:
1.監聽 web 應用的創建和銷毀
2.attribute發生的變化。 -
web 應用:即ServletContext對象(jsp的隱式對象application)
除了對web應用的監聽外,還能監聽session和request的生命周期,以及他們的attribute發生的變化。
了解詳情戳這里
歡迎轉載,轉載請注明出處!
簡書ID:@我沒有三顆心臟
github:wmyskxz
總結
以上是生活随笔為你收集整理的初学Java Web(8)——过滤器和监听器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初学Java Web(7)——文件的上传
- 下一篇: 初学Java Web(9)——学生管理系