1. 程式人生 > >Java Web組件Servlet、Filter、Listener

Java Web組件Servlet、Filter、Listener

繼承 一個 tex 請求 父類 服務器 監聽 alt tco

一、Servlet 類javax.servlet.http.HttpServlet;

 1.是單例模式,一個web容器中只有一個實例。服務器調用它的service方法進行請求處理,
service方法又根據請求的類型分別調用doGet,doPost等方法。
 2.由於是單例模式,所以線程不安全
 3.自定義Servlet需繼承HttpServlet,並重寫相應的doGet等方法。方法體內不能調用父類的該方法。


web.xml註冊:
  <servlet>
    <servlet-name>myservlet</servlet-name>
    <servlet-class>com.zk.baseservlet.MyServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>myservlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>



二、Filter 類javax.servlet.Filter;

 1.過濾器首先執行init方法,從web.xml中的filter配置中讀取信息進行初始化。只執行一次。
 2.客戶端的每次請求,都會經過doFilter方法。過濾器必須配置攔截路徑。
 3.多個過濾器執行流程

MyFilter1 before
MyFilter2 before
MyFilter3 before
servlet doget method
MyFilter3 after
MyFilter2 after
MyFilter1 after

是個U型流程
技術分享

web.xml註冊:
  <filter>
  	<filter-name>myfilter1</filter-name>
  	<filter-class>com.zk.basefilter.MyFilter1</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>myfilter1</filter-name>
  	<url-pattern>/*</url-pattern>
	<init-param><param-name>name</param-name><param-value>lisi</param-value></init-param>
  </filter-mapping>


三、Listener 類ServletContextListener
監聽器用於監聽並接收被監聽對象的變化

 1.容器啟動通知contextInitialized方法在filter和servlet前調用。
 2.contextDestroyed方法在容器關閉後,filter和servlet銷毀後調用。

  不完善的地方歡迎大家補充

Java Web組件Servlet、Filter、Listener