1

我正在开发“租车公司”的网站程序

用户可以注册(完成) - 使用 Servlet 和 Jsp 页面登录 如果已经是成员(完成) - 使用 java bean 、 servlet 和 jsp 进行预订(完成) 删除预订(完成)

我将 netbeans IDE 与 mysql(表:汽车、预订、成员)一起使用,并通过 JDBC 从网页连接到 MYSQL。现在我在这部分任务上有点卡住了:

更新他/她的帐户(即详细信息)

为什么?想到了不同的替代方案,例如要求用户输入用户名,然后显示带有成员详细信息的记录,显示复选框以便用户检查他/她想要更改的字段,然后使用 servlet 中的正常查询来更新数据库。然而,这在我看来并不是最好的或“最好的”选择。

我想显示与已填充文本框的寄存器的“相同”网页,(因此,如果用户输入“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)}" />

fn:escapeXml()这里非常重要,因为它可以防止可能的XSS 攻击漏洞)

对于下拉列表,只需有条件地在 上打印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 回答