- ベストアンサー
strutsでの登録情報変更方法とサンプル
- strutsを使用してJavaで登録情報の変更をする方法について、詳しく説明します。
- 登録した情報を変更するためには、formクラス、Actionクラス、JSP、およびDBを使用します。
- 会員が登録した情報を変更するための手順やサンプルコードを提供します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
一般的な作りとしては、ログイン情報などはセッションを利用して保持します。 ログインユーザクラスのようなものを作り、 ログイン時に会員IDをセットして、ログインユーザをセッションに保持する。 (例 入力された ID/パスワード でDBから会員情報取得し、 LoginUser loginUser = new LoginUser() loginUser.serUserId(DBの会員ID) request.getSession().setAttribute("loginUser", loginUser); ) 必要なとき(今回であればSELECT時)に、セッションからユーザ情報を取り出して、現在誰がログインしているかを判断する。 という方法がよいのではないでしょうか。
その他の回答 (4)
- hatimiti
- ベストアンサー率68% (26/38)
<html:text にも、name 属性と property 属性がありますので、 bean:write 同様にJSPで指定すれば表示可能だと思いますよ。 ただ、リストを更新する際は、indexed 属性も true にする必要があります。
お礼
本当にありがとうございます。 テキストエリアにDBから取得した値が出力され、無事にDBの更新ができました。 あとは、ログインした会員がどの会員なのかを判定して、テーブルからどの行の値を持ってくるのかを決めるという事ですよね。 できればそちらも教えて頂けないでしょうか?
- hatimiti
- ベストアンサー率68% (26/38)
Struts で開発する上では、 JSPで表示したりする値は ActionForm に格納します。 ですので、自分で request.setAttribute したりすることはあまりありません。 例のように、<html:text property="isbn" size="20" ~ であれば、ActionForm の isbn フィールドに値をセットすることでテキストフィールドの value に自動でセットしてくれます。 list ということは複数の表示を行うのでしょうか? その場合は、html:text の indexed 属性を true にすることで、 isbn[添字]と、配列のように扱うことができます。 タグの使い方は以下などを参考にしてみてください。 http://tag.main.jp/ http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=38552&forum=12
お礼
サンプルを動かそうとしましたが、form生成時にエラーがでたり struts1.3ではstruts-confのdataSourceができないため 断念しました。 formではsetとgetを行っています。 テキストエリア以外ならばDBから値をJSPに表示できます。 例えば、検索したい時はselect文で検索した複数の値をもって来て 値をsetして、request.setAttributeする。 jsp側でlogic:iterateで <bean:write name="" property="" /> すれば出力できますよね? 同様に更新時もselect文で検索した複数の値をもって来て 値をsetして、request.setAttributeする。 jsp側でどうやれば テキストエリアに値を出力させるかがわからないのです。
- hatimiti
- ベストアンサー率68% (26/38)
ここにサンプルがありましたよ。 ちょっと見づらい気もしますが、、、 http://www.atmarkit.co.jp/fjava/rensai3/struts06/struts06_2.html
お礼
サンプルありがとうございます。 このサンプルでは <logic:equal name="update.flag" value="true"> <html:text property="isbn" size="20" maxlength="20" style="background:#EEeeEE" readonly="true" /> </logic:equal> <logic:notEqual name="update.flag" value="true"> <html:text property="isbn" size="20" maxlength="20" /> </logic:notEqual> でテキストエリアにDBから取得した値を入れていますが この方法以外でDBから取得した値をテキストエリアに出力するしかないのでしょうか? 自分の場合 Actionクラス (1)SQL文をしてwhileでDBの値取得 (2)値をlistに入れてrequest.setAttribute jSP テキストエリアではない場合は logic:iterateで <bean:write name="" property="" /> で出力されますが テキストエリアの場合はどのようにして 出力させれば良いでしょうか?
- hatimiti
- ベストアンサー率68% (26/38)
会員情報に「会員ID」などの主キーがあれば、 まず変更画面アクセス時に会員IDでSELECTし、会員情報を取得します。 会員の情報(名前など)を、ActionForm クラスのテキストボックス(html:text の property属性)に該当するフィールドにセットする。 そしてJSPを表示すると、そのテキストボックスに value がセットされた状態で表示されます。 どの会員を更新するかどうかは、<html:hidden> タグなどで、会員IDを html に埋め込んでおくことで判断します。 更新ボタンを押下した際は、text の value と、 hidden の value がサブミットされてきますので、該当会員IDの情報を再度取得して text の value をセットし、UPDATE 文を投げます。 このような説明でわかりますでしょうか?
お礼
回答ありがとうございます。 おっしゃっている事は理解できましたが もしよかったら簡単で良いので サンプルを頂けないでしょうか。
お礼
返事遅くなりすみません。 現在、URLリライティングでsessionが保持されている事が分かりました。 しかし、URLリライティングでのsessionの取得方法が分からず困っています。 教えて頂けませんか?