我正在为一家“租车公司”开发网站程序
用户可以注册(完成)——使用 Servlet & Jsp 页面 如果已经是成员(member)则登录(完成)- 使用 java bean、servlet 和 jsp 进行预订(完成) 删除预订(完成)
我将 netbeans IDE 与 mysql(表:汽车、预订、成员(member))一起使用,并通过 JDBC 从网页连接到 MYSQL。现在我在这部分任务上有点卡住了:
更新他/她的帐户(即详细信息)
为什么?想到了不同的替代方案,例如要求用户输入用户名,然后显示包含成员详细信息的记录,显示复选框以便用户检查他/她想要更改的字段,然后使用 servlet 中的普通查询来更新数据库。然而,这在我看来并不是最好或“最好”的选择。
我想显示与已填充文本框的寄存器“相同”的网页(因此,如果用户输入“Maria”作为名称,文本框将已经有 Maria),以便可以在那里进行编辑然后在按下提交时更新该特定成员的记录。我是否必须使用 session 方法(.setAttribute 等)来保留成员的用户名,然后使用 String uname request.getParameter("username").toString(); 在文本框中显示信息? (例如)
你会怎么做呢?非常感谢意见和代码片段
谢谢 :))
最佳答案
只需让 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 attack 漏洞)
对于下拉菜单,只需有条件地打印 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}
.
关于mysql - 使用 Servlet、JSP、EJB 更新成员(member)(在网站上注册)的一个(或多个)字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10287281/