ajie

          Java天下社區 http://www.javatx.cn 歡迎大家上來交流Java技術
          posts - 4, comments - 8, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          Filter Servlet實例應用

          Posted on 2006-01-02 16:39 ajie 閱讀(5055) 評論(0)  編輯  收藏
                Filter的意思是可以在Servlet實例進行實質性的處理之前,起到“過濾”的作用.

                 一個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技術。

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 黄平县| 长治县| 定结县| 绥芬河市| 寻乌县| 盘山县| 神木县| 彭州市| 额尔古纳市| 安阳县| 鞍山市| 醴陵市| 安塞县| 本溪| 嘉鱼县| 孝昌县| 湟中县| 深州市| 永吉县| 阜平县| 和龙市| 封丘县| 佳木斯市| 江津市| 浠水县| 洞口县| 青阳县| 孝昌县| 莆田市| 灵璧县| 绥化市| 绥德县| 舟山市| 玛曲县| 什邡市| 出国| 建平县| 陆川县| 中西区| 郓城县| 大邑县|