2009年8月23日日曜日

サーブレットからのパラメータ解析

Apache上のサーブレットに対して、getやpostでパラメータを指定した場合には、以下のようにget/postのhttpServletRequest型パラメータ変数のgetParameterメソッドを呼び出してその値を取り出します。

[例] String p = req.getParameter("パラメータ名");

しかし、このAPIでは、まず、パラメータ名文字列を引数に指定するため、ブラウザからどのようなパラメータ名が存在するか予め知っておく必要があります。

Yawdbaでは、ブラウザから指示された多様なパラメータを知るために、ブラウザで指示されたパラメータを自動的に調べる必要があります。そこで、私は、次のようなロジックでパラメータの自動取り出しを行っています。

Enumeration e;
int c;
for(e = req.getParameterNames(); e.hasMoreElements();) {
String name = (String)e.nextElement();
String p =  req.getParameter(name);
}

すなわち、httpServletRequest型のreqを用いて、req.getParameterNames()で列挙型のeを取得し、e.nextElement()で名前を取り出しながら、e.hasMoreElements()になるまで繰り返し処理を行います。あとは、ルール内でパラメータ名文字列が取り出されましたので、あとは、getParameterでその値を取り出します。上の例では、そのまま文字列を取り出していますが、ArrayListなどを用いれば、全てのパラメータを取り出すことが可能です。

使ってみては如何でしょうか?

0 件のコメント:

コメントを投稿