知識ポイント:
1、SpringBoot2.xフィルタフィルタとカスタムフィルタ(コア知識)を設定Servlet3.0を使用する
フィルタを理解するのは簡単です:人々 --->テラー(フィルター)--->アトラクション
フィルターの1)SpringBootのデフォルトのブートローダー
characterEncodingFilter
hiddenHttpMethodFilter
httpPutFormContentFilter
RequestContextFilter
2)フィルタの優先順位
Ordered.HIGHEST_PRECEDENCE
Ordered.LOWEST_PRECEDENCE
低値は高い優先度より高い値がより低い優先順位として解釈されることを意味する
として、それ以外の場合は、競合するカスタムフィルタ、フィルタ回避のデフォルトの優先度、
登録された豆FilterRegistrationBeanフィルタ
デフォルトフィルタ有し、関連モジュールと
WEB-> servlet->フィルタ
3)カスタムフィルター
A)を用いServlet3.0アノテーション構成
B)クラス@ServletComponentScan、スキャン増加プロモーター
C)新しいフィルタクラスは、フィルタを実装し、対応するインタフェースを実装する
フィルタクラスとしてラベル付けD)@WebFilterを、春スキャン
urlPatterns:ブロックルール、通常のサポート
E)chain.doFilterの制御方法は、放出によって達成されないかどうか、コール
; NO放出、Webアプリケーションresp.sendRedirect(「/ index.htmlを」)
、アクセス制御、ユーザ・ログイン(非絶縁遠位後方シーン)など:シーン
4)公式ウェブサイトのアドレス: https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-embedded-container-servlets-filters-listeners
2は、Servlet3.0注釈カスタムネイティブサーブレット戦闘が
説明:カスタム注釈Servlet3.0サーブレットとネイティブのリスナーを使用して
。1)カスタムネイティブサーブレット
@WebServlet(名= "userServlet"、urlPatterns = "/試験/税関" ) パブリック クラス UserServletが延びているのHttpServlet { @Override 公共 ボイドのdoGet(HttpServletRequestのREQ、HttpServletResponseのRESP)がスローServletExceptionがは、IOException { resp.getWriterを()。印刷( "カスタムsevlet」); 。resp.getWriter()フラッシュ(); resp.getWriter()に近いです(); } @Overrideが 保護 ボイド doPostメソッド(HttpServletRequestのREQ、HttpServletResponseのRESP)スローServletExceptionが、IOExceptionが{ これを.doGet(REQ、RESP)。 } }
3、Servlet3.0コメントカスタムネイティブリスナーリスナー戦闘
はじめに:はじめとServlet3.0リスナーのコメントカスタムネイティブリスナーリスナーの戦闘
1)カスタムザ・リスナー(共通リスナーのServletContextListener、のHttpSessionListener、servletRequestListener)
@WebListener パブリック クラス RequestListenerは実装ServletRequestListener { @Override 公共 ボイドrequestDestroyed(ServletRequestEventのSRE){ // TODO自動生成方法スタブ のSystem.out.println( "====== requestDestroyed ========を" ) ; } @Override 公共 ボイドrequestInitialized(ServletRequestEventのSRE){ するSystem.out.println( "====== requestInitialized ========" )。 }
図4は、SpringBoot2.Xカスタムインターセプタ戦闘と新旧の構成比較(コア知識)
説明:との間の差を説明するためのインターセプタの使用に関するチュートリアル、Spingboot2.x新しいバージョン構成インターセプタインターセプタおよびインターセプタ古いバージョンSpringBoot構成
1)@Configurationは
(WebMvcConfigurationAdapterを継承しました古いバージョンの前にSpringBoot2.X)
SpringBoot2.X新しいバージョンに構成インターセプターはWebMvcConfigurerを実装します
2)カスタムインターセプタHandlerInterceptor
preHandle:メソッドを呼び出す前に、コントローラー
コントローラー呼び出した後、コントローラは異常があらわれた場合にビューをレンダリングする前に、このメソッドは実行されません。postHandleを
afterCompletionを:例外かどうか、これはafterCompletionになりますリソースをクリーンアップすることが呼び出す
3)登録するために基づいて登録された傍受する最初が傍受されるように、
インターセプターは、よくある質問有効になりません:
A)@Configurationプラスあります
B)** *インターセプトし、質問へのパスがあるかどうか
c)の迎撃最後のパスは、それがある場合は、「/ *」にする必要があり、そのディレクトリは* /です/
フィルター
のdoFilterコールバック()に基づいており、AOPインタセプタが考え基づいて
フィルターのみ、インターセプタ前と例外がスローされた後などは、前後の方法に十分な深フロントサーブレットで働く
インターセプタせずに、Webアプリケーションのサーブレットコンテナすなわちに依存し、サーブレットコンテナに依存しては、様々な環境で実行することができます。
ライフサイクルと呼ばれるインタフェースは、インターセプタは複数回呼び出すことができ、かつコンテナが初期化されるときフィルターは一度だけ呼び出すことができます。
インターセプタと実行の順序フィルタ
>フロントノックダウン- - >アクションの実行- >傍受- >ろ過ろ過前に