Filter的意思是可以在Servlet實例進行實質性的處理之前,起到“過濾”的作用.
一個Filter可以過濾一個或多個Servlet,Filter必須實現javax.Servlet.Filter接口,并且必須定義以下三個方法:init(),destory(),doFilter().
下面的例子演示記錄客戶端主機信息的Filter:
當前web應用的web.xml配置為:
最后用myeclipse插件自動部署到tomcat路徑下,啟動tomcat,在瀏覽器中輸入
http://localhost:8080/Filter/ (Filter為此web應用名稱)
可以在tomcat 目錄的log目錄下的localhost.2006-01-02.log看到以下消息:
2006-1-2 16:25:51 org.apache.catalina.core.ApplicationContext log
信息: [127.0.0.1] request: /Filter/
2006-1-2 16:25:51 org.apache.catalina.core.ApplicationContext log
信息: [127.0.0.1] done
這表明logFilter已經被server調用成功.
當然在實際應用中filter還有其他用處,象登陸驗證,編碼轉化等.
Java天下社區
http://www.javatx.cn
歡迎大家上來交流Java技術。
一個Filter可以過濾一個或多個Servlet,Filter必須實現javax.Servlet.Filter接口,并且必須定義以下三個方法:init(),destory(),doFilter().
下面的例子演示記錄客戶端主機信息的Filter:
程序代碼: |
/** * 該實例演示記錄客戶端主機信息的Filter * www.javatx.cn */ package cn.javatx; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; /** * @author ljfan * */ public class logFilter implements Filter { private ServletContext context; /* (non-Javadoc) * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) */ public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub context = arg0.getServletContext(); } /* (non-Javadoc) * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) */ public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { // TODO Auto-generated method stub context.log("[" + arg0.getRemoteHost() + "] request: " +((HttpServletRequest)arg0).getRequestURI()); arg2.doFilter(arg0, arg1); context.log("[" + arg0.getRemoteHost() + "] done"); } /* (non-Javadoc) * @see javax.servlet.Filter#destroy() */ public void destroy() { // TODO Auto-generated method stub context = null; } } |
當前web應用的web.xml配置為:
程序代碼: |
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <filter> <filter-name>logFilter</filter-name> <filter-class>cn.javatx.logFilter</filter-class> </filter> <filter-mapping> <filter-name>logFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> |
最后用myeclipse插件自動部署到tomcat路徑下,啟動tomcat,在瀏覽器中輸入
http://localhost:8080/Filter/ (Filter為此web應用名稱)
可以在tomcat 目錄的log目錄下的localhost.2006-01-02.log看到以下消息:
2006-1-2 16:25:51 org.apache.catalina.core.ApplicationContext log
信息: [127.0.0.1] request: /Filter/
2006-1-2 16:25:51 org.apache.catalina.core.ApplicationContext log
信息: [127.0.0.1] done
這表明logFilter已經被server調用成功.
當然在實際應用中filter還有其他用處,象登陸驗證,編碼轉化等.
Java天下社區
http://www.javatx.cn
歡迎大家上來交流Java技術。
posted @ 2006-01-02 16:39 ajie 閱讀(5052) | 評論 (0) | 編輯 收藏