1. 程式人生 > >Filter過濾器的簡單使用

Filter過濾器的簡單使用

/**
        作用:
 * 		對伺服器接受的請求資源和響應給瀏覽器的資源進行管理。
 * 		保護servlet
 * 	使用:
 * 		建立一個實現了Filter介面的普通java類
 * 		覆寫介面的方法
 * 			init方法:伺服器啟動即執行。資源初始化
 * 			doFilter方法:攔截請求的方法,在此方法中可以對資源實現管理。
 * 	注意:
 * 	                需要手動對請求進行放行 chain.doFilter(request, response);
 * 			destory方法:伺服器關閉執行。
 *
 */

@WebFilter(filterName = "filter",urlPatterns = {"/*"}
			,initParams={
			@WebInitParam(name = "key1" ,value = "value1"),
			@WebInitParam(name = "key2" ,value = "value2")
			})
public class StairFilter implements Filter{
	/**
	 * FilterConfig 用於獲取Filter配置資訊
	 */
	private FilterConfig filterConfg;
	
	@Override
	public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {
		/**
		 * 儲存web專案的全域性資訊(上下文資訊)
		 */
		ServletContext context = this.filterConfg.getServletContext();
		
		/**
		 * 通過  FilterConfig 用於獲取Filter配置 引數
		 */
		System.out.println("Filter配置引數為:");
		if(filterConfg == null){
			System.out.println("filterConfg:" + filterConfg);
		}else{
			System.out.println(filterConfg.getInitParameter("key1"));
			System.out.println(filterConfg.getInitParameter("key2"));
		}
		
		/**
		 * HttpServletRequest 是 ServletRequest的 子介面getServletPath()方法獲取使用者地址
		 */
		HttpServletRequest hst = (HttpServletRequest)req;
		System.out.println("擷取使用者地址" + hst.getServletPath());
		
		/**
		 * 通過 過濾跳轉到請求 地址(放行)
		 */
		chain.doFilter(req, resp);
		
		System.out.println("資訊已經返回到使用者");
	}

	@Override
	public void init(FilterConfig filterConfg) throws ServletException {
		this.filterConfg = filterConfg;
	}
	
	@Override
	public void destroy() {
		this.filterConfg = null;
	}
}
/**
 *
 *        注意:
 *	    url-pattern:/*
 *		表示攔截所有的請求。
 *          url-pattern:*.do
 *		表示所有以.do結尾的請求。一般是用來進行模組攔截處理。
 *	    url-pattern:/ts
 * 		表示攔截指定url的請求。針對某個servlet的請求進行攔截,保護servlet。
 */


 <filter>
  	<filter-name>filter</filter-name>
  	<filter-class>com.wang.filter.StairFilter</filter-class>
  	
  	<init-param>
  		<param-name>key1</param-name>
  		<param-value>value1</param-value>
	</init-param>

        <init-param>
  		<param-name>key2</param-name>
  		<param-value>value2</param-value>
	</init-param>

	
  </filter>
  
  <filter-mapping>
  	<filter-name>filter</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>