1

SpringWebアプリケーションを持っています。スパムをチェックできるように、各HTTPリクエストの最初に実行される一般的なコードをいくつか配置したいと思います。DispatcherServlet私は自分で設定しました。これは、すべてのHTTPリクエストの最初のエントリポイントでweb.xmlあることを意味します。DispatcherServlet私の質問はDispatcherServlet、最初に実行され、次にコントロールが要求されたアノテーションコントローラーに渡されるメソッドを提供するかどうかです。

4

3 に答える 3

4

私はデイブに同意します。探しているのは、マップされたURLにあるすべてのリクエストのフィルター/インターセプターです。従来、これはServletFilterを使用して行われました。ここにカスタムコードを配置します。例えば。

   public FooFilter implements ServletFilter {
    @Override
    void doFilter(ServletRequest request,
              ServletResponse response,
              FilterChain chain)
              throws IOException,
                     ServletException {
        // My Custom check for spam.
    }
}

カスタムコードをServletFilterに実装したら、必要なのはweb.xmlで構成することだけです。

<filter>
    <filter-name>FooFilter</filter-name>
    <filter-class>com.foo.servlet.filters.FooFilter</filter-class>
    <init-param>
        <param-name>test-param</param-name>
        <param-value>Test parameter.</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>FooFilter</filter-name>
    <url-pattern>/*</url-pattern> <!-- The URL to be filtered. -->
</filter-mapping>

フィルタを設定してWebリクエストをインターセプトする最も簡単な方法です。

Springフレームワークを使用する場合は、SpingのHandlerInterceptorを使用する必要があります。ここで見つけることができるものをいつ使用するかを取り巻く非常に良い投稿。

お役に立てれば。

于 2012-06-18T23:56:13.280 に答える
3

IMOこの種の機能はHandlerInterceptor(参照ドキュメント)に属します。

于 2012-06-18T23:24:42.810 に答える
0

フィルタは常にどのサーブレットよりも前に実行されるため、サーブレットフィルタは機能します。フィルタはDispatcherサーブレットの前に実行されますが、インターセプタはDispatcherサーブレットの後で実際のハンドラの前に実行されます。

于 2016-02-17T16:54:07.843 に答える