ホームページ  >  記事  >  Java  >  Java でフィルターとリスナーを使用する方法

Java でフィルターとリスナーを使用する方法

王林
王林転載
2023-05-20 08:58:111459ブラウズ

    フィルター: フィルター

    コンセプト

    生活のフィルター: 浄水器、空気清浄機、バンディット、ウェブ フィルター: サーバー リソースにアクセスするとき、フィルターはリクエストをインターセプトし、いくつかの特別な機能を実行できます。フィルターの機能:

    は通常、一般的な操作を完了するために使用されます。例: ログイン検証、統合エンコード処理、機密文字フィルタリング...

    クイック スタート

    ステップ

    1. クラスを定義して実装するインターフェイス Filter

    2. メソッドのコピー

    ##3. インターセプト パスの構成

    • #web.xml

    • アノテーション

    コード

    @WebFilter("/*")//访问所有资源之前,都会执行该过滤器
    public class FilterDemo1 implements Filter {
    	@Override
    	public void init(FilterConfig filterConfig) throws ServletException {
    
    	}
    
    	@Override
    	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    		System.out.println("filterDemo1被执行了....");
    
    
    		//放行
    		filterChain.doFilter(servletRequest,servletResponse);
    
    	}
    
    	@Override
    	public void destroy() {
    
    	}
    }

    フィルターの詳細

    web.xml 構成

    <filter>
    	<filter-name>demo1</filter-name>
    	<filter-class>cn.zjq.web.filter.FilterDemo1</filter-class>
    </filter>
    <filter-mapping>
    	<filter-name>demo1</filter-name>
    	<!-- 拦截路径 -->
    	<url-pattern>/*</url-pattern>
    </filter-mapping>

    実行プロセスのフィルタリング

      #実行フィルタ
    • ##実行後のリソース
    • ##戻って、フィルター リリース コードの下のコードを実行します

    • ##フィルター ライフ サイクル メソッド

    ## init: サーバーの起動後、Filter オブジェクトが作成され、init メソッドが呼び出されます。実行されるのは 1 回だけです。リソースのロードに使用されます

      doFilter: リソースに対するリクエストがインターセプトされるたびに実行されます。複数回実行
    • destroy: サーバーがシャットダウンされた後、Filter オブジェクトは破棄されます。サーバーが正常にシャットダウンされると、destroy メソッドが実行されます。実行されるのは 1 回だけです。リソースを解放するために使用されます
    • フィルター構成の詳細

    • インターセプト パス構成:

    特定のリソース パス: /index.jsp フィルターは、index.jsp リソースにアクセスする場合にのみ実行されます。

      インターセプト ディレクトリ: /user/* /user 下のすべてのリソースにアクセスする場合、フィルターは実行されます実行されます
    • サフィックス名インターセプト: *.jsp すべてのサフィックス名 JSP リソースにアクセスすると、フィルターが実行されます
    • すべてのリソースをインターセプトします: /* すべてのリソースにアクセスするとフィルターが実行されます
    • インターセプトメソッドの設定: リソースへのアクセス方法
    • アノテーションの設定:

    dispatcherTypes 属性の設定

    • リクエスト: デフォルト値。ブラウザはリソースを直接リクエストします

    #FORWARD: アクセス リソースを転送します
    • #INCLUDE: アクセス リソースが含まれます

    • エラー: リソースのジャンプ中にエラーが発生しました

    • #ASYNC: リソースへの非同期アクセス

    • ##web.xml 構成設定ラベル
    • フィルターチェーン (複数のフィルターを設定)
    • 実行順序: 2 つのフィルターがある場合: フィルター 1 とフィルター 2

    Filter1

    フィルター 2

      リソースの実行
    • フィルター 2
    • フィルター1
    • フィルター順序の問題:
    • アノテーション構成: クラス名の文字列比較ルールに従って、小さい値が最初に実行されます
    • AFilter と BFilter の間では、AFilter が最初に実行されます。 2. web.xml 設定: 上記で定義した人が最初に実行します

    リスナー: リスナー

    • コンセプト

      : Web の 3 つの主要コンポーネントの 1 つ。イベント リスニング メカニズム

    イベント: イベント

    イベント ソース: イベントが発生した場所

    ##リスナー: オブジェクト

      リスナーの登録: イベント、イベント ソース、およびリスナーをバインドします。イベント ソースでイベントが発生すると、リスナー コード
    • ServletContextListener を実行します。ServletContext オブジェクトの作成メソッドと破棄メソッドをリッスンします。
    • void contextDestroyed(ServletContextEvent sce)

      : このメソッドは、ServletContext オブジェクトが破棄される前に呼び出されます

      void contextInitialized(ServletContextEvent sce)
    • : このメソッドは、ServletContext オブジェクトが作成された後に呼び出されます。 ステップ:
    • ServletContextListener インターフェイスを実装するクラスを定義します
    • ##メソッドをコピー

    Configuration# #web.xml

    <listener>
      <listener-class>cn.zjq.web.listener.ContextLoaderListener</listener-class>
    </listener>
      初期化パラメータの指定
    • 注:

    • @WebListener

    以上がJava でフィルターとリスナーを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。