ajie

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

          2006年1月2日

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

          posted @ 2006-01-02 16:39 ajie 閱讀(5055) | 評論 (0)編輯 收藏

          2005年12月18日

               摘要: 用到開源軟件POI,詳細見以下URL: http://jakarta.apache.org/poi/index.html /** *//** * 該類演示了POI的應用 * 版權 本文版權屬Java天下 * Created on 2005-7-22 */package bss...  閱讀全文

          posted @ 2005-12-18 00:45 ajie 閱讀(1496) | 評論 (0)編輯 收藏

               摘要:   1/** *//**  2 * 該類演示了Java Mail的應用  3 * 版權 本文版權屬Java天下  4 * @author ljfan  5 * @version&n...  閱讀全文

          posted @ 2005-12-18 00:38 ajie 閱讀(2705) | 評論 (2)編輯 收藏

          軟引用(Soft  Reference)的主要特點是具有較強的引用功能。只有當內存不夠的時候才回收這類內存,因此在內存足夠的時候,他們通常不被回收。另外,這些引用對象還能保證在Java  拋出OutOfMemory異常之前,被設置為null。他可以用于實現一些常用資源的緩存,實現Cache的功能,保證最大限度的使用內存而不引起OutOfMemory異常。

               下面是軟引用的實現代碼:
           
           1/**
           2 * 該類演示了Soft Reference的應用
           3 * 版權 本文版權屬Java天下
           4 */

           5package cn.javatx;
           6
           7import java.lang.ref.SoftReference;
           8
           9/**
          10 * @author ajie
          11 */

          12
          13public class softReference {
          14
          15    /**
          16     * @param args
          17     */

          18    public static void main(String[] args) {
          19        // TODO Auto-generated method stub
          20        A a = new A();
          21        
          22        //使用a
          23        a.test();
          24
          25        //使用完了a,將它設置為soft引用類型,并且釋放強引用
          26        SoftReference sr = new SoftReference(a);
          27        a = null;
          28        
          29        //下次使用
          30        if (sr != null{
          31            a = (A)sr.get();
          32            a.test();
          33        }
           else {
          34            //GC由于低內存,已釋放a,因此需要重新裝載
          35            a = new A();
          36            a.test();
          37            a = null;
          38            sr = new SoftReference(a);
          39        }

          40    }

          41
          42}

          43
          44class A {
          45    public void test() {
          46        System.out.println("Soft Reference test");
          47    }

          48}

          49


                 軟引用技術的引進使Java應用可以更好的管理內存,穩定系統,防止系統內存溢出,避免系統崩潰。因此在處理一些占用內存大而且聲明周期較長,但使用并不頻繁的對象時應盡量應用該技術。但事物總帶有兩面性的,有利也有弊,在某些時候對軟引用的使用會降低應用的運行效率與性能,例如:應用軟引用的對象的初始化過程較為耗時,或者對象的狀態在程序的運行過程中發生了變化,都會給重新創建對象與初始化對象帶來不同程度的麻煩,有些時候我們要權衡利弊擇時應用。

          Java天下
          http://www.javatx.cn

          posted @ 2005-12-18 00:29 ajie 閱讀(10996) | 評論 (6)編輯 收藏

          主站蜘蛛池模板: 萍乡市| 石河子市| 无为县| 阿瓦提县| 西乌珠穆沁旗| 万盛区| 辉南县| 黄冈市| 香格里拉县| 南召县| 武汉市| 惠东县| 盈江县| 华池县| 聂荣县| 和硕县| 库尔勒市| 景东| 九龙县| 四川省| 高唐县| 团风县| 固镇县| 丰镇市| 承德市| 印江| 伊川县| 石楼县| 天柱县| 七台河市| 波密县| 通化县| 布拖县| 股票| 英山县| 和静县| 客服| 五大连池市| 察雅县| 宾川县| 平昌县|