Springにおける責任連鎖の動的設定方法について教えてください。

Springでは、HandlerInterceptorインターフェイスを使用して責任連鎖を動的に構成できます。

動的な責務連鎖を設定するには、以下の手順を実行する必要があります

  1. ハンドラインターセプター
  2. プレハンドル
  3. ポストハンドリング
  4. 完了後
  5. 前処理
  6. ハンドラインターセプタ
  7. パスのパターンを除外する
  8. ハンドラーインターセプター

このコードブロックをご覧ください。

public class MyHandlerInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 根据需求判断是否需要将请求转发给下一个处理器
        if (shouldForward(request)) {
            return true;
        } else {
            // 将请求转发给其他的处理器
            RequestDispatcher dispatcher = request.getRequestDispatcher("/otherHandler");
            dispatcher.forward(request, response);
            return false;
        }
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        // 在请求处理之后执行特定的操作
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        // 在请求完成之后执行特定的操作
    }

    private boolean shouldForward(HttpServletRequest request) {
        // 根据需求判断是否需要将请求转发给其他的处理器
    }
}

Springの設定ファイルで、MyHandlerInterceptorのBeanを設定し、それに対応するパス一致ルールを追加しました。

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <bean class="com.example.MyHandlerInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>

上記のコンテクストでは、MyHandlerInterceptorがすべてのリクエストパスに適用されることを意味します。実際の必要性に応じてパス一致ルールを調整できます。

bannerAds