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

来源:互联网 发布:万网域名cname怎么设置 编辑:程序博客网 时间:2024/06/07 00:24

下面有个简单的表单:

<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();




阅读全文
0 0