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包

原文地址:https://www.cnblogs.com/-gongxue/p/14512598.html