0

最終的にサーブレット s2に移動する前に、フィルター 1フィルター 2の 2 つのフィルターを順番に通過させたいと考えています。以下は、これらのマッピングを行う xml ファイルですが、filter-1 を filter-2 に、次に servlet-2 にマッピングする方法がわかりません。この xml をどのように変更して自分のやり方をマップする必要がありますか?

    <!-- filter tags -->

<filter>
    <filter-name>Filter-1</filter-name>
    <filter-class>Filters.Filter_1</filter-class>
</filter>

<filter>
    <filter-name>Filter-2</filter-name>
    <filter-class>Filters.Filter_2</filter-class>
</filter>

<filter-mapping>
    <filter-name>Filter-1</filter-name>
    <servlet-name>s2</servlet-name>
</filter-mapping>

<filter-mapping>
    <filter-name>Filter-2</filter-name>
    <servlet-name>s2</servlet-name>
</filter-mapping>

<!-- end of filter tags -->
4

2 に答える 2

0

この構成で

<filter-mapping>
    <filter-name>Filter-1</filter-name>
    <servlet-name>/*</servlet-name>
</filter-mapping>

<filter-mapping>
    <filter-name>Filter-2</filter-name>
    <servlet-name>/*</servlet-name>
</filter-mapping>

/s2 をリクエストする場合、リクエストは次の手順に従います。

  1. フィルター 1
  2. フィルター 2
  3. s2
  4. フィルター 2
  5. フィルター 1

ドキュメントをご覧ください。

フィルタのコードは次のようになります。

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
        ServletException {

    try {

        // your code for step 1 or 2

        chain.doFilter(request, response);

        // you code for step 4 or 5

    } catch (Exception e) {

        log.error("error" + e.toString());
    }

}
于 2012-09-03T14:34:20.010 に答える
0

<filter-mapping>web.xml 内のエントリの順序によって、フィルタ チェーン内の順序が決まります。

そのため、必要な順序でチェーンする必要があります。

ただし、フィルターをこの順序から独立させることをお勧めします。

于 2012-09-03T14:29:53.660 に答える