麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 網站 > WEB開發 > 正文

學習筆記——JavaWeb過濾器

2024-04-27 15:17:14
字體:
來源:轉載
供稿:網友

學習筆記——javaWeb過濾器

1.什么是過濾器

過濾器是一個服務器端組件,它可以截取用戶端的請求與相應信息,并對這些信息過濾。

簡單說,就是可以實現web容器對某資源的訪問前截獲進行相關的處理,還可以在某資源向web容器返回響應前進行截獲進行處理。

2.過濾器的工作原理和生命周期

2.1工作原理

根據過濾器在Web.xml中的設置,特定的網址會經過特定的過濾器。隨后通過過濾器的處理,再將處理過的用戶請求發送至web資源,資源響應之后再發送到過濾器,過濾器再處理之后,才發送給用戶。

2.2 生命周期

過濾器在Tomcat服務器啟動時加載,通過Web.xml中的設置實例化,之后通過Filter.init()方法初始化。在觸發過濾要求時,調用Filter.doFilter()執行過濾處理。最后在Tomcat服務器關閉時,調用Filter.destroy()銷毀過濾器。

2.3 過濾器鏈

當一個請求符合多個過濾器的要求是,就會形成過濾器鏈。服務器會按在web.xml中過濾器定義的順序將過濾器組裝成一條鏈,用戶請求通過這條鏈訪問web資源。
具體處理過程:
多個過濾器的情況下,會先執行第一個過濾器chain.doFilter()前的代碼,然后doFilter()到達第二個過濾器。第二個過濾器也會先執行chain.doFilter()前的代碼,然后doFilter()到達Servlet.service()方法。之后在返回過濾器2doFilter()之后的代碼,在返回過濾器1doFilter()之后的代碼,最后才返回用戶。

3.如何編寫一個簡單過濾器

3.1過濾器的三個主要方法

編寫過濾器之前,先熟悉一下過濾器的三個主要方法:

3.2 繼承 javax.servlet.Filter

開始編寫第一步:繼承
public class MyFirstFilter implements javax.servlet.Filter

3.3 重寫doFilter

第二步:重寫
public void doFilter(javax.servlet.ServletRequest req, javax.servlet.ServletResponse resp, javax.servlet.FilterChain chain) throws javax.servlet.ServletException, IOException {        //你的代碼        chain.doFilter(req, resp);    }

3.4 注冊Filter

第三步:注冊

4.過濾器的分類

過濾器根據其處理的請求類別,分為5類。Servlet2.5中定義了request,Forward,Include,Error四類,而Servlet3.0中定義了第5類:Async。下圖中的RequestDispatcher的forward方法等于<jsp:forward>方法,同理,include等于<jsp:include>方法。第5類,Async用于通過過濾器訪問的Servlet有大量耗時操作時,可直接回到過濾器chain.doFilter()之后的代碼運行,讓Servlet異步運行計算操作。

5.過濾器的應用

1.登錄驗證1.1將過濾器的url地址設為“/*”
  <filter-mapping>    <filter-name>MyFirstFilter</filter-name>    <url-pattern>/*</url-pattern>    <dispatcher>REQUEST</dispatcher>  </filter-mapping>1.2查看session中是否有登錄名
public void doFilter(javax.servlet.ServletRequest req, javax.servlet.ServletResponse resp, javax.servlet.FilterChain chain) throws javax.servlet.ServletException, IOException {        HttpServletRequest request = (HttpServletRequest) req;        HttpServletResponse response = (HttpServletResponse) resp;               HttpSession session = request.getSession();        String username = (String) session.getAttribute("username");        if ("".equals(username) || username == null) {            response.sendRedirect("login.jsp");        }        chain.doFilter(req, resp);    }2.編碼 轉換在過濾其中添加以下語句:
   request.setCharacterEncoding("UTF-8");

6.過濾器的其他問題

1.過濾器能否改變用戶請求的資源,即改變用戶請求的路徑?答:可以的。過濾器可通過,request.sendRedirect()方法或response.getDispatcher().forWord()方法改變用戶請求的路徑。2.過濾器能否直接誒返回數據?答:不能。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 免费色片 | 成人做爰www免费看 欧美精品免费一区二区三区 | 一级黄色欧美 | 在线a亚洲视频播放在线观看 | 国产免费观看一区二区三区 | 久久久久国产成人免费精品免费 | 亚洲国产精品一区二区精品 | 黄色大片大毛片 | 在线成人免费观看 | 中文字幕精品在线播放 | 日日草夜夜草 | 国产va在线观看 | 久久精品视频国产 | 日韩区在线 | 综合激情网 | 国产精品视频2021 | 九九视屏 | 国产成人av在线播放 | 国产精品久久久久av | 欧美一级毛片免费观看 | 日本道中文字幕 | 密室逃脱第一季免费观看完整在线 | 福利一区二区三区视频在线观看 | 国产成人精品网站 | 久国产 | 欧美a级毛片| xxxx8| 99麻豆久久久国产精品免费 | 免费人成在线播放 | 成人在线视频免费观看 | 亚洲电影免费观看国语版 | 精品国产96亚洲一区二区三区 | 国产精品成人av片免费看最爱 | 性生活视频软件 | 最近日本电影hd免费观看 | 久久精品国产清自在天天线 | 性爱视频免费 | 一区免费| caoporn国产一区二区 | 亚洲国产一区二区三区 | 久久久久免费精品国产小说色大师 |