亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Java Web開發技術應用——過濾器

難度初級
時長 1小時40分
學習人數
綜合評分9.53
339人評價 查看評價
9.8 內容實用
9.5 簡潔易懂
9.3 邏輯清晰
  • 過濾器鏈執行順序:

    用戶請求-->過濾器1-->過濾器2-->servlet service-->過濾器2-->過濾器1-->用戶

    查看全部
  • 項目啟動時 init,

    訪問項目時 doFilter,

    項目停止時 destroy

    查看全部
  • init--->doFilter--->destroy


    查看全部
  • @web.xml <filter> <filter-name>FirstFilter</filter-name> <filter-class>com.imooc.filter.FirstFilter</filter-class> </filter> <filter-mapping> <filter-name>FirstFilter</filter-name> <url-pattern>/index.jsp</url-pattern> </filter-mapping> <filter-mapping> <filter-name>FirstFilter</filter-name> <url-pattern>/main.jsp</url-pattern> <dispatcher>FORWARD</dispatcher> </filter-mapping> @FirstFilter.java public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException{ HttpServletRequest hsreq = (HSReq) req; HttpServletResponse hsres = (HSRes) res; // 重定向:Dispatcher走REQUEST // hsres.sendRedirect(hsreq.getContextPath()+"/main.jsp"); hsres.sendRedirect(hsreq.getContextPath() + "/middle.jsp"); // 轉發:Dispatcher走FORWARD // hsreq.getRequestDispatcher("main.jsp").forward(hsreq, hsres); // hsreq.getRequestDispatcher("main.jsp").include(hsreq, hsres);//同理

    查看全部
  • Filter可認為是Servlet的一種“變種”,它主要用于對用戶請求進行預處理,也可以對HttpServletResponse進行后處理,是個典型的處理鏈。它與Servlet的區別在于:它不能直接向用戶生成響應。完整的流程是:Filter對用戶請求進行預處理,接著將請求交給Servlet進行處理并生成響應,最后Filter再對服務器響應進行后處理。

    Filter有如下幾個用處。
    在HttpServletRequest到達Servlet之前,攔截客戶的HttpServletRequest。
    根據需要檢查HttpServletRequest,也可以修改HttpServletRequest頭和數據。
    在HttpServletResponse到達客戶端之前,攔截HttpServletResponse。
    根據需要檢查HttpServletResponse,也可以修改HttpServletResponse頭和數據。

    Filter可負責攔截多個請求或響應;一個請求或響應也可被多個請求攔截。

    創建一個Filter只需兩個步驟:
    創建Filter處理類(實現Filter接口).
    web.xml文件中配置Filter(配置<filter>與<filter-mapping>)

    每個過濾器都有它對應的<url-pattern>地址.即過濾器關聯的url地址.<url-pattern>標簽是<filter-mapping>下的子標簽. 假如多個過濾器相關聯的地址都不一樣沒有交集,則它們都是相互獨立的.互不相干. 假如多個過濾器相關聯的地址都一樣.則它們便構成過濾器鏈.此時用戶請求就會依次通過所有關聯這個Web資源地址的過濾器. 過濾器鏈就是針對一個客戶的請求,找到匹配的過濾器有多個.用戶請求就會依次通過所有關聯這個Web資源的過濾器.服務器會按照web.xml文件中過濾器定義的先后順序組裝成一條鏈.執行的順序也是沿著這條鏈. 當過濾器的doFilter()方法中的chain調用doFilter(request,response)方法.符合規則則會把請求傳遞給下一個過濾器,下一個過濾器依次調用chain.doFilter(),直到傳遞到Web資源.當Web資源處理完傳遞過來的請求并返回響應后.此時便執行doFilter()方法放行后的方法.過濾器把響應傳遞給用戶,從最接近Web資源的過濾器開始傳遞響應給用戶. 假設定義過濾器的順序為filter1、filter2、filter3.(都關聯同一個web資源或Servlet) 初始化順序(一啟動服務器時加載,根據web.xml的定義過濾器的順序初始化):filter1-->filter2-->filter3 過濾器執行順序:cilent發送request-->filter1-->filter2-->filter3-->Web資源-->Web資源發送響應返回-->通過filter3-->filter2-->filter1-->到達client. 其中doFilter()結束順序filter3-->filter2-->filter1.跟遞歸一樣,因為放行是chain.doFilter(),必須當此方法執行完,即當請求去到Web資源并處理完信息返回響應后,doFilter()方法便執行放行后的語句.然后就結束. 摧毀順序(關閉服務器):filter1-->filter2-->filter3.

    查看全部
  • <filter> ? ? ? ?<filter-name>FirstFilter</filter-name> ? ? ? ?<filter-class>com.imooc.filter.FirstFilter</filter-class> ? ?</filter> ? ?<filter-mapping> ? ? ? ?<filter-name>FirstFilter</filter-name> ? ? ? ?<url-pattern>/*</url-pattern> ? ?</filter-mapping> 注意: /index.jsp:只有index.jsp /index*:帶有index前綴的所有URL /*:所有URL “*”代表任意值。

    Ps1:<filter>...</filter>:只能有一個;但是<filter-mapping>...</filter-mapping>可以有多個。 Ps2:<filter>...<filter-name>Filter的名字</filter-name>...</filter>必須和<filter-mapping>...<filter-name>Filter的名字</filter-name>...</filter-mapping>一致。

    查看全部
  • 過濾器的生命周期. 1.實例化階段-->一啟動服務器就會從Web容器的web.xml文件中自動去加載實例化過濾器.且只會實例化一次.即生成了過濾器. 2.初始化階段-->生成過濾器之后便是初始化,加載一些初始化信息.調用init()方法.且只執行一次. 3.過濾階段-->執行過濾器的doFilter()方法進行過濾.執行n次的,凡是過濾器捕獲到用戶的請求,都會執行這個過濾方法. 4.銷毀階段-->當Web容器關閉即服務器關閉的時候,便執行destroy()方法銷毀.

    查看全部
  • JAVA過濾機制——過濾簡介 1、過濾器三部分:過濾源(用戶請求)——>過濾規則——>過濾結果 2、過濾器不處理結果,只做輔助性操作 3、定義:過濾器是一個【服務器端】的組件,它可以【截取用戶端的請求和響應信息】,并對這些信息過濾

    查看全部
  • 同一個URL請求要經過多個過濾器時,過濾器的執行順序按照過濾器在Web.xml中的定義順序來執行。

    查看全部
  • https://img1.sycdn.imooc.com//5add3f0d00017bf512560697.jpg

    查看全部


  • 1.一般filter都是一個鏈,web.xml 里面配置了幾個就有幾個。一個一個的連在一起?

    request -> filter1 -> filter2 ->filter3 -> …. -> request resource.

    2.chain.doFilter將請求轉發給過濾器鏈下一個filter , 如果沒有filter那就是你請求的資源

    想當于一個放行方法,之前的請求是到 index.jsp 放行后就會到index.jsp頁面 就會執行里面的代碼


    查看全部
  • 在過濾器對象的doFilter()方法中,業務邏輯處理完成之后,需要通過FilterChain對象的doFilter()方法將請求傳遞到下一個過濾器或者目標資源,否則將出現錯誤。

    查看全部
  • https://img1.sycdn.imooc.com//5add2fe40001fbb610410647.jpg

    查看全部
  • 過濾器鏈執行過程

    查看全部
  • 過濾器web.xml的配置

    查看全部

舉報

0/150
提交
取消
課程須知
童鞋們,過濾器是Java Web開發的內容。學習前需要掌握Java基礎知識、并熟悉JSP和Servlet。如未學習上述知識,可移步網站相關課程。
老師告訴你能學到什么?
通過本課程的學習,你可以了解過濾器的基礎知識,并可以自己動手編寫過濾器。

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!