複数のFilterが1つのリソースをフィルタリングしていることを確認するときの実行順序

1419 ワード

複数のFilterが1つのリソースをフィルタリングする場合、実行順序はどのようになりますか?
次のテストを行います.
同じindexをフィルタする2つのFilter,FirstFilter,SecondFilterを定義する.jspページ、そしてSecondFilterのマッピングはFirstFilterの後ろに書きます
2つのFilterのdoFilter()メソッドに出力文を追加します.
例えばFirstFilterのdoFilterメソッド:
@Override

    public void doFilter(ServletRequest request, ServletResponse response,

            FilterChain chain) throws IOException, ServletException {

        System.out.println("FirstFilter doFilter begin--------------------1");

        chain.doFilter(request, response);

        System.out.println("FirstFilter doFilter end  --------------------2");

    }

同理SecondFilter,表記3,4
indexでjspページに書くJavaコード出力5:<%System.out.println("index.jsp--------------------------------------5");%>
tomcatを起動したらindexにアクセスします.jsp、コンソール出力は以下の通りです.
FirstFilter doFilter begin--------------------1SecondFilter doFilter begin---------------------3index.jsp--------------------------------------5SecondFilter doFilter end  ---------------------4FirstFilter doFilter end  --------------------2
以上の結果から、実行手順がわかりやすくなりました