表单中日期类型的输入实现与数据持久化
程序员文章站
2022-05-29 23:12:17
...
下面有个简单的表单:
<form action="${pageContext.request.contextPath}/servlet/regServlet " method="post">
用户名:<input type="text" name="username"/><br/>
密码:<input type="password" name="pass"/><br/>
邮箱:<input type="text" name="email"/><br/>
生日:<input type="date" name="birthday"/><br/>
<input type="submit" value="注册"/><br/>
</form>
我把生日的类型设为了date,但是会有感叹号“Undefined attribute value (date).” 你可以不用管它,效果时这样的:
在获取表单中的生日时,仍然可以使用request.getParameter("birthday"); 不过它返回的时String 类型,不用怀疑,它真的可以返回String类型的日期。
你可以在实体类中把生日birthday直接定义成 java.sql.Date birthday。
注意这个 java.sql.Date 时SQL中的Date,不是我们平常用的Date,而String类型时不能直接转化为 java.sql.Date的,
我们需要先把String 转换成我们的平常用的Date 在转换成 java.sql.Date,方法如下:
String datestring = request.getParameter("birthday");
SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd");
java.sql.Date date = new java.sql.Date(format.parse(datestring).getTime());
java.sql.Date类型的持久化只需要用 prepareStatement类中的 setDate(int,java.sql.Date)就可以了
conn = DBUtils.getConnection();
ps = conn.prepareStatement("INSERT INTO users(username,PASSWORD,email,birthday) VALUES(?,?,?,?)");
ps.setString(1, user.getUsername());
ps.setString(2, user.getPassword());
ps.setString(3, user.getEmail());
ps.setDate(4, user.getBirthday());
int i = ps.executeUpdate();
上一篇: PHP表单TOKEN防止重复提交
下一篇: 表格/表单
推荐阅读