スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Spring MVCとFilterを使ってみる(その2)

前回の記事でFilterについて記載したが、今回複数Filterを使用した場合の動作(FilterChain)について検証する。
Spring MVCとFilterを使ってみる

使用するFilterは前回作成したEncodingFilterと今回作成するLogFilterで確認する。

◎動作検証にあたっての各バージョンは以下の通り
  • SpringFramework 3.2.3.RELEASE
  • Java 1.7
  • Tomcat 7.0

1.LogFilter


package jp.co.sample.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LogFilter implements Filter {

private static Logger logger = LoggerFactory.getLogger(LogFilter.class);

public void init(FilterConfig config) throws ServletException {
}

public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {

logger.info("doFilter start");
chain.doFilter(req, res);
logger.info("doFilter end");
}

public void destroy() {
}
}

内容は至ってシンプルで、chain.doFilter(req, res);の前後にlogger.infoを追加している。
また、EncodingFilterクラス側も同様に、chain.doFilter(req, res);の前後にlogger.infoを追加する変更を行っている。

2.web.xml



characterEncodingFilter

jp.co.sample.filter.EncodingFilter


encoding
UTF-8



characterEncodingFilter
/book/create



logFilter

jp.co.sample.filter.LogFilter



logFilter
/book/create


フィルタの処理順は記載順となる。今回EncodingFilter→LogFilterとしている。

3.動作確認
URL:http://localhost:8080/SpringWebSample/book/create



INFO EncodingFilter#doFilter - doFilter start
INFO LogFilter#doFilter - doFilter start
INFO BookController#create - create start
INFO LogFilter#doFilter - doFilter end
INFO EncodingFilter#doFilter - doFilter end

EncodingFilter#doFilter→LogFilter#doFilter→BookController#create→LogFilter#doFilter→EncodingFilter#doFilterの順で処理されていることが確認できた。(※「create end」は用意していない)

◎まとめ
前回・今回とサーブレットの世界になってしまったが、フィルタを検証するよい機会となった。

■過去のSpring関連記事
Spring関連記事 Index

スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

bookmount8

Author:bookmount8
システムエンジニア。サーバーサイドでjavaを扱うことが多い。最近は、ミドルやフロント周りも関心あり。

最新記事
カテゴリ
検索フォーム
最新コメント
月別アーカイブ
これまでの訪問者数
ブロとも申請フォーム

この人とブロともになる

RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。