CRUD-新增-保存
来源:互联网 发布:linux csh改为bash 编辑:程序博客网 时间:2024/06/18 13:46
1、在index.jsp页面点击”新增”
2、弹出新增对话框
3、去数据库查询部门列表,显示在对话框中
4、用户输入数据,并进行校验
• jquery前端校验,ajax用户名重复校验,重要数据(后端校验(JSR303),唯一约束);
5、完成保存
• URI:
• /emp/{id} GET 查询员工
• /emp POST 保存员工
• /emp/{id} PUT 修改员工
• /emp/{id} DELETE 删除员工
去数据库查询部门列表,显示在对话框中
1.DepartmentService:
@Servicepublic class DepartmentService { @Autowired private DepartmentMapper departmentMapper; public List<Department> getDepts() { // TODO Auto-generated method stub List<Department> list = departmentMapper.selectByExample(null); return list; }}
2.DepartmentController.java:
/** * 处理和部门有关的请求 * @author lfy * */@Controllerpublic class DepartmentController { @Autowired private DepartmentService departmentService; /** * 返回所有的部门信息 */ @RequestMapping("/depts") @ResponseBody public Msg getDepts(){ //查出的所有部门信息 List<Department> list = departmentService.getDepts(); return Msg.success().add("depts", list); }}
3.index.jsp:
//清空表单样式及内容function reset_form(ele){ $(ele)[0].reset(); //清空表单样式 $(ele).find("*").removeClass("has-error has-success"); $(ele).find(".help-block").text("");}//点击新增按钮弹出模态框。$("#emp_add_modal_btn").click(function(){ //清除表单数据(表单完整重置(表单的数据,表单的样式)) reset_form("#empAddModal form"); //s$("")[0].reset(); //发送ajax请求,查出部门信息,显示在下拉列表中 getDepts("#empAddModal select"); //弹出模态框 $("#empAddModal").modal({ backdrop:"static" });});//查出所有的部门信息并显示在下拉列表中function getDepts(ele){ //清空之前下拉列表的值 $(ele).empty(); $.ajax({ url:"${APP_PATH}/depts", type:"GET", success:function(result){ //{"code":100,"msg":"处理成功!", //"extend":{"depts":[{"deptId":1,"deptName":"开发部"},{"deptId":2,"deptName":"测试部"}]}} //console.log(result); //显示部门信息在下拉列表中 //$("#empAddModal select").append("") $.each(result.extend.depts,function(){ var optionEle = $("<option></option>").append(this.deptName).attr("value",this.deptId); optionEle.appendTo(ele); }); } });}
index.jsp-jquery前端校验
//校验表单数据function validate_add_form(){ //1、拿到要校验的数据,使用正则表达式 var empName = $("#empName_add_input").val(); var regName = /(^[a-zA-Z0-9_-]{6,16}$)|(^[\u2E80-\u9FFF]{2,5})/; if(!regName.test(empName)){ //alert("用户名可以是2-5位中文或者6-16位英文和数字的组合"); show_validate_msg("#empName_add_input", "error", "用户名可以是2-5位中文或者6-16位英文和数字的组合"); return false; }else{ show_validate_msg("#empName_add_input", "success", ""); }; //2、校验邮箱信息 var email = $("#email_add_input").val(); var regEmail = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/; if(!regEmail.test(email)){ //alert("邮箱格式不正确"); //应该清空这个元素之前的样式 show_validate_msg("#email_add_input", "error", "邮箱格式不正确"); /* $("#email_add_input").parent().addClass("has-error"); $("#email_add_input").next("span").text("邮箱格式不正确"); */ return false; }else{ show_validate_msg("#email_add_input", "success", ""); } return true;}//显示校验结果的提示信息function show_validate_msg(ele,status,msg){ //清除当前元素的校验状态 $(ele).parent().removeClass("has-success has-error"); $(ele).next("span").text(""); if("success"==status){ $(ele).parent().addClass("has-success"); $(ele).next("span").text(msg); }else if("error" == status){ $(ele).parent().addClass("has-error"); $(ele).next("span").text(msg); }}
index.jsp-ajax用户名重复校验
1.EmployeeService:
/** * 检验用户名是否可用 * * @param empName * @return true:代表当前姓名可用 fasle:不可用 */public boolean checkUser(String empName) { // TODO Auto-generated method stub EmployeeExample example = new EmployeeExample(); Criteria criteria = example.createCriteria(); criteria.andEmpNameEqualTo(empName); long count = employeeMapper.countByExample(example); return count == 0;}
2.EmployeeController.java:
/** * 检查用户名是否可用 * @param empName * @return */@ResponseBody@RequestMapping("/checkuser")public Msg checkuser(@RequestParam("empName")String empName){ //先判断用户名是否是合法的表达式; String regx = "(^[a-zA-Z0-9_-]{6,16}$)|(^[\u2E80-\u9FFF]{2,5})"; if(!empName.matches(regx)){ return Msg.fail().add("va_msg", "用户名必须是6-16位数字和字母的组合或者2-5位中文"); } //数据库用户名重复校验 boolean b = employeeService.checkUser(empName); if(b){ return Msg.success(); }else{ return Msg.fail().add("va_msg", "用户名不可用"); }}
3.index.jsp:
//校验用户名是否可用$("#empName_add_input").change(function(){ //发送ajax请求校验用户名是否可用 var empName = this.value; $.ajax({ url:"${APP_PATH}/checkuser", data:"empName="+empName, type:"POST", success:function(result){ if(result.code==100){ show_validate_msg("#empName_add_input","success","用户名可用"); $("#emp_save_btn").attr("ajax-va","success"); }else{ show_validate_msg("#empName_add_input","error",result.extend.va_msg); $("#emp_save_btn").attr("ajax-va","error"); } } });});
后端校验(JSR303)
1.Employee.java:
public class Employee { private Integer empId; @Pattern(regexp="(^[a-zA-Z0-9_-]{6,16}$)|(^[\u2E80-\u9FFF]{2,5})" ,message="用户名必须是2-5位中文或者6-16位英文和数字的组合") private String empName; private String gender; //@Email @Pattern(regexp="^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$", message="邮箱格式不正确") private String email; private Integer dId; //希望查询员工的同时部门信息也是查询好的 private Department department; @Override public String toString() { return "Employee [empId=" + empId + ", empName=" + empName + ", gender=" + gender + ", email=" + email + ", dId=" + dId + "]"; } public Employee() { super(); } public Employee(Integer empId, String empName, String gender, String email, Integer dId) { super(); this.empId = empId; this.empName = empName; this.gender = gender; this.email = email; this.dId = dId; } public Department getDepartment() { return department; } public void setDepartment(Department department) { this.department = department; } public Integer getEmpId() { return empId; } public void setEmpId(Integer empId) { this.empId = empId; } public String getEmpName() { return empName; } public void setEmpName(String empName) { this.empName = empName == null ? null : empName.trim(); } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender == null ? null : gender.trim(); } public String getEmail() { return email; } public void setEmail(String email) { this.email = email == null ? null : email.trim(); } public Integer getdId() { return dId; } public void setdId(Integer dId) { this.dId = dId; }}
2.EmployeeController.java:
/** * 员工保存 * 1、支持JSR303校验 * 2、导入Hibernate-Validator * * * @return */@RequestMapping(value="/emp",method=RequestMethod.POST)@ResponseBodypublic Msg saveEmp(@Valid Employee employee,BindingResult result){ if(result.hasErrors()){ //校验失败,应该返回失败,在模态框中显示校验失败的错误信息 Map<String, Object> map = new HashMap<String,Object>(); List<FieldError> errors = result.getFieldErrors(); for (FieldError fieldError : errors) { System.out.println("错误的字段名:"+fieldError.getField()); System.out.println("错误信息:"+fieldError.getDefaultMessage()); map.put(fieldError.getField(), fieldError.getDefaultMessage()); } return Msg.fail().add("errorFields", map); }else{ //employeeService.saveEmp(employee); return Msg.success(); }}
完成保存
1.EmployeeService.java:
/** * 员工保存 * @param employee */public void saveEmp(Employee employee) { // TODO Auto-generated method stub employeeMapper.insertSelective(employee);}
2.index.jsp:
//点击保存,保存员工。$("#emp_save_btn").click(function(){ //1、模态框中填写的表单数据提交给服务器进行保存 //1、先对要提交给服务器的数据进行校验 if(!validate_add_form()){ return false; }; //1、判断之前的ajax用户名校验是否成功。如果成功。 if($(this).attr("ajax-va")=="error"){ return false; } //2、发送ajax请求保存员工 $.ajax({ url:"${APP_PATH}/emp", type:"POST", data:$("#empAddModal form").serialize(), success:function(result){ //alert(result.msg); if(result.code == 100){ //员工保存成功; //1、关闭模态框 $("#empAddModal").modal('hide'); //2、来到最后一页,显示刚才保存的数据 //发送ajax请求显示最后一页数据即可 to_page(totalRecord); }else{ //显示失败信息 //console.log(result); //有哪个字段的错误信息就显示哪个字段的; if(undefined != result.extend.errorFields.email){ //显示邮箱错误信息 show_validate_msg("#email_add_input", "error", result.extend.errorFields.email); } if(undefined != result.extend.errorFields.empName){ //显示员工名字的错误信息 show_validate_msg("#empName_add_input", "error", result.extend.errorFields.empName); } } } });});
3.EmployeeController.java:
/** * 员工保存 * 1、支持JSR303校验 * 2、导入Hibernate-Validator * * * @return */@RequestMapping(value="/emp",method=RequestMethod.POST)@ResponseBodypublic Msg saveEmp(@Valid Employee employee,BindingResult result){ if(result.hasErrors()){ //校验失败,应该返回失败,在模态框中显示校验失败的错误信息 Map<String, Object> map = new HashMap<String,Object>(); List<FieldError> errors = result.getFieldErrors(); for (FieldError fieldError : errors) { System.out.println("错误的字段名:"+fieldError.getField()); System.out.println("错误信息:"+fieldError.getDefaultMessage()); map.put(fieldError.getField(), fieldError.getDefaultMessage()); } return Msg.fail().add("errorFields", map); }else{ employeeService.saveEmp(employee);//完成保存 return Msg.success(); }}
阅读全文
1 0
- CRUD-新增-保存
- Elasticsearch入门CRUD(新增、查询、修改、删除)
- EntityFramework 入门 CRUD(新增、查询、修改、删除)
- 页面cookie保存与新增
- linux iptables新增和保存
- jqGrid 新增行 保存新增的行到数据库
- 解决新增路由不能保存的语句
- EditorGridPanel 新增记录行无法保存
- 禁止 保存/提交 后自动新增
- Extjs Grid 编辑 新增 删除 保存
- 前台页面新增提交保存后台
- CRUD
- "CRUD"
- CRUD
- CRUD
- crud
- CRUD
- CRUD
- lucene 查询所有过程 流程
- PHP实现堆排序
- lucene的开发环境配置,并实现lucene功能一:创建索引;及代码示例
- matlab之连接mySQL
- 服务器请求端口转发
- CRUD-新增-保存
- C# Winform datagridview 在一个单元格中 同时存在文本和按钮
- PAT (Basic Level) Practise (中文)1043. 输出PATest(20)
- Python中文件的写入读取以及附加文字
- Velocity模板引擎
- Mac 安装TA-Lib
- UVa 11729
- LintCode 2017 光棍节
- LeetCode解题-#2-Add two numbers