91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaWeb中怎么使用Filter和Listener

發布時間:2021-03-08 13:51:15 來源:億速云 閱讀:192 作者:TREX 欄目:開發技術

這篇文章主要講解了“JavaWeb中怎么使用Filter和Listener”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“JavaWeb中怎么使用Filter和Listener”吧!

Filter:過濾器

      過濾器:當訪問服務器的資源時,過濾器可以將請求攔截下來,完成一些特殊的功能。一般用于完成通用的操作。如:登錄驗證、統一編碼處理、敏感字符過濾...

      過濾器相當于瀏覽器與 Web 資源之間的一道過濾網,在訪問資源之前通過一系列的過濾器對請求進行修改、判斷以及攔截等,也可以對響應進行修改、判斷以及攔截等。

執行流程:

客戶端發出請求,先經過過濾器, 如果過濾器放行,那么才能到servlet

如果有多個過濾器, 那么他們會按照注冊的映射順序 來 排隊。 只要有一個過濾器, 不放行,那么后面排隊的過濾器以及咱們的servlet都不會收到請求。

使用方法:

        1.定義一個類,實現接口Filter。

        2.重寫其中的方法(執行攔截的動作)

        3.配置攔截路徑:使用注解@WebFilter或web.xml

@WebFilter("/*")//訪問所有資源之前,都會執行該過濾器
public class FilterDemo1 implements Filter {
       @Override
       public void init(FilterConfig filterConfig) throws ServletException {
            //過濾器初始化的方法,一般用于申請資源
   // init:在服務器啟動后,會創建Filter對象,然后調用init方法。只執行一次。用于加載資源
       }
            
       @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
   //執行攔截的動作,具體的攔截邏輯寫在這里  
   //doFilter:每一次請求被攔截資源時,會執行。執行多次         
   System.out.println("filterDemo1被執行了....");
            
           //放行
           filterChain.doFilter(servletRequest,servletResponse);
            
       }
            
       @Override
       public void destroy() {
            //過濾器銷毀的方法,一般用于釋放資源
   //destroy:在服務器關閉后,Filter對象被銷毀。如果服務器是正常關閉,則會執行destroy方法。只執行一次。用于釋放資源
       }
}

過濾器配置詳解

       攔截路徑配置:

                1. 具體資源路徑: /index.jsp   只有訪問index.jsp資源時,過濾器才會被執行

                2. 攔截目錄: /user/*    訪問/user下的所有資源時,過濾器都會被執行

                3. 后綴名攔截: *.jsp        訪問所有后綴名為jsp資源時,過濾器都會被執行

                4. 攔截所有資源:/*        訪問所有資源時,過濾器都會被執行

Listener:監聽器

Servlet 規范中定義的一種特殊的組件,用來監聽 Servlet 容器產生的事件并進行相應的處理。

事件監聽機制

            * 事件    :一件事情

            * 事件源 :事件發生的地方

            * 監聽器 :一個對象

            * 注冊監聽:將事件、事件源、監聽器綁定在一起。 當事件源上發生某個事件后,執行監聽器代碼

ServletContextListener

           在 ServletContext 創建和關閉時都會通知 ServletContextListener 監聽器。

           需要在 web.xml 里面配置監聽器。

使用方法:

           1.定義一個類,實現ServletContextListener接口。

           2.重寫方法。

           3.進行配置

ServletContextListener:監聽ServletContext對象的創建和銷毀

* 方法:
  * void contextDestroyed(ServletContextEvent sce) :ServletContext對象被銷毀之前會調用該方法
  * void contextInitialized(ServletContextEvent sce) :ServletContext對象創建后會調用該方法

使用Filter的登錄攔截的案例

@WebFilter("*.jsp")
public class FilterTest1 implements Filter {
 public void destroy() {
 }
 
 public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
  //判斷是否已經登錄了,如果沒有登錄就需要跳轉到登錄界面,但是如果訪問的資源路徑本來
  //就是登錄頁面,那么就不需要攔截了,這里需要進行判斷排除
 
  //記得強制轉型
  HttpServletRequest request = (HttpServletRequest)req ;
 
  //獲取session對象,看看對應的屬性是否有值
  HttpSession session = request.getSession();
  Object login = session.getAttribute("login");
 
  //獲取url路徑,看看里面是否是登錄資源相關的
  String requestURI = request.getRequestURI();
 
  //在過濾掉登錄相關時,一定要排除一些js,css文件
  if (login != null || requestURI.contains("/longin.jsp") || requestURI.contains("/css/") ||
    requestURI.contains("/js/") || requestURI.contains("/fonts/") ) {
   chain.doFilter(req, resp);
  } else {
   request.getRequestDispatcher("/longin.jsp").forward(request, resp);
  }
 }
 
 public void init(FilterConfig config) throws ServletException {
 
 }
 
}

總結

感謝各位的閱讀,以上就是“JavaWeb中怎么使用Filter和Listener”的內容了,經過本文的學習后,相信大家對JavaWeb中怎么使用Filter和Listener這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

通海县| 庄河市| 西充县| 黑山县| 福安市| 朝阳市| 麻江县| 沁阳市| 汽车| 海口市| 克什克腾旗| 织金县| 潜江市| 乐安县| 从江县| 丰台区| 黄梅县| 昌宁县| 和静县| 新巴尔虎右旗| 民勤县| 右玉县| 锡林郭勒盟| 那坡县| 策勒县| 台北市| 深水埗区| 濉溪县| 昌邑市| 临夏市| 上思县| 新龙县| 莱阳市| 长春市| 富源县| 新昌县| 金秀| 白城市| 兴隆县| 荥经县| 肇东市|