<filter>
<filter-name>loggerfilter</filter-name>
<filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loggerfilter</filter-name>
<url-pattern>/*</url-pattern>//訪問當(dāng)前主機(jī),當(dāng)前應(yīng)用程序根下的所有文件包括多級(jí)子目錄下的所有文件,注意這里*前有“/”
</filter-mapping>
2.過濾指定的類型文件資源
<filter>
<filter-name>loggerfilter</filter-name>
<filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loggerfilter</filter-name>
<url-pattern>*.html</url-pattern>//訪問當(dāng)前主機(jī),當(dāng)前應(yīng)用程序根目錄下的所有html文件,注意:*.html前沒有“/”,否則錯(cuò)誤
</filter-mapping>
其中*.html要過濾jsp那么就改*.html為*.jsp,但是注意沒有“/”斜杠
如果要同時(shí)過濾多種類型資源:
方法一:url-pattern分開寫
<filter>
<filter-name>loggerfilter</filter-name>
<filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loggerfilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-name>loggerfilter</filter-name>
<url-pattern>*.jsp</url-pattern>//訪問當(dāng)前主機(jī),當(dāng)前應(yīng)用程序根目錄以所有及子目錄下的所有jsp文件
</filter-mapping>
方法二、將url-pattern 合并
<filter>
<filter-name>loggerfilter</filter-name>
<filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loggerfilter</filter-name>
<url-pattern>*.html;*.jsp</url-pattern>
</filter-mapping>//*.html;*.jsp兩類型之間用分號(hào)“;”間隔
3.過濾指定的目錄下的所有文件
<filter>
<filter-name>loggerfilter</filter-name>
<filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loggerfilter</filter-name>
<url-pattern>/folder_name/*</url-pattern>//訪問當(dāng)前主機(jī),當(dāng)前應(yīng)用程序根目錄下的folder_name子目錄(可以是多級(jí)子目錄)下所有文件
</filter-mapping>
4.過濾指定的servlet
<filter>
<filter-name>loggerfilter</filter-name>
<filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loggerfilter</filter-name>
<servlet-name>loggerservlet</servlet-name></filter-mapping>
<servlet>
<servlet-name>loggerservlet</servlet-name>
<servlet-class>myfilter.LoggerServlet</servlet-class>
</servlet>
5.過濾指定文件(即單一文件)
<filter>
<filter-name>loggerfilter</filter-name>
<filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loggerfilter</filter-name>
<url-pattern>/simplefilter.html</url-pattern>
</filter-mapping>
6、過濾指定目錄下的指定類型的所有文件
這種情況下,在web.xml中無(wú)法一次性配置完成,需要結(jié)合filter的實(shí)現(xiàn)類
首先,在web.xml中配置過濾指定目錄下的所有文件(如上3)
<filter>
<filter-name>loggerfilter</filter-name>
<filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loggerfilter</filter-name>
<url-pattern>/dir_name/*</url-pattern>
</filter-mapping>
然后,在filter的實(shí)現(xiàn)類中的doFilter方法中獲取請(qǐng)求的uri或者url,判斷uri或者url中是否包含指定文件類型的字符串,決定是否過濾
//獲得用戶請(qǐng)求的uri
String uri =request.getRequestURI();
if(uri.contains(".jsp")||uri.contains(".html"))
{
System.out.println("開始過濾"+url);
}
7、過濾指定目錄下指定類型的單一文件
<filter>
<filter-name>loggerfilter</filter-name>
<filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loggerfilter</filter-name>
<url-pattern>/dir_name/index.jsp</url-pattern>
</filter-mapping>
以上都要注意是否有斜杠“/”
###############使用filter緩存js、css、圖片等文件###############
在web.xml中配置如下信息
<!--不緩存文件 -->
<filter>
<filter-name>NoCache</filter-name>
<filter-class>com.sys.common.Filters.ResponseHeaderFilter
</filter-class>
<init-param>
<param-name>Cache-Control</param-name>
<param-value>no-cache,must-revalidate</param-value>
</init-param>
</filter>
<!--緩存文件一周 -->
<filter>
<filter-name>CacheForWeek</filter-name>
<filter-class>com..sys.common.Filters.ResponseHeaderFilter
</filter-class>
<init-param>
<param-name>Cache-Control</param-name>
<param-value>max-age=604800,public</param-value>
</init-param>
</filter>
<filter-name>CacheForWeek</filter-name>
<url-pattern>/images/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CacheForWeek</filter-name>
<url-pattern>*.js</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CacheForWeek</filter-name>
<url- pattern>*.css</url-pattern>
</filter-mapping>
自定義的filter如下:
public classResponseHeaderFilter implementsFilter {
FilterConfigfc;
public voiddoFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
// set the provided HTTP response parameters
for (Enumeration e = fc.getInitParameterNames();e.hasMoreElements();) {
String headerName = (String) e.nextElement();
response.addHeader(headerName,fc.getInitParameter(headerName));
}
// pass the request/response on
chain.doFilter(req, response);
}
public voidinit(FilterConfig filterConfig) {
this.fc = filterConfig;
}
public voiddestroy() {
this.fc = null;
}
}
愛華網(wǎng)


