欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 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();




相关标签: 表单