一、Servlet體系結構
Java Web應用是基於Servlet規范運行,Servlet頂層類的關聯如下圖:
從圖可看出,Servlet規范基本圍繞這幾個類運行,其中,與Servlet主動關聯的有3個類,分別是ServletRequest、ServletResponse、ServletConfig。
這3個類都是通過容器傳遞給Servlet的,其中,ServletConfig在Servlet初始化時就傳給Servlet了。ServletConfig主要是獲取Servlet的配置信息。
而ServletContext則是改Web項目中所有Servlet數據共享的地方,如工作路徑、容器支持的Servlet最小版本等。
二、Servlet中的Listener
在整個Tomcat中,Listener使用的非常廣泛,它是基於觀察者模式。目前Servlet提供了6種兩類 事件的觀察接口,如下圖:
基本上涵蓋了整個Servlet生命周期中你感興趣的事件,這些Listener的實現在web.xml中配置,也可在應用中動態添加。
需注意的是ServletContextListener在容器啟動之后不能再添加新的。
三、Filter如何工作
Filter是web.xml的常用配置,可通過filter和filter-mapping組合起來使用filter,比servlet更靈活。
因為它除了提供request和response對象外,還提供了FilterChain對象,下面是與Filter相關的類圖:
四、Servlet中的url-pattern