登录套路:
1. 在dao中写添加用户和注册方法
//添加
public int add(User u){
String sql="insert into User values(?,?,?,?,?,?,?,?,0,?)";
QueryRunner qr=new QueryRunner(DataSourceUtils.getDataSource());
try {
return qr.update(sql, u.getUid(),u.getUsername(),u.getPassword(),
u.getName(),u.getEmail(),u.getTelephone(),u.getBirthday(),u.getSex(),u.getState());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 0;
}
//注册
public int selectNameCount(String username){
String sql="select count(*) from User where username=?";
QueryRunner qr=new QueryRunner(DataSourceUtils.getDataSource());
try {
return ((Long)qr.query(sql, new ScalarHandler(),username)).intValue();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 0;
}
2. 在service中调用dao的方法,并判断用户名是否已存在
UserDao ud=new UserDao();
public int reg(User u){
//判断用户名是否重复(注册时)
if(ud.selectNameCount(u.getUsername())>0){
//注册失败
return 0;
}else{
//注册成功
return ud.add(u);
}
}
3. 在servlet中调用service中的方法,获取表单数据并封装,最后进行注册
//获取表单数据并封装
Map<String, String[]> map=request.getParameterMap();
User u=new User();
try {
BeanUtils.populate(u,map);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//向u中添加id
u.setUid(CommonUItil.getUUI());
//完成注册
int count=us.reg(u);
if(count>0){
response.getWriter().print("<script>alert('注册成功');location='index.jsp';</script>");
}else{
//向request中添加一个数据
request.setAttribute("msg", "注册失败");
request.getRequestDispatcher("register.jsp").forward(request, response);
}
4. 修改注册页面的form表单中的action、method以及每个input的name
action="${pageContext.request.contextPath}/UserServlet?method=reg" method="post"
Input:name="username"
5. 运行项目,进行注册,查看数据库数据,添加成功
6. 期间遇到的问题
Java.Sql.SQLException:Colum “cid” cannot be null
原因是id没有设置成功,解决方案:把id放在对象里即可。