、フィルタの概要
1、の概念
ウェブフィルタ:リソースアクセスサーバ、フィルタが要求を傍受することができる、いくつかの特別な機能を完了します。
2、の役割
操作を完了するための一般的な使用。以下のような:ログイン認証、統一符号化処理、敏感な文字やその他の機能。
第二に、基本的な使い方
図1に示すように、インターフェースフィルタを実装するクラスの定義
2、書き換え方法
3、切片パス構成
①web.xml構成
②配置されたコメント
図4に示すように、コードの実装
1 インポートのjavax.servlet。* ;
2 インポートjavax.servlet.annotation.WebFilter。
3 輸入にjava.io.IOException;
4
5 @WebFilter( "/ *" )
6 パブリック クラス FirstFilterが実装フィルタ{
7 公共 ボイド(破壊)を{
8 }
9
10 公共 ボイドのdoFilter(のServletRequest REQ、たServletResponse RESP、れるFilterChain鎖)スローServletExceptionがは、IOException {
11 のSystem.outを.println( "filterDemo1被执行了...." )。
12 // 放行操作
13 chain.doFilter(REQ、RESP)。
14 }
15
16 公共の ボイドのinit(に、FilterConfig設定)がスローServletExceptionが{
17
18 }
19
20 }
フィルタの第三に、細部
1、どのようにフィルタを設定するには?
(1)コンフィギュレーションノート
@WebFilterを追加()インターセプト資源であることをアクセス・パスを埋めるクラスにすることができます。
(2)web.xml構成
1 < フィルター>
2 < フィルタ名> DEMO1 </ フィルタ名> //フィルタの名前
。3 < フィルタクラス> cn.ks.web.filter.FilterDemo1 </ フィルタクラス> //完全なクラス名
4 </ フィルタ>
5。 < フィルタマッピング>
6。 < フィルタ名> DEMO1 </ フィルタ名>
7。 <! - ノックダウンパス- >
8 < URLパターン> / * </ のurl-pattern >
9 </ フィルタマッピング>
2、実行フローフィルタ?
(1)フィルタを実行します
(2)資源の実装がリリースされます
(3)バックコードフィルタ次のコードを実行放出
3、フィルタのライフサイクル・アプローチ?
(1)initメソッド:サーバーが開始された後、それはFilterオブジェクトを作成し、initメソッドを呼び出します。一度だけ行って、通常のリソースをロードするために使用。
(2)doFilterメソッド:すべてのリソース要求が遮断され、それが実行されます。実行複数回
(3)Destoryは:サーバーを閉じた後、フィルタオブジェクトが破棄されます。サーバが正常にシャットダウンされている場合は、destroyメソッドを実行します。一度だけ行って、一般的にリソースを解放するために使用。
詳細に図4に示すように、フィルタ構成?
(1)切片パス構成
1.特定のリソースパス:のみアクセスindex.jspのリソース/index.jsp、フィルタが実行されます
2.ブロックディレクトリ:/ユーザーの下のすべてのリソースに/管理/ *アクセス、フィルタが実行されます
3.インターセプト拡張子:*すべてのリソースへの.jsp接尾という名前のJSPへのアクセスは、フィルタが実行されます
4.インターセプトすべてのリソース:/ *すべてのリソースにアクセスするには、フィルタが実行されます
(2)インターセプトモード設定:リソースがアクセスされる方法
コンフィギュレーション・ノート:
dispatcherTypesプロパティを設定します。
プロパティ名 | 説明 |
要求 | デフォルト値。ダイレクトブラウザがリソースを要求します |
FORWARD | リソースへのアクセスを転送 |
含める | これは、リソースへのアクセスを含んでいます |
エラー | エラージャンプリソース |
ASYNC | リソースへの非同期アクセス |
web.xml構成:
设置 <dispatcher></dispatcher>标签,在里面填入上面的值即可。
5、过滤器链(配置多个过滤器)
(1)执行顺序:如果有两个过滤器:过滤器1和过滤器2
① 过滤器1
② 过滤器2
③ 资源执行
④ 过滤器2
⑤ 过滤器1
(2)过滤器先后顺序问题
① 注解配置:
规则:按照类名的字符串比较规则比较,值小的先执行。
如: AFilter 和 BFilter,AFilter就先执行了。
② web.xml 配置:
规则: <filter-mapping>谁定义在上边,谁先执行