過濾器_Filter
作用:
對服務器資源進行管理,保護servlet
使用:
覆寫接口的方法
init方法:服務器啓動即執行。資源初始化。
doFilter方法:攔截請求的方法,在此方法中
destory方法:服務器關閉執行。
在web.xml中配置過濾器
<filter>
<filter-name> </filter-name>
<filter-class> </filter-class>
<filter>
<filter-mapping>
<filter-name> </filter-name>
<url-pattern> <url-pattern>
<filter-mapping>
注意:url-pattern:/* 表示攔截所有的請求。
url-pattern:*.do 表示.do的請求。一般用來進行模塊攔截處理。
url-pattern:/ts 表示指定url的請求。針對某個servlet的請求進行攔截,保護servlet。
過濾器的生命週期:
服務器啓動到服務器關閉。
總結:
過濾器由程序員聲明和配置,服務器根據請求中的uri信息調用。
執行:
瀏覽器發起請求到服務器,服務器接收到請求後,根據URI信息在web.xml中找到對應的過濾器執行doFilter方法,該方法對此次請求進行處理後如果符合要求則放行,放行後如果還有符合要求的過濾器則繼續進行過濾,找到執行對應的servlet進行請求處理。servlet對請求處理完畢後,即service方法結束。還需繼續返回響應的doFilter方法繼續執行。
監聽器_Listener
作用:
監聽作用域對象request、session、application的創建、銷燬和內容的改變
使用:
創建一個實現了指定接口的java類
監聽request--->ServletRequestListener 監聽request對象的創建和銷燬
requestInitialized(ServletRequestEvent sre)//創建
requestDestroyed(ServletRequestEvent sre)//銷燬
注意:形參可以獲取監聽的request對象
sre.getServletRequest();
監聽request--->ServletRequestAttributeListener 監聽request作用域數據的變更。
attributeAdded(ServletRequestAttributeEvent srae)
attributeRemoved(ServletRequestAttributeEvent srae)
attributeReplaced(ServletRequestAttributeEvent srae)
注意:形參可以獲取被監聽的數據
srae.getName() 獲取監聽數據的鍵
srae.getValue() 獲取監聽數據的值
監聽session--->HttpSessionListener 監聽session的創建和銷燬
sessionCreated(HttpSessionEvent se) 創建
sessionDestroyed(HttpSessionEvent se) 銷燬
注意:形參可以獲取被監聽的session對象
se.getSession();
監聽session--->HttpSessionAttributeListener 監聽session數據的變更
attributeAdded(HttpSessionBindingEvent event)
attributeRemoved(HttpSessionBindingEvent event)
attributeReplaced(HttpSessionBindingEvent event)
注意:形參可以獲取被監聽的數據
event.getName() 獲取數據的鍵名
event.getValue() 獲取數據的值
監聽application--->ServletContextListener 監聽application對象的初始化和銷燬
contextInitialized(ServletContextEvent sce) 初始化 服務器啓動
contextDestroyed(ServletContextEvent sce) 銷燬 服務器關閉
注意:形參可以獲取當前application對象
sce.getServletContext();
監聽application--->ServletContextAttributeListener 監聽application數據的變更
attributeAdded(ServletContextAttributeEvent event)
attributeRemoved(ServletContextAttributeEvent event)
attributeReplaced(ServletContextAttributeEvent event)
注意:形參可以獲取當前監聽的數據
event.getName() 獲取數據的鍵名
event.getValue() 獲取數據的值
在web.xml中配置監聽器
<listener>
<listener-class> </listener-class>
</listener>