项目搭建+姓名唯一性校验
一 : 添加时对姓名进行唯一性校验
① : 给姓名绑定一个改变事件
② : 取值
③ : 组装对象
④ : ajax (Controller定义对姓名唯一性校验的方法)
在成功回调函数里 判断姓名是否添加过(0=>已添加 1=>未添加)
未添加过,添加成功后,(清空)
/** * 对姓名进行唯一性校验 */ $("#userName").change(function () { //取值 let userName = $("#userName").val(); //组装 let obj={userName:userName} //ajax $.ajax({ url: "/user/onlyName", type: "post", data: {reqInfos:JSON.stringify(obj)}, dataType: "json", success(res) { //打印 console.log(res) if (res===1){ alert("不重复可以添加") //结束 return }else { //存在给出提示 alert("此名称已存在,不允许再次添加") $("#userName").val('') } }, error() { alert("服务器出错") } }) })
二 : Controller层 (添加时姓名进行唯一性校验)
① : 接参
② : 将json对象还原成java对象
③ : 将转换后的对象传给service
重点 : 和登录的方法一样,返回值给 int
④ : 将处理后的结果响应给用户
/** * 对姓名唯一性校验 */ protected void onlyName(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //接参 String reqInfos = req.getParameter("reqInfos"); //将json对象转换成java对象 User user = JSONObject.parseObject(reqInfos, User.class); //将转换后的对象传给service 0存在 1不存在 int i= service.onlyName(user); //响应 resp.getWriter().println(JSONObject.toJSONString(i)); }
三 : service层 (添加时姓名进行唯一性校验)
① : 调用dao层对象 ② : 处理返回值
重点 : 如果有登录,直接调用登录的方法,不用再写dao层了
③ : 判断要添加的名字在数据库中是否存在
/** * 对姓名进行唯一性校验 * @param user * @return */ @Override public int onlyName(User user) { //调用登录的方法,传name User u = userDao.login(user.getUserName()); //判断 0 存在 1不存在 if (null==u){ return 1; } return 0; }
没有登录的方法,定义唯一校验的方法
/** * 唯一性校验 * @param role * @return */ @Override public int onlyName(Role role) { //调用dao层对象 处理返回值 Role r= roleDao.onlyName(role.getRoleName()); //判断是否添加过 if (null==r){ // 1==>未添加 return 1; } // 0==>已添加 return 0; }
四 : dao层(添加时姓名进行唯一性校验)
① : 有登录的方法,在service调用dao层方法时,调用登录的方法就可以了
② : 没有登录的方法,正常写dao层
/** * 唯一性校验 * @param roleName * @return */ @Override public Role onlyName(String roleName) { //定义sql String sql="SELECT *FROM t_role WHERE role_name=? "; //打印sql System.out.println(sql); //执行sql return baseQueryOne(Role.class,sql,roleName); }