<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 110, comments - 101, trackbacks - 0, articles - 7
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    1、攔截器是基于java反射機制的,而過濾器是基于函數回調的。
    2、過濾器依賴與servlet容器,而攔截器不依賴與servlet容器。
    3、攔截器只能對Action請求起作用,而過濾器則可以對幾乎所有請求起作用。
    4、攔截器可以訪問Action上下文、值棧里的對象,而過濾器不能。
    5、在Action的生命周期中,攔截器可以多次調用,而過濾器只能在容器初始化時被調用一次。

    過濾器是在java web中,你傳入的request,response提前過濾掉一些信息,或者提前設置一些參數,然后再傳入servlet或者struts的 action進行業務邏輯,
    比如過濾掉非法url(不是login.do的地址請求,如果用戶沒有登陸都過濾掉),
    或者在傳入servlet或者 struts的action前統一設置字符集,
    或者去除掉一些非法字符(聊天室經常用到的,一些罵人的話)。。。

    攔截器 可通過的是符合條件的action。 攔截器本身是一個普通的Java對象,它能動態攔截Action調用,
    Action執行前后執行攔截器本身提供的各種個樣的Web項目需求。也可以阻止Action的執行,同時也可以提取
    Action中可以復用的部分。
    前段時間參與一個項目,過濾器用的是Interceptor 覺得比以前用的Filter好用很多,現在拿出來比較一下
    Filter
        該過濾器的方法是創建一個類XXXFilter實現此接口,并在該類中的doFilter方法中聲明過濾規則,然后在配置文件web.xml中聲明他所過濾的路徑
        <filter>
            <filter-name>XXXFilter</filter-name>
            <filter-class>
                com.web.util.XXXFilter
            </filter-class>
        </filter>
       
        <filter-mapping>
            <filter-name>XXXFilter</filter-name>
            <url-pattern>*.action</url-pattern>
        </filter-mapping>
    Interceptor
         該過濾器的方法也是創建一個類XXXInterceptor實現此接口,在該類中intercept方法寫過濾規則,不過它過濾路徑的方法和Filter不同,它與strut.xml結合使用,
       創建一個strus.xml的子配置文件struts-l99-default.xml,它繼承與struts2的struts-default,此配置文件是其他子配置文件的父類,只要是繼承與該文件的配置文件所聲明的路徑都會被它過濾 如下
     <package name="XXX-default" namespace="/" extends="struts-default">
            <interceptors>
                <interceptor name="authentication" class="com.util.XXXInterceptor" />
               
                <interceptor-stack name="user">
                    <interceptor-ref name="defaultStack" />
                    <interceptor-ref name="authentication" />
                </interceptor-stack>
                <interceptor-stack name="user-submit">
                    <interceptor-ref name="user" />
                    <interceptor-ref name="token" />
                </interceptor-stack>
                <interceptor-stack name="guest">
                    <interceptor-ref name="defaultStack" />
                </interceptor-stack>
                <interceptor-stack name="guest-submit">
                    <interceptor-ref name="defaultStack" />
                    <interceptor-ref name="token" />
                </interceptor-stack>
            </interceptors>
            <default-interceptor-ref name="user" />
       </package>
     比較一,filter基于回調函數,我們需要實現的filter接口中doFilter方法就是回調函數,而interceptor則基于java本身的反射機制,這是兩者最本質的區別。
     比較二,filter是依賴于servlet容器的,即只能在servlet容器中執行,很顯然沒有servlet容器就無法來回調doFilter方法。而interceptor與servlet容器無關。
     比較三,Filter的過濾范圍比Interceptor大,Filter除了過濾請求外通過通配符可以保護頁面,圖片,文件等等,而Interceptor只能過濾請求。
     比較四,Filter的過濾例外一般是在加載的時候在init方法聲明,而Interceptor可以通過在xml聲明是guest請求還是user請求來辨別是否過濾。
            </filter-class>
        </filter>
       
        <filter-mapping>
            <filter-name>XXXFilter</filter-name>
            <url-pattern>*.action</url-pattern>
        </filter-mapping>
    Interceptor
         該過濾器的方法也是創建一個類XXXInterceptor實現此接口,在該類中intercept方法寫過濾規則,不過它過濾路徑的方法和Filter不同,它與strut.xml結合使用,
       創建一個strus.xml的子配置文件struts-l99-default.xml,它繼承與struts2的struts-default,此配置文件是其他子配置文件的父類,只要是繼承與該文件的配置文件所聲明的路徑都會被它過濾 如下
     <package name="XXX-default" namespace="/" extends="struts-default">
            <interceptors>
                <interceptor name="authentication" class="com.util.XXXInterceptor" />
               
                <interceptor-stack name="user">
                    <interceptor-ref name="defaultStack" />
                    <interceptor-ref name="authentication" />
                </interceptor-stack>
                <interceptor-stack name="user-submit">
                    <interceptor-ref name="user" />
                    <interceptor-ref name="token" />
                </interceptor-stack>
                <interceptor-stack name="guest">
                    <interceptor-ref name="defaultStack" />
                </interceptor-stack>
                <interceptor-stack name="guest-submit">
                    <interceptor-ref name="defaultStack" />
                    <interceptor-ref name="token" />
                </interceptor-stack>
            </interceptors>
            <default-interceptor-ref name="user" />
       </package>
     比較一,filter基于回調函數,我們需要實現的filter接口中doFilter方法就是回調函數,而interceptor則基于java本身的反射機制,這是兩者最本質的區別。
     比較二,filter是依賴于servlet容器的,即只能在servlet容器中執行,很顯然沒有servlet容器就無法來回調doFilter方法。而interceptor與servlet容器無關。
     比較三,Filter的過濾范圍比Interceptor大,Filter除了過濾請求外通過通配符可以保護頁面,圖片,文件等等,而Interceptor只能過濾請求。
     比較四,Filter的過濾例外一般是在加載的時候在init方法聲明,而Interceptor可以通過在xml聲明是guest請求還是user請求來辨別是否過濾。


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


    網站導航:
     
    主站蜘蛛池模板: 成人午夜亚洲精品无码网站| 日日麻批免费40分钟无码| A在线观看免费网站大全| 亚洲精品福利在线观看| 亚洲成人免费电影| 亚洲熟妇av一区| 国产精品视频免费| 亚洲国产精品yw在线观看| 久草视频在线免费| 亚洲AV成人影视在线观看| 免费大片黄在线观看yw| 日韩亚洲国产综合高清| 成人a免费α片在线视频网站| 亚洲精品无码成人| 亚洲?v无码国产在丝袜线观看| 国产亚洲精品美女久久久久久下载| 日日夜夜精品免费视频| 日韩在线视频免费| 久久久青草青青亚洲国产免观| 99久久久国产精品免费蜜臀| 亚洲xxxxxx| 又粗又硬又大又爽免费视频播放| sss在线观看免费高清| 亚洲欧洲av综合色无码| 亚洲成aⅴ人片久青草影院| 亚洲国产精品成人久久久| 黄瓜视频高清在线看免费下载| 亚洲真人无码永久在线观看| 四虎影视精品永久免费| 国产男女爽爽爽免费视频| 精品亚洲aⅴ在线观看| 色吊丝最新永久免费观看网站| 视频免费1区二区三区| 亚洲高清在线观看| 免费理论片51人人看电影| 一级中文字幕免费乱码专区| 久久久久亚洲精品美女| 国产午夜无码视频免费网站| 成人久久免费网站| 亚洲人成网亚洲欧洲无码| 亚洲精品乱码久久久久久久久久久久 |