2023-01-06 一、過濾器鏈 1、含義:如果出現一個請求存在多個過濾器對其過濾,出現過濾器鏈。 在放行前,過濾器是正序執行,放行後過濾器是倒序執行。 2、過濾器的順序:是與filter-mapping配置上下文位置有關 二、監聽器 1、作用範圍: (1)監聽域對象的創建和銷毀 域對象: ①Se ...
2023-01-06
一、過濾器鏈
1、含義:如果出現一個請求存在多個過濾器對其過濾,出現過濾器鏈。
在放行前,過濾器是正序執行,放行後過濾器是倒序執行。
2、過濾器的順序:是與filter-mapping配置上下文位置有關
二、監聽器
1、作用範圍:
(1)監聽域對象的創建和銷毀
域對象:
①ServletContext:應用域(對象是web項目載入時創建,web項目卸載時銷毀),監聽器介面是“ServletContextListener”。
②HttpSession:會話域(第一次調用getSession創建,銷毀是強制銷毀),監聽器介面是“HttpSessionListener”。
③HttpServletRequest:請求域(有請求就創建,響應結束就銷毀),監聽器介面是“HttpServletRequestListener”。
(2)監聽域對象內共用數據的添加、修改、刪除
①添加數據:setAttribute
②刪除數據:removeAttribute
③修改數據:setAttribute (如果key值存在,此方法就是修改數據)
2、創建監聽器
(1)創建一個類
先創建一個“web Application”的項目,刪除“index.jsp”.在src文件夾下的“com.hh”下創建一個類“listener.HelloListener”
(2)實現一個介面
例如“ServletContextListener”
(3)實現介面中的抽象函數
public class HelloListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent servletContextEvent) { System.out.println("ServletContext對象創建後執行此方法"); } @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { System.out.println("ServletContext對象銷毀後執行此方法"); } }
(4)註冊監聽器
在“WEB-INF”文件夾下的“web.xml”中
<listener> <listener-class>com.hh.listener.HelloListener</listener-class> </listener>
三、Servlet、Filter、Listener的註解方式開發
功能:替代配置文件的。
1、Servlet的註解
(1)位置:在類的上方
(2)代碼:
@WebServlet(name="HelloServlet",value="/hello")
註:name就相當於配置文件中的“servlet-name”的值;value就相當於配置文件中“url-pattern”的值
簡寫形式:name可以省略,當只剩下“value”屬性,屬性名可以省略,即:
@WebServlet("/hello")
2、Filter的註解
(1)位置:類的上方
(2)代碼:
@WebFilter(filterName = "HelloFilter",urlPatterns = "/hello")
3、Listener的註解
(1)位置:類的上方
(2)代碼:
@WebListener