Servlet日記(1999/02/23)

本日の成果

 servletに初期値を渡すしくみが用意されているので、今回はそれを使ってみます。たぶん、これがなくても何とかなるのだと思いますが、まあ、あれば悩む必要もないわけで。

 2つの初期値を渡して、QueryStringが空かどうかでどちらを使うか決めています。単に文字列を表示してもつまらないと思ったのですが、画像を表示してもやっぱりつまらないですね。

String fname;
int c;

if (req.getQueryString() == null)
    fname = getInitParameter("fname");
else
    fname = getInitParameter("fname2");

res.setContentType("image/gif");
ServletOutputStream out = res.getOutputStream();
BufferedInputStream bis = new BufferedInputStream(
    new FileInputStream(fname));
while ((c = bis.read()) != -1)
    out.write(c);

 ここまではスムーズに進んだのですが、今回のポイントは、初期値をどのようにコンフィグファイルservlet.propertiesに書くか、という思わぬところにありました。試行錯誤の結果、次のように名前と値を等号で結んだものをコンマで区切ればよいようです。

 今までも出てきましたが、Win32では、ディレクトリの区切りにバックスラッシュだけでなく、スラッシュも使えます(commandやcmdシェルでは使えませんが)。バックスラッシュは何かと問題が起こるので、スラッシュを使っています。

servlet.InitParam.initArgs=fname=c:/nn.gif,fname2=c:/ie.gif

 これで、QueryStringの有無により、初期値で指定した二種類の画像を表示するようになりました。

本日の教訓

 servletへの初期値は、getInitParameter()で取り出そう。

Servlet日記(1999/02/21) Servlet日記の目次 Servlet日記(1999/03/03)