Filter過濾器的簡單使用
阿新 • • 發佈:2018-12-19
/** 作用: * 對伺服器接受的請求資源和響應給瀏覽器的資源進行管理。 * 保護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>