1

「レンタカー代理店」のウェブサイト プログラムに取り組んでいます

ユーザーは登録できます (完了) - サーブレット & Jsp ページを使用します 既にメンバーの場合はログインします (完了) - Java Bean 、サーブレット、および JSP を使用します 予約を行います (完了) 予約を削除します (完了)

私はmysql(テーブル:車、予約、メンバー)と一緒にnetbeans IDEを使用しており、JDBC経由でWebページからMYSQLに接続しています。今、私はタスクのこの部分に少し行き詰まりました:

彼/彼女のアカウントを更新します (つまり、詳細)

なぜ?ユーザーにユーザー名を入力するように求め、次にメンバーの詳細を含むレコードを表示し、ユーザーが変更したいフィールドをチェックできるようにチェックボックスを表示し、サーブレットで通常のクエリを使用してデータベースを更新するなど、さまざまな代替案を考えました。ただし、これは最善または「最も優れた」オプションとは思えません。

テキストボックスが既に入力されている登録用の「同じ」Webページを表示したいと思います(したがって、ユーザーが名前として「Maria」を入力した場合、テキストボックスにはすでにMariaが含まれているため、そこで編集できるようになります)。送信を押すと、その特定のメンバーのレコードが更新されます。セッションメソッド(.setAttributeなど)を使用してメンバーのユーザー名を保持し、String uname request.getParameter("username").toString(); を使用してテキストボックスに情報を表示する必要がありますか? (例えば)

これをどうやってやりますか?意見とコードスニペットは大歓迎です

ありがとう :))

4

1 に答える 1

0

これらすべての値が事前に入力され、事前に選択され、事前にチェックされるように、JSP に HTML を生成させるだけです。以下の例では、現在ログインしているユーザーが${user}.

入力要素の場合は、value属性を出力するだけです:

<input type="text" name="username" value="${fn:escapeXml(user.username)}" />
<input type="text" name="email" value="${fn:escapeXml(user.email)}" />
<input type="text" name="firstname" value="${fn:escapeXml(user.firstname)}" />
<input type="text" name="lastname" value="${fn:escapeXml(user.lastname)}" />

( XSS 攻撃の可能性のある穴fn:escapeXml()を防ぐため、ここでは非常に重要です)

ドロップダウンの場合は、条件付きで次のselected属性を出力します<option>

<select name="country">
    <c:forEach items="${data.countries}" var="country">
        <option value="${country.code}" ${user.countryCode == country.code ? 'selected' : ''}>${country.name}</option>
    </c:forEach>
</select>

ラジオボタンとチェックボックスの場合、条件付きでchecked属性を出力するだけです:

<c:forEach items="${data.genders}" var="gender">
   <input type="radio" name="gender" value="${gender.id}" ${user.genderId == gender.id ? 'checked' : ''}" /> ${gender.description}
</c:forEach>

送信された値の収集も同じ方法で行われます。唯一の違いは、新しいユーザーを作成する必要はなく、現在ログインしているユーザーを で利用できるように更新するだけです${user}

于 2012-04-23T20:07:28.553 に答える