<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 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

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

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

    攔截器 可通過的是符合條件的action。 攔截器本身是一個普通的Java對象,它能動態(tài)攔截Action調用,
    Action執(zhí)行前后執(zhí)行攔截器本身提供的各種個樣的Web項目需求。也可以阻止Action的執(zhí)行,同時也可以提取
    Action中可以復用的部分。
    前段時間參與一個項目,過濾器用的是Interceptor 覺得比以前用的Filter好用很多,現(xiàn)在拿出來比較一下
    Filter
        該過濾器的方法是創(chuàng)建一個類XXXFilter實現(xiàn)此接口,并在該類中的doFilter方法中聲明過濾規(guī)則,然后在配置文件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
         該過濾器的方法也是創(chuàng)建一個類XXXInterceptor實現(xiàn)此接口,在該類中intercept方法寫過濾規(guī)則,不過它過濾路徑的方法和Filter不同,它與strut.xml結合使用,
       創(chuàng)建一個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基于回調函數(shù),我們需要實現(xiàn)的filter接口中doFilter方法就是回調函數(shù),而interceptor則基于java本身的反射機制,這是兩者最本質的區(qū)別。
     比較二,filter是依賴于servlet容器的,即只能在servlet容器中執(zhí)行,很顯然沒有servlet容器就無法來回調doFilter方法。而interceptor與servlet容器無關。
     比較三,F(xiàn)ilter的過濾范圍比Interceptor大,Filter除了過濾請求外通過通配符可以保護頁面,圖片,文件等等,而Interceptor只能過濾請求。
     比較四,F(xiàn)ilter的過濾例外一般是在加載的時候在init方法聲明,而Interceptor可以通過在xml聲明是guest請求還是user請求來辨別是否過濾。
            </filter-class>
        </filter>
       
        <filter-mapping>
            <filter-name>XXXFilter</filter-name>
            <url-pattern>*.action</url-pattern>
        </filter-mapping>
    Interceptor
         該過濾器的方法也是創(chuàng)建一個類XXXInterceptor實現(xiàn)此接口,在該類中intercept方法寫過濾規(guī)則,不過它過濾路徑的方法和Filter不同,它與strut.xml結合使用,
       創(chuàng)建一個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基于回調函數(shù),我們需要實現(xiàn)的filter接口中doFilter方法就是回調函數(shù),而interceptor則基于java本身的反射機制,這是兩者最本質的區(qū)別。
     比較二,filter是依賴于servlet容器的,即只能在servlet容器中執(zhí)行,很顯然沒有servlet容器就無法來回調doFilter方法。而interceptor與servlet容器無關。
     比較三,F(xiàn)ilter的過濾范圍比Interceptor大,Filter除了過濾請求外通過通配符可以保護頁面,圖片,文件等等,而Interceptor只能過濾請求。
     比較四,F(xiàn)ilter的過濾例外一般是在加載的時候在init方法聲明,而Interceptor可以通過在xml聲明是guest請求還是user請求來辨別是否過濾。


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


    網站導航:
     
    主站蜘蛛池模板: 又粗又大又长又爽免费视频| 日本免费中文字幕| 激情无码亚洲一区二区三区| 久久精品国产99国产精品亚洲| 亚洲国产精品专区| 亚洲av成人一区二区三区| 亚洲一级毛片视频| va天堂va亚洲va影视中文字幕 | 和日本免费不卡在线v| 香蕉97超级碰碰碰免费公| 91在线视频免费91| 九九九精品成人免费视频| 在线免费观看毛片网站| 国产成人精品123区免费视频| 日日AV拍夜夜添久久免费| 免费亚洲视频在线观看| 亚洲午夜国产片在线观看| 亚洲三区在线观看无套内射| 亚洲成AV人片天堂网无码| 亚洲综合国产精品| 亚洲午夜理论片在线观看| 激情无码亚洲一区二区三区| 51午夜精品免费视频| 国产精品99久久免费观看| 91免费播放人人爽人人快乐| 成年性生交大片免费看| 日韩精品成人亚洲专区| 九九精品国产亚洲AV日韩| 免费精品国自产拍在线播放| 久久成人18免费网站| 69免费视频大片| 免费观看美女裸体网站| 亚洲国产综合无码一区二区二三区 | 国产永久免费高清在线| 亚洲第一网站免费视频| 暖暖免费高清日本中文| 在线观看亚洲精品福利片| 亚洲成人在线免费观看| 亚洲6080yy久久无码产自国产| 成人免费无码H在线观看不卡| 四虎免费影院ww4164h|