今週木曜日から夏休みです。かんばります。

で、今日は検索結果をCSV出力できるようにコーディングしました。

検索結果の画面にボタンを作り、クリックで出力サーブレットにジャンプします。

検索結果をコレクションなり変数なりに突っ込んで、はい内容を出力ーとかが理想的なんでしょうが、見つかったファイル出力のサンプルは、メソッド内にSQLが書いてあって、実行してその結果を出力してるやつでした。
なのでこのSQLの部分に検索で使ったSQLが入った変数持ってくればいいじゃ~ん、ということに。

ところが

本来のSQL
→select * from book;
このメソッドに持ってきたときのSQ
→select

!!!???
変数の中身減ってますが!?

デバッグして調べても、元のメソッドではきちんとSQL文。だけど出力サーブレットにくると途端にただのselectの文字列。

どんな配送ミス?

また明日時間かかりそうだったら、先輩に聞いてみよう。
昨日まで作っていた更新・削除機能は、総務課の方にしか見せたくないもの。

なので、他の人にはボタンを表示させたくないわけ。というわけで、そんなコーディングをば。

ログインしている人の権限は、isUserInRoleで取ってきます。例えば

boolean role =request.isUserInRole("見てみたい権限名")

あ、Tomcatのserver.xmlやアプリケーションのweb.xmlでレルムの設定とかしとかないとだめだけど。

これで権限を規定してるデータベースを見て、()の中の権限を持ってたらtrue、持ってなかったらfalseを変数roleに返してくれます。

roleがtrueならボタン表示、falseなら表示しない、ってやればおしまいです。
ここまで思い通りになったのは正直初めて(笑)。
書籍データを削除できるJSPとサーブレットが完成ました。

検索結果一行一行に削除のボタンがついていて、削除ボタンを押した行が削除されるという形になってます。

検索結果表示はJavaの方で書いてあって、結果画面のJSPではそのメソッドを呼び出してるだけ、という状態。
なのでボタンの表示もJavaで指定してます。
おかげでエスケープシーケンスにだいぶ悩まされ、挙げ句変数を指定できなくて散々悩み、+で変数を囲めばいいだけという事実に気づくのに午前中いっぱいかかったという始末。

おかげさまで削除できるようになりました。

さあ次は更新よ。