1。スプリングアプリケーションでは、フィルタリングの2つの使用があり、1つはインターセプター、もう1つはもちろんフィルターです。ここで、スプリングブートでフィルターの使用を紹介します。 SpringMVCでのフィルターの使用は基本的に同じですが、構成には少し違いがあります。
2.フィルター関数により、ユーザーはリクエストを変更して応答を変更できます。フィルターはサーブレットではなく、応答を生成できません。リクエストがサーブレットに到達する前にリクエストを事前に処理するか、サーブレットを離れるときに応答を処理できます。言い換えれば、フィルターは実際には「サーブレットチェーン」(サーブレットチェーン)です。
フィルターには以下が含まれます:
1)サーブレットが呼び出される前の傍受。
2)サーブレットが呼び出される前に、サーブレットリクエストを確認します。
3)必要に応じてリクエストヘッダーとリクエストデータを変更します。
4)必要に応じて応答ヘッダーと応答データを変更します。
5)サーブレットが呼び出された後に傍受されます。
1。フィルターのアプリケーションシナリオ
フィルターフィルターの理解により、次の3つの状況でいくつかの処理を行うことができることがわかります。
1> Chain.dofilterメソッドへの呼び出しを制御して、ターゲットリソースにアクセスする必要があるかどうかを決定します。
たとえば、ユーザー許可などで確認できます。ユーザーが特定のリソースにアクセスする許可を持ち、リリースの許可を持ち、許可なくCHAIN.DOFILTERメソッドを実行しないかどうかを判断します。
2> Chain.dofilterメソッドを呼び出す前に、いくつかの処理を行うことにより、いくつかの目的が達成されます。
たとえば、中国の文字化けコードなどの問題を解決します。DoFilterメソッドの前に、設定要求のエンコードと応答のエンコードを実行できます。リクエストインターフェイスをカプセル化して飾ることもできます。
3> Chain.dofilterメソッドを呼び出した後、何らかの処理を行うことにより、いくつかの目的が達成されます。
たとえば、Webサイト全体を圧縮します。 Chain.dofilterメソッドを呼び出す前に、クラスAで応答オブジェクトをカプセル化して飾り、GetOutputStreamをオーバーライドし、GetWriterメソッドをオーバーライドします。クラスAの内部では、出力コンテンツがbytearrayoutputStreamストリームにキャッシュされ、Chain.dofilterメソッドが実行された後、クラスAのbytearrayoutputStreamストリームキャッシュデータが取得され、GzipOutputStreamストリームで圧縮されます。
2。フィルター傍受の原理
フィルターインターフェイスにはドフィルターメソッドがあります。開発者がフィルタークラスを書き込み、DoFilterメソッドを実装し、どのWebリソースをインターセプトするかを構成すると、Webサーバーは最初にWebリソースのサービスメソッド(サーバーの内部アクセスメカニズムで決定)を呼び出す前に、最初にフィルターのDoFilterメソッドを呼び出します。
3。フィルタリングルール
//アプリケーション内のすべてのリソースをフィルタリングします。現在のアプリケーションのルートに基づくすべてのファイルには、マルチレベルのサブディレクトリの下のすべてのファイルが含まれます。 *には、「/」登録.addurlpatterns( "/ *")が先行することに注意してください。 //指定されたタイプファイルリソースをフィルタリングします。すべてのHTMLファイルは、現在のアプリケーションのルートの下にあります。注: *.htmlの前に「/」はありません。 //指定されたディレクトリの下ですべてのファイルをフィルタリングします。現在のアプリケーションのルートの下にあるfolder_name subdirectory(マルチレベルのサブディレクトリにすることができます)の下のすべてのファイル。addurlpatterns( "/folder_name/*"); //指定されたファイル登録をフィルタリングします。Addurlpatterns( "/index.html");
iii。応用
@component @servletcomponentscan @webfilter(urlpatterns = "/login/*"、filtername = "loginfilter")public class loginfilter expments filter {@override public void init(filterconfig filterconfig)スローServletexception {} @Overrid FilterChain FilterChain)IOException、Servletexception {} @Override public void Destroy(){}}4。説明:
1.この注釈@Componentの目的は、ログインフィルターを処理のためにコンテナに引き渡すことです。つまり、LoginFilterを機能させることです
2。@servletcomponentsCanこれは、@webfilterをスキャンして@webfilterを機能させるために使用されます。もちろん、サーブレットワイヤチューブを説明することもできます。この@servletcomponentscanは、アプリケーションである一般的な構成をアンインストールするのに最適です。ここにはフィルターが1つしかないので、アプリケーションに書きませんでした。
3。@webfilterは明らかな使用です。フィルタリングにはどのリンクが使用され、なぜフィルターの名前は何ですか?
5.SpringMVCでのフィルターの使用に関する簡単な紹介
1.ライティング方法はまだ同じです。フィルターを継承して3つのメソッドを実装して処理します。
2。コンテナに投げる:これはweb.xmlで構成する必要があります
<filter> <filter-name> loginfilter </filter-name> <filter-class> com.troy.boot.filter.loginfilter </filter-class> </filter> <filter-mapping> <filter-name> loginfilter </filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
3.自分で特定の使用法を研究できます。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。