1. 程式人生 > >【設計改變世界】 果然如此的專欄

【設計改變世界】 果然如此的專欄

web.xml

<display-name>javawebdemo</display-name>
  <context-param>
  	<param-name></param-name>
  	<param-value></param-value>
  </context-param>  
  
  <listener>
  	<listener-class>myServlet.MyServletContextListener</listener-class>  	
  </listener>
  <listener>
  	<listener-class>myServlet.SessionListener</listener-class>  	
  </listener>
  <listener>
  	<listener-class>myServlet.FirstServletRequestListener</listener-class>  	
  </listener>
  <listener>
  	<listener-class>myServlet.SecondServletRequestListener</listener-class>  	
  </listener>     
  
  <filter>
    <filter-name>FirstFilter</filter-name>
    <filter-class>myServlet.FirstFilter</filter-class>   
  </filter>  
  <filter-mapping>
    <filter-name>FirstFilter</filter-name>
    <url-pattern>/MyServlet</url-pattern>
  </filter-mapping>
  
  <filter>
    <filter-name>SecondFilter</filter-name>
    <filter-class>myServlet.SecondFilter</filter-class>    
  </filter>  
  <filter-mapping>
    <filter-name>SecondFilter</filter-name>
    <url-pattern>/MyServlet</url-pattern>
  </filter-mapping>
  
  <servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>javawebdemo.MyServlet</servlet-class>
    <load-on-startup>1</load-on-startup>    
  </servlet>
  <servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/MyServlet</url-pattern>
  </servlet-mapping>

啟動日誌:

MyServletContextListener.contextInitialized
FirstFilter.init
SecondFilter.init
MyServlet.init

請求/javawebdemo/MyServlet日誌

FirstServletRequestListener.requestInitialized
SecondServletRequestListener.requestInitialized
FirstFilter.doFilter Begin
SecondFilter.doFilter Begin
MyServlet.doGet
SessionListener.sessionCreated   //HttpSession session = request.getSession(true);需要強制建立session
SecondFilter.doFilter End FirstFilter.doFilter End SecondServletRequestListener.requestDestroyed FirstServletRequestListener.requestDestroyed
以上看出啟動流程
啟動階段:contextInitialized->Filter.init->Servlet.init(web.xml設定<load-on-startup>1</load-on-startup>)
訪問階段:RequestListener.requestInitialized->FirstFilter.doFilter->SecondFilter.doFilter->Servlet->返回SecondFilter.doFilter->返回FirstFilter.doFilter->RequestListener.requestDestroyed
簡單:Listener->Filter->Servlet->Filter->Listener

配置說明

listener:不配置url請求過濾
filter:需要配置url或servlet過濾
servlet:需要配置url或servlet過濾

按監聽的物件劃分

ServletContext物件監聽器
HttpSession物件監聽器
ServletRequest物件監聽器

 按監聽的事件劃分

物件自身的建立和銷燬的監聽器
物件中屬性的建立和消除的監聽器
session中的某個物件的狀態變化的監聽器