zoukankan      html  css  js  c++  java
  • 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包

  • 相关阅读:
    Xampp 环境问题集合
    linux VI模式下批量修改文件内容
    shell 获取文件名
    shell 遍历所有文件包括子目录
    jmeter java 请求 payload
    [转]postman 官方文档解说
    承上启下——牛腩新闻发布系统总结
    ASP.NET——实现两个下拉框动态联动
    ASP.NET——真假分页
    HTML快速入门
  • 原文地址:https://www.cnblogs.com/-gongxue/p/14512598.html
Copyright © 2011-2022 走看看