1. 有时候我们的前端页面会传递过来很多字段, 如果我们一个一个的获取的话, 会显得十分麻烦。我们可以使用一个BeanUtils的工具包把这些字段直接转换为一个实体类。
2. 新建一个名为BeanUtilsDemo的Web工程
3. 导入BeanUtils的jar包
4. 新建一个index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>注册页面</title>
</head>
<body>
<form method="post" action="RS.action">
账号: <input type="text" name="username"><br>
密码: <input type="password" name="password"><br>
邮箱: <input type="text" name="email"><br>
电话: <input type="text" name="phone"><br>
地址: <input type="text" name="address"><br>
生日: <input type="text" name="birthday"><br>
<input type="submit" value="注册">
</form>
</body>
</html>
5. 新建一个UserBean.java
package com.lywgames.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 + "]";
}
}
6. 无法将String类型直接转为Date类型, 需要转换, 新建一个MyDateConverter.java, 实现Converter接口
package com.lywgames.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
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;
}
}
7. 新建一个RegisterServlet.java
package com.lywgames.servlet;
import java.io.IOException;
import java.util.Date;
import java.util.Map;
import javax.servlet.ServletException;
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.lywgames.domain.UserBean;
import com.lywgames.util.MyDateConverter;
public class RegisterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 只针对post有效
request.setCharacterEncoding("UTF-8");
try {
// 注册自己的日期转换器
ConvertUtils.register(new MyDateConverter(), Date.class);
// 转化数据
Map<String, String[]> map = request.getParameterMap();
UserBean bean = new UserBean();
BeanUtils.populate(bean, map);
System.out.println(bean.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
8. 在web.xml里配置Servlet
9. 访问注册页面
10. 填写注册信息
11. 点击注册按钮, 控制台打印注册信息