您的位置:首页 > 其它

表单中日期类型的输入实现与数据持久化

2017-07-27 17:15 260 查看
下面有个简单的表单:

<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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐