こんにちは。

先日本番運用中のシステムにて障害を起こした者です。
※障害の内容については、
java filterプログラム追加での文字化け対応について
を参照ください。

対応策として、filter-mappingについて再配置する必要があるのですが、実際、どこに配置すべきか分からずに困っているところです。

【環境】
OS:CentOS release 6.5 (Final)
tomcat:6.0.39
apache:2.2.21
java:1.7.0_45

【現在のfilter-mapping】

<filter>
    <filter-name>encodingfilter</filter-name>
    <filter-class>org.seasar.extension.filter.EncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>Windows-31J</param-value>
    </init-param>
</filter>

<filter>
    <filter-name>requestDumpFilter</filter-name>
    <filter-class>org.seasar.extension.filter.RequestDumpFilter</filter-class>
</filter>

<filter>
    <filter-name>hotdeployfilter</filter-name>
    <filter-class>org.seasar.framework.container.hotdeploy.HotdeployFilter</filter-class>
</filter>

<filter>
    <filter-name>s2filter</filter-name>
    <filter-class>org.seasar.framework.container.filter.S2ContainerFilter</filter-class>
</filter>

<filter>
    <filter-name>routingfilter</filter-name>
    <filter-class>org.seasar.struts.filter.RoutingFilter</filter-class>
    <init-param>
        <param-name>jspDirectAccess</param-name>
        <param-value>false</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>encodingfilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<filter-mapping>
    <filter-name>hotdeployfilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
    <dispatcher>ERROR</dispatcher>
</filter-mapping>

<filter-mapping>
    <filter-name>s2filter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
    <dispatcher>ERROR</dispatcher>
</filter-mapping>

<filter-mapping>
    <filter-name>NDCfilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<filter-mapping>
    <filter-name>routingfilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>

<filter-mapping>
    <filter-name>requestDumpFilter</filter-name>
    <url-pattern>*.do</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
    <dispatcher>ERROR</dispatcher>
</filter-mapping>

【追加したいfilter-mapping】

<filter>
    <filter-name>NDCfilter</filter-name>
    <filter-class>util.NdcFilter</filter-class>
</filter>
<filter>
    <filter-name>NDCfilter</filter-name>
    <filter-class>util.NdcFilter</filter-class>
</filter>

「encodingfilter」より後ということはわかっているのですが、そもそもそれぞれのフィルターの意味があまりよくわからずに障害を発生させてしまった反省もあり、意味も合わせて知りたいと思っています。

そこで、次の2点について、ご教示いただきたく、よろしくお願いします。
①各fillterについて、どんな役割をもっているか。
②【追加したいfilter-mapping】を追加する位置はどこが適当か。

ご協力よろしくお願いします!

【追記(8/9)】
A-pZ 様、コメントありがとうございます。
filter定義についても追加いたしました。
フレームワークはstrutsを使っています。

もし足りない情報が他にもありましたら、追記しますのでよろしくお願いします。