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

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

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

    夢想飛翔

    自強不息
    posts - 111, comments - 30, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    JAVA WEB學習筆記(四)-Servlet過濾器

    Posted on 2007-04-23 12:03 love1563 閱讀(203) 評論(0)  編輯  收藏 所屬分類: JSP/Servlets/JSF
    一、Servlet過濾器的概念:
    ***************************************************************************************
    Servlet過濾器是在Java?Servlet規范2.3中定義的,它能夠對Servlet容器的請求和響應對象進行檢查和修改。   

    Servlet過濾器本身并不產生請求和響應對象,它只能提供過濾作用。Servlet過期能夠在Servlet被調用之前檢查Request對象,修改Request?Header和Request內容;在Servlet被調用之后檢查Response對象,修改Response?Header和Response內容。

    Servlet過期負責過濾的Web組件可以是Servlet、JSP或者HTML文件。 
    ***************************************************************************************


    二、Servlet過濾器的特點:
    ***************************************************************************************
    A.Servlet過濾器可以檢查和修改ServletRequest和ServletResponse對象
    B.Servlet過濾器可以被指定和特定的URL關聯,只有當客戶請求訪問該URL時,才會觸發過濾器
    C.Servlet過濾器可以被串聯在一起,形成管道效應,協同修改請求和響應對象
    ***************************************************************************************


    三、Servlet過濾器的作用:
    ***************************************************************************************
    A.查詢請求并作出相應的行動。
    B.阻塞請求-響應對,使其不能進一步傳遞。
    C.修改請求的頭部和數據。用戶可以提供自定義的請求。
    D.修改響應的頭部和數據。用戶可以通過提供定制的響應版本實現。
    E.與外部資源進行交互。
    ***************************************************************************************


    四、Servlet過濾器的適用場合:
    ***************************************************************************************
    A.認證過濾
    B.登錄和審核過濾
    C.圖像轉換過濾?
    D.數據壓縮過濾?
    E.加密過濾?
    F.令牌過濾?
    G.資源訪問觸發事件過濾?
    H.XSL/T過濾?
    I.Mime-type過濾
    ***************************************************************************************


    五、Servlet過濾器接口的構成:
    ***************************************************************************************
    所有的Servlet過濾器類都必須實現javax.servlet.Filter接口。這個接口含有3個過濾器類必須實現的方法:

    A.init(FilterConfig):
    這是Servlet過濾器的初始化方法,Servlet容器創建Servlet過濾器實例后將調用這個方法。在這個方法中可以讀取web.xml文件中Servlet過濾器的初始化參數

    B.doFilter(ServletRequest,ServletResponse,FilterChain):
    這個方法完成實際的過濾操作,當客戶請求訪問于過濾器關聯的URL時,Servlet容器將先調用過濾器的doFilter方法。FilterChain參數用于訪問后續過濾器

    B.destroy():
    Servlet容器在銷毀過濾器實例前調用該方法,這個方法中可以釋放Servlet過濾器占用的資源
    ***************************************************************************************


    六、Servlet過濾器的創建步驟:
    ***************************************************************************************
    A.實現javax.servlet.Filter接口
    B.實現init方法,讀取過濾器的初始化函數
    C.實現doFilter方法,完成對請求或過濾的響應
    D.調用FilterChain接口對象的doFilter方法,向后續的過濾器傳遞請求或響應
    E.銷毀過濾器
    ***************************************************************************************


    七、Servlet過濾器對請求的過濾:
    ***************************************************************************************
    A.Servlet容器創建一個過濾器實例
    B.過濾器實例調用init方法,讀取過濾器的初始化參數
    C.過濾器實例調用doFilter方法,根據初始化參數的值判斷該請求是否合法
    D.如果該請求不合法則阻塞該請求
    E.如果該請求合法則調用chain.doFilter方法將該請求向后續傳遞
    ***************************************************************************************


    八、Servlet過濾器對響應的過濾:
    ***************************************************************************************
    A.過濾器截獲客戶端的請求
    B.重新封裝ServletResponse,在封裝后的ServletResponse中提供用戶自定義的輸出流
    C.將請求向后續傳遞
    D.Web組件產生響應
    E.從封裝后的ServletResponse中獲取用戶自定義的輸出流
    F.將響應內容通過用戶自定義的輸出流寫入到緩沖流中
    G.在緩沖流中修改響應的內容后清空緩沖流,輸出響應內容
    ***************************************************************************************

    九、Servlet過濾器的發布:
    ***************************************************************************************
    A.發布Servlet過濾器時,必須在web.xml文件中加入<filter>元素和<filter-mapping>元素。

    B.<filter>元素用來定義一個過濾器:
    屬性???????????????????含義
    filter-name????指定過濾器的名字
    filter-class????指定過濾器的類名
    init-param????為過濾器實例提供初始化參數,可以有多個

    C.<filter-mapping>元素用于將過濾器和URL關聯:
    屬性?????????????????????含義
    filter-name????指定過濾器的名字
    url-pattern????指定和過濾器關聯的URL,為”/*”表示所有URL
    ***************************************************************************************


    十一、Servlet過濾器使用的注意事項
    ***************************************************************************************
    A.由于Filter、FilterConfig、FilterChain都是位于javax.servlet包下,并非HTTP包所特有的,所以其中所用到的請求、響應對象ServletRequest、ServletResponse在使用前都必須先轉換成HttpServletRequest、HttpServletResponse再進行下一步操作。

    B.在web.xml中配置Servlet和Servlet過濾器,應該先聲明過濾器元素,再聲明Servlet元素


    C.如果要在Servlet中觀察過濾器生成的日志,應該確保在server.xml的localhost對應的<host>元素中配置如下<logger>元素:
    <Logger?className?=?“org.apache.catalina.logger.FileLogger”
    directory?=?“logs”prefix?=?“localhost_log.”suffix=”.txt”
    timestamp?=?“true”/>
    ***************************************************************************************
    主站蜘蛛池模板: 亚洲国产精品综合久久网络| 亚洲成人免费网址| 好男人看视频免费2019中文| 亚洲综合小说久久另类区| 国内精品久久久久影院免费 | 久久精品国产亚洲精品2020| 国产在线观看无码免费视频| 狠狠亚洲狠狠欧洲2019| 四虎精品成人免费视频| 亚洲AⅤ永久无码精品AA| 美女羞羞免费视频网站| 国产jizzjizz免费视频| 蜜臀亚洲AV无码精品国产午夜.| 在线观看免费毛片| 亚洲国产成人精品无码区二本 | 亚洲成色WWW久久网站| 久久大香香蕉国产免费网站| 亚洲国产精品自在线一区二区| 未满十八18禁止免费无码网站| 久久亚洲熟女cc98cm| 免费黄色福利视频| 亚洲日韩国产二区无码| 最好免费观看韩国+日本| 亚洲aⅴ无码专区在线观看| 亚洲高清成人一区二区三区| 中文字幕免费在线看线人动作大片| 亚洲香蕉网久久综合影视| 日韩免费无码视频一区二区三区| 亚洲成a人片在线观看中文!!!| 欧洲一级毛片免费| 亚洲精品又粗又大又爽A片| 亚洲AⅤ无码一区二区三区在线 | 亚洲色爱图小说专区| 88xx成人永久免费观看| 亚洲国产AV无码一区二区三区| 亚洲热线99精品视频| 曰批全过程免费视频在线观看| 人人公开免费超级碰碰碰视频| 亚洲精品中文字幕乱码| 亚洲免费视频一区二区三区| 在线免费中文字幕|