- ベストアンサー
DB検索条件を指定したHTMLフォームを検索後も残す方法(JSP)
首記の件ですこし教えてください。 DBに接続しブラウザ上で検索条件を入力し検索結果が 表示されるJSPを作っています。 検索条件を検索後も保持できるようにしたいです。 スクリプトレットでJavaコードを打ち込んで 実現してみたのですがJSPの本来のやり方として あまりふさわしくないのかと思います。 一般的にはどのような処理をすればよいでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
補足の通りですと、一般的にはcookieで良いのではないでしょうか。サーブレットでcookieを読み、内容をbeanに渡し、JSPでbeanからgetPropertyする、と。これならMVCに適ったつくりになると思います。cookieを受け付けないブラウザにはメッセージを出しつつデフォルト値の検索条件をセットすればOKでしょう。 「どうしても確実に検索条件を残す必要がある」のであれば、ログインIDと結合させてDBに条件を保存してももちろんOKでしょうね。ちょっと面倒だけど・・
その他の回答 (2)
- Bonjin
- ベストアンサー率43% (418/971)
何のために保持したいのかはわかりませんが、表示したいだけなら別ウィンドウ、何かに利用するならばセションに格納するという方法もあります。 セションに格納するにしても検索結果の量や同時接続数などでサーバのリソースが大量に消費されるので、それなりの設計が必要です。
- mizuno123
- ベストアンサー率47% (21/44)
検索結果を別ウィンドウで開くという手は使えませんか?それとも「検索後も保持する」と言うのは、次回ログイン時も何らかの形で条件を保存しておきたいということでしょうか? いずれにせよ、検索条件と同じウィンドウにsubmitするのであれば、フォームの内容を一度オブジェクトに格納しておくしかないと思います(当たり前のことですが・・)。スクリプトレットで実現してみた、という内容もどのようにでも解釈できますので、それが良いのか悪いのかもわかりません。<%=value%>くらいであれば必要悪だと思いますし。
補足
説明不足で申し訳ありません。 >検索結果を別ウィンドウで開くという手は使えませんか? 同じウィンドウで検索ボタンの下に表示させたいです。 >それとも「検索後も保持する」と言うのは、次回ログイン時も何らかの形で条件を保存しておきたいということでしょうか? 検索しても前回検索した条件をフォームに残しておきたいということです。 スクリプトレットで実現したというのは String inTestno = req.getParameter("testno"); if(inTestno != null) { pw.println(" <input type='checkbox' name='testno' value='TESTNO' checked>TESTNO"); } else { inTestno = ""; pw.println(" <input type='checkbox' name='testno' value='TESTNO'>TESTNO"); } みたいな感じでつらつらとJavaコードで書いたものです。 参考書やHPを見るとJavaBeansやらcookieやらを 使った方が本来のJSPの役割が出来るみたいなことが 書いてあったので少し混乱しています。
お礼
ありがとうございます。 大変参考になりました。