页面代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="RegisterServlet" method="post">
账号:<input type="text" name="username"><br/>
密码:<input type="password" name="password"><br/>
邮箱:<input type="test" name="email"><br/>
电话:<input type="text" name="phone"><br/>
地址:<input type="text" name="addrss"><br/>
生日:<input type="text" name="birthday"><br/>
<input type="submit" value="注册">
</form>
</body>
</html>
servlet文件
package com.java.servlet;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Date;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import com.java.domain.UserBean;
import com.java.util.MyDateConverter;
@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
try {
ConvertUtils.register(new MyDateConverter(), Date.class);
Map map = request.getParameterMap();
UserBean bean = new UserBean();
BeanUtils.populate(bean, map);
System.out.println(bean.toString());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
日期格式转换文件
package com.java.util;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.beanutils.Converter;
/**
* 自定义 java.util.Date日期转换器
*/
public class MyDateConverter implements Converter {
@Override
// 将value 转换 c 对应类型
// 存在Class参数目的编写通用转换器,如果转换目标类型是确定的,可以不使用c 参数
public Object convert(Class c, Object value) {
String strVal = (String) value;
// 将String转换为Date --- 需要使用日期格式化
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = dateFormat.parse(strVal);
return date;
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
}
基础数据文件
package com.java.domain;
import java.util.Date;
public class UserBean {
private String username;
private String password;
private String email;
private String phone;
private String address;
private Date birthday;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "UserBean [username=" + username + ", password=" + password + ", email=" + email + ", phone=" + phone
+ ", address=" + address + ", birthday=" + birthday + "]";
}
}
BeanUtils可以快速对页面传过来的数据进行封装,但是在面对Date及特殊数据时需要进行数据转换。
**import java.util.Date;**类的日期可以使用转换,sql类的不行。