[Spring] Filter, Interceptor


Filter


  • Dispatcherサーブレットは
  • 機能を提供し、要求の送信前/後にURLモードに適合するすべての要求に対して追加の操作を実行することができる.
  • は、Spring Containerではなく、TomcatなどのWebコンテンツによって管理されています.
  • フィルタのURL-PATTERN /*は、servlet、jsp、および画像を含むすべてのリソースを呼び出す.
  • は、スプリングに関係なく、グローバル処理を必要とするタスク
  • である.

    Filterメソッド

    public interface Filter {
    	public default void init(FilterConfig filterConfig) throws ServletException {}
        
    	public void doFilter(ServletRequest request, ServletResponse response,
        		FilterChain chain) throws IOException, ServletException {}
                
    	public default void destroy() {}
    }

  • init
    フィルタ・オブジェクトの初期化、サービスへの追加方法
    Web Contenterがフィルタオブジェクトを初期化するために一度呼び出すと、要求はdoFilterによって前後処理されます.

  • doFilter
    URLモードに適合するすべてのHTTP要求をDispatcher Serviceに送信する前/後にWeb Contenterが実行する方法

  • destroy
    サービスからフィルタ・オブジェクトを削除し、リソースを返します.
    Web Contenterから一度呼び出す
  • Interceptor


  • Springが提供する機能
  • は、Dispatcherサーブレットがコントローラを呼び出す前後で要求および応答を参照または加工することができる.
  • インタフェースはSpring Containerで動作するため、Dispatcherサーブレットが要求を受信した後、フィルタによって
  • の動作を実行する
  • クライアント要求に関連するグローバルトランザクション
  • の処理

    Interceptorメソッド

    public interface HandlerInterceptor {
    	default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 
    		return true;
    	}
        
    	default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
    		@Nullable ModelAndView modelAndView) throws Exception {}
        
    	default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
    		@Nullable Exception ex) throws Exception {}
    }
    

  • preHandle
    コントローラが呼び出される前に起動し、コントローラの前に処理する必要がある前処理タスクまたは要求情報を加工または追加します.
    戻りタイプboolean-trueは次のステップに進むことを示し、falseは停止操作を示し、次のステップXに進む

  • postHandle
    コントローラを呼び出して実行し、コントローラの後にポストプロセスタスクを処理する必要がある場合に使用します.

  • afterHandle
    すべてのタスクを完了したら、すべてのビューで最終結果を生成することを含めて実行します.
  • Filter vs Interceptor


    Filter
    管理コンテナ:WebコンテナWebコンテナ
    要求/応答操作:O
    用途:
  • セキュリティ汎用タスク
  • すべての要求を記録/チェック
  • 画像/データ圧縮および文字列符号化
  • Interceptor
    コンテナの管理:スプリングコンテナ
    要求/応答操作:X
    用途:
  • 認証/承認などの一般的なタスク
  • コントローラの情報加工
  • 記録/検査
  • API呼び出し