便利なコードパーツ集!

やまろうのプログラミングTips

Java

[Java] XMLドリブンのフィルターフレームワークを作ろう!

投稿日:

2003/12

「XMLドリブンのフィルターフレームワーク」とはなんぞや?ということですが、
ServletコンテナのServletフィルタや、StrutsのActionクラスみたく、
XMLファイルを読み込んで、その情報を元にクラスを呼び出して、
引数で渡されたオブジェクトを加工して次のフィルタ(Action)に渡していく
っていうもののことです。そういう観点で見るとServletフィルタやActionクラスは
ServletRequest または HttpServletRequest、
ServletResponse または HttpServletResponse
にフィルタをかけるクラスだということが出来ます。

そこで、今回は、Mapオブジェクトに対してフィルタをかけるフレームワークを
作ってみたいと思います。なぜHttpServletRequestではなくMapにしたかと
いうと、コマンドラインで実行したいからです。まずはコマンドライン版で
作って、必要なら引数をHttpServletRequestに修正すればいいってことで。
というか、最近のフレームワークはServletコンテナ上じゃなくても
動くコンポーネントを作らせようという流れがあるのでむしろ、Mapのが
良いのかもしれません。

それじゃソース行ってみよう!(そのままコンパイル出来るように
すべて同一パッケージ、パッケージスコープのクラスにしてあります。)

スポンサーリンク



実行してみましょう!
1.コンフィグファイルを用意(filter-config.xmlという名前で保存)
[filter-config.xml]

<?xml version="1.0" encoding="ISO-8859-1" ?>
<filter-config>
<filters name="filters1">
<filter type="filter.SampleFilter" />
<filter type="filter.SampleFilter" />
<filter type="filter.SampleFilter" />
</filters>
<filters name="filters2">
<filter type="filter.SampleFilter" />
<filter type="filter.SampleFilter" />
</filters>
</filter-config>

2.コンパイル & 実行
このメルマガを適当なファイル名(FilterFramework.java)で
保存して、
>javac -d . *.java

>java filter.Main
女女女やまろう女女女
女女キムタク女女

実行結果の1行目は
(1)でfilters1を指定してるのでSampleFilterが3回実行されて
やまろうが女の子6人に囲まれてます。実際そんなことないけど(シュン)。

実行結果の2行目は
(2)でfilters2を指定してるのでSampleFilterが2回実行されて
キムタクが女の子4人に囲まれてます。キムタク人気ねぇー!?

あほプログラムですみません。でも、Servletフィルタもこれと同じよう
なしくみで動いているんだと思います。内面を見てってことよ!

いかがだったでしょうか?今回のプログラムを応用すれば、Strutsのような
フレームワークも作れるはずです。僕もいつかフレームワークを作ってみたい
と思っているのですが、アイデアがまだ浮かんでないんですよねー。どうせ作るなら
他に類を見ない斬新なものにしたいですからねぇ。

んじゃ
やまろう

スポンサーリンク

-Java

Copyright© やまろうのプログラミングTips , 2020 AllRights Reserved Powered by AFFINGER4.