0310 注册
当用户点击提交 将数据提交到RegisterServlet
RegisterServlet 代码展示
public class RegisterServlet extends HttpServlet {
private UsersService usersService=new UsersService();
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//解决请求乱码
request.setCharacterEncoding("UTF-8");
//获取请求参数的map集合
Map<String, String[]> map=request.getParameterMap();
Users users=new Users();
//日期转换类
DateConverter converter=new DateConverter();
//设置转化规则 字符串-->转日期规则
converter.setPattern("yyyy-MM-dd");
//转化
ConvertUtils.register(converter, Date.class);
//beanutils 的populate方法 将集合中map中key和user对象中属性一一对应,进行封装
try {
BeanUtils.populate(users, map);
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//封装uid(36位字母数字组合 不重复)
users.setUid(UUID.randomUUID().toString());
int row=usersService.register(users);
if(row>0){
response.sendRedirect(request.getContextPath()+"/login.jsp");
}else{
response.sendRedirect(request.getContextPath()+"/register.jsp");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
上述代码中做了数据封装
是不是将数据一个个的通过请求对象获取很麻烦,就用到了beanutils 中的populate方法 传入一个集合和一个对象,将集合中的数据一一与对象中的属性对对应,从而封装到那个对象中
需要用户输入出生日期进行注册 那么用户输入的都是字符串格式,需要将数据按照一定的规则转成日期格式,converter类是一个日期转换类中有一个setPattern方法指定规则,ConvertUtils类中有一个静态register方法 传converter对象和日期类的字节码文件,从而进行转化
封装uid 在数据表中 uid字段不是自增字段也不是int字段 是个字符串类型,所以我们要给期封装不能重复的数据,用到了UUID类中有一个randomUUID方法获取一个数据再调用tosString方法转成字符串,就得到一个36位不重复的字母数字组合
然后再 service层
public class UsersService {
private UsersDao usersDao=new UsersDao();
public int register(Users users){
int row=0;
try {
row=usersDao.register(users);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return row;
}
}
dao层
public class UsersDao {
//注册
public int register(Users users) throws SQLException{
//获取链接对象
Connection conn=JDBCUtils.getConn();
//获取sql语句
String sql="insert into users(uid,username,password,name,email,birthday,sex) values(?,?,?,?,?,?,?)";
PreparedStatement pst=conn.prepareStatement(sql);
//赋值
pst.setString(1, users.getUid());
pst.setString(2, users.getUsername());
pst.setString(3, users.getPassword());
pst.setString(4, users.getName());
pst.setString(5, users.getEmail());
pst.setDate(6, new Date(users.getBirthday().getTime()));
pst.setString(7, users.getSex());
int row=pst.executeUpdate();
//释放资源
JDBCUtils.close(conn, pst);
return row;
}
}
用到了JDBCUtils工具类,MySQL数据库的jar包 commons-beanutils jar包,commons-logging jar包

浙公网安备 33010602011771号