JavaWeb - フィルタとリスナー

JavaWeb三大组件:サーブレット、フィルター、リスナー

1.Filter(フィルタ)

1.1。コンセプト

Web中的过滤器:リソースへのアクセス・サーバは、フィルタは、いくつかの特別な機能を完了するために、要求を傍受することができた場合

1.2。ロールフィルタ

一般用于完成通用的操作このようなログイン認証、統一符号化処理、敏感文字フィルタリングなど

1.3。クイックスタートフィルター

ステップ:

  • 1。定义一个类,实现接口Filter

ここに画像を挿入説明
新しい直接フィルタ
ここに画像を挿入説明
フィルターテンプレートを変更することができ、及び方法同様の変更サーブレットテンプレート:
ここに画像を挿入説明

  • 2。覆写方法
  • 3。配置拦截路径
  • 1。注解的配置
    ここに画像を挿入説明
  • 2。web.xml配置
    ここに画像を挿入説明

クイックスタートコードは次のとおりです。

package xpu.edu.web.Filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

@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() {

    }
}

1.4。フィルターの詳細

1.4.1。フィルタの実行フロー

  • 执行过滤器
  • 执行放行后的资源
  • 回来执行过滤器放行代码下面的代码
package xpu.edu.web.Filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

@WebFilter("/*")
public class FilterDemo2 implements Filter {
    public void destroy() {
    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        //对request对象请求参数增强
        System.out.println("FilterDemo2执行了");
        //放行
        chain.doFilter(req, resp);
        //对response对象的响应消息增强
        System.out.println("FilterDemo2回来了");
    }

    public void init(FilterConfig config) throws ServletException {

    }
}

1.4.2ライフサイクルフィルタ方式

  • init:サーバーが開始された後は、Filterオブジェクトを作成し、initメソッドを呼び出します、一度だけ実行通常、リソースをロードするために使用されます
  • doFilter:リソースを傍受したときにすべての要求が実行され、複数の実行
  • destroy:サーバーがシャットダウンされた後、サーバーが正常にシャットダウンされている場合、フィルタオブジェクトは、破壊され、それがdestroyメソッドを実行しますが、一度だけ実行一般的にリソースを解放するために使用されています

1.4.3。設定の説明をフィルター

  • 拦截路径的配置
  • 1.特定のリソースのパス:例えば「/index.jsp」としてのみアクセスindex.jspをリソース、フィルタが実行されます
  • 2.ディレクトリ傍受:例えば、「/ユーザ/ *」のように、すべてのリソース・フィルターは、ユーザーアクセスの下で実行されます。
  • 3.拡張傍受:例えば、「*の.jspファイル」として、リソースへのアクセスすべてのJSP接尾フィルタが実行されます
  • 4.インターセプトすべてのリソース:「/ *」、フィルタを実行するためにすべてのリソースにアクセスする必要があります
  • 拦截方式的配置
  • 傍受方法:リソースは、このようなへのアクセスを要求するために、ブラウザまたは転送として、アクセスされていますか
  • 傍受方法の設定

1. Notes構成:dispatcherTypesプロパティ、5つの値(実際に列挙)があります。

  • REQUEST:デフォルトのブラウザに直接リソースを要求
    ここに画像を挿入説明
  • FORWARD:リソースへのアクセスを転送
  • INCLUDE:リソースへのアクセスを含んでいます
  • ERROR:エラージャンプリソース
  • ASYNC:非同期アクセスリソース
  • 複数の値を設定します:
    ここに画像を挿入説明

2.web.xmlの
設定<ディスパッチャ> </ディスパッチャ>タグに
ここに画像を挿入説明

1.4.4。フィルタ・チェーン(フィルタの複数)

二つのフィルター、バックフィルタ2の前面にフィルタ1が存在する場合、それらは执行顺序次のとおりです。

  • フィルター1
  • フィルター2
  • 実装するためのリソース
  • フィルター2
  • フィルター1

2つのフィルタがあり、1をフィルタリングしたり、最初の2をフィルタリングする方法を知っていますか?問題があります:和配置有关

  • 1.設定注釈:クラス名に基づいて比較文字列比較ルールは、最初の値が小さくなっています。以下のような:AFilterとBFilter、AFilter最初の実行
  • 2.web.xml構成<フィルタマッピング>誰でも上記で定義され

2.Listener(リスナー)

2.1。コンセプト

リスナー:Web的三大组件之一、イベントの検出メカニズム

  • イベント:一つのこと
  • イベントソース:ローカル出来事
  • リスナー:オブジェクト
  • イベントは、イベントソース、リスナーのコードの実行に発生したときに、イベント、イベントソース、バインドリスナー:リスナーを登録します

2.2.ServletContextListener

ServletContextListener:作成し、2つのメソッドを持っているServletContextオブジェクトを、リスニング破壊します:

  • (ServletContextEvent SCE)contextDestroyedを無効:オブジェクトが破壊されるのServletContext場合、このメソッドが呼び出され
  • (ServletContextEvent SCE)contextInitializedを無効:ServletContextオブジェクトが作成された後、このメソッドが呼び出され

ステップ:

  • 1.インタフェースのServletContextListenerを実装するクラスの定義
  • 2.メソッドのオーバーライド
  • ここに画像を挿入説明
  • 3.設定
  • web.xmlの
    ここに画像を挿入説明
  • コメント
    ここに画像を挿入説明

おすすめ

転載: blog.csdn.net/LiLiLiLaLa/article/details/91128864