學習筆記十一(過濾器與監聽器)

Filter:過濾器

(Filter創建之後一定要記得在XML中修改URL,設定要過濾的對象。)

簡介:

程序的過濾器,過濾客戶端與服務器之間的請求和響應。
如:過濾字符集
Filter是web三大核心組件之一。

  • Servlet:處理用戶請求
  • Filter:過濾用戶請求&響應
  • Listener:監聽器

web三大核心組件的共同點

  1. 實現某個接口
  2. 註冊

Filter生命週期

構造器

  • 執行次數:執行一次
  • 執行時機 :啓動服務器時執行

init()

  • 執行次數:執行一次
  • 執行時機 :啓動服務器時執行

doFilter()

  • 執行次數:執行多次
  • 執行時機 :每次過濾請求時執行

destroy()

  • 執行次數:執行一次
  • 執行時機 :關閉服務器時執行

Filter的工作原理

  • 請求
  • 執行過濾器中的doFilter(),執行放行前的代碼。
  • 放行請求,執行處理請求代碼(Servlet)並做出響應。
  • 執行過濾器中的doFilter(),執行放行後的代碼。
  • 響應

多個Filter的執行流程

  • 請求
  • filter1放行前
  • filter2放行前
  • filter3放行前
  • 處理請求,做出響應
  • filter3放行後
  • filter2放行後
  • filter1放行後
  • 響應

注意: filter的先後順序,由web.xml中url的順序決定。

Url的配置規則
1、精準配置:

 <url-pattern>/UserServlet</url-pattern>
<servlet-name>UserServlet</servlet-name>

2、模糊配置:
包含 “*” 的配置,稱之爲模糊配置。
前置模糊:.jsp
後置模糊:/pages/user/
中間模糊 (沒有)

自定義HttpFilter
仿照HttpServlet : GenericServlet : Servlet

HttpFilter應包含以下幾步:
1、getXXX()
2、abstract doFilter()
3、overload doFilter()

public abstract class HttpFilter implements Filter {

	private FilterConfig filterConfig;
	
    public HttpFilter() {
        // TODO Auto-generated constructor stub
    }

	public void destroy() {
		// TODO Auto-generated method stub
	}

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest)request;
		HttpServletResponse res = (HttpServletResponse)response;
		doFilter(req, res, chain);
	}
	
	public abstract void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException;

	public void init(FilterConfig fConfig) throws ServletException {
		this.filterConfig = fConfig;
	}

	/**
	 * 獲取FilterConfig對象
	 * @return
	 */
	public FilterConfig getFilterConfig() {
		return filterConfig;
	}	
}

Listener:監聽器

程序中:

  • 監聽對象:ServletContext、HttpSession、ServletRequest等
  • 監聽事件:對象創建、修改、刪除等
  • 監聽結果:需求
  • 監聽者:程序員自己創建
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章