プロが教える店舗&オフィスのセキュリティ対策術

コンボボックスやリストボックスに
データベースの値で設定するときについて疑問があります。

現システムでは
JSP内でsqlタグを使ってレコードセットを取得し
<core:forEach>でぐるぐるまわして値をセットしています。
↓こんな感じです。
-----------------------------------------------------------
<sql:setDataSource var="db" dataSource="jdbc/xxxxx" />
<sql:query var="rs" dataSource="${db}" >
SELECT * FROM XXXXX
</sql:query>
<select name="xxxxx">
<c:forEach var="row" items="${rs.rows}" >
<option value="${row['xxxxx']}"
<c:if test="${row['xxxxx'] == requestScope.xxxxx}" > selected </c:if>
>${fn:escapeXml(row['xxxxx'])}</option>
</c:forEach>
</select>
-----------------------------------------------------------

これでもちゃんと動いてるのですがMVCを考えるとJSP内でDB接続って疑問に感じます。

Sevletでコンボボックスに必要な値を取得しておいてリクエスト属性にセットし
JSP内では変数をぐるぐる回すことも考えたのですが、
コンボボックスやリストボックスの数が増えたり面倒に思います。

コンボボックスやリストボックスに値を設定する場合は
どういう方法がよいのでしょうか?

A 回答 (2件)

DAOからSQLの結果のデータセットを返して、


Servletでデータセットをリクエストにセットして、
JSPでリクエストからデータセットを使用するのが普通?なのかな。

Strutsを勉強してみるといいと思います。

この回答への補足

今回はStrutsを使えません。
その場合は!?

補足日時:2005/04/14 11:51
    • good
    • 0

>今回はStrutsを使えません。


>その場合は!?
ちょっと言葉足らずでしたね。
----前回の回答--------------
DAOからSQLの結果のデータセットを返して、
Servletでデータセットをリクエストにセットして、
JSPでリクエストからデータセットを使用するのが普通?なのかな。
----前回の回答--------------
とStrutsは別です。

ちょっと細かく書くと…
DBとやりとりするクラスから、SQLの処理結果を、たとえばHashMapとかにセットして、Servletに返します。
Servletはリクエストやセッションに上記HashMapなどをセットしてレスポンスを返します。
で、JSPではリクエストorセッションからHashMapなどを取得して、そこからSQLの処理結果を取得→表示する。
こんな感じが普通だと(少なくとも自分は)思っています。
    • good
    • 0
この回答へのお礼

ありがとうございます。
早速ソース変更しました!!!

お礼日時:2005/04/14 13:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!