zoukankan      html  css  js  c++  java
  • 基于maven+ssm的增删改查之JS303校验

    接上一节。我们进行了前端校验了,功能也分明实现了,为什么还要进行后端校验合法性?

    我们之前在数据库中有123456用户,此时是不能够保存的,此时我们鼠标右键,点击检查保存按钮:

    将禁用的属性改为success,并保存。

    发现更改后是可以提交的了。这就是原因:不安全。 

    首先要 引入hibernate-validator依赖包。

    然后在Employee.java中:

        @Pattern(regexp="(^[a-zA-Z0-9_-]{6,16}$)|(^[\u2E80-\u9FFF]{2,5})",
                message="用户名必须是6-16位英文或2-5位中文")
        private String empName;
        
        @Pattern(regexp="^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$",
                message="邮箱格式不正确")
        private String email;

    为相关属性定义自己的校验规则,以及返回的错误信息。

    在EmployeeController.java中

        @ResponseBody
        @RequestMapping(value="/emp",method=RequestMethod.POST)
        public Msg saveEmp(@Valid Employee employee,BindingResult result) {
            if(result.hasErrors()) {
                //校验失败,在前端返回后端校验失败信息
                Map<String, Object> map = new HashMap<String, Object>();
                List<FieldError> fieldErrors = result.getFieldErrors();
                for(FieldError fieldError:fieldErrors) {
                    map.put(fieldError.getField(), fieldError.getDefaultMessage());
                }
                return Msg.fail().add("errorFields",map);
            }else {
                employeeService.save(employee);
                return Msg.success();
            }
        }

    在保存时,添加@Valid注解,并使用BindingResult取得错误信息,并封装成errorFields放入到Msg中。

    在add.js中:

    $("#emp_save").click(function(){
        //alert($("#empAddModal form").serialize());
        if(!validate_add_form()){
            return false;
        }
        if($(this).attr("ajx-va")=="error"){
            return false;
        }
        $.ajax({
            url:"/curd_ssm/emp",
            type:"POST",
            data:$("#empAddModal form").serialize(),
            success:function(result){
                //如果后端校验成功
                if(result.code==100){
                    //关闭模态框,转到最后一页
                    $("#empAddModal").modal('hide');
                    to_page(totalRecord);
                    //alert(result.msg);
                }else{
                    //后端校验失败
                    //有那个字段就显示那个
                    if(undefined != result.extend.errorFields.email){
                        show_validate_msg("#empName_add_input","error",result.extend.errorFields.email);
                    }
                    if(undefined != result.extend.errorFields.empName){
                        show_validate_msg("#empName_add_input","error",result.extend.errorFields.empName);
                    }
                }
                
            }
        });
        
    });

    进行判断,如果没有错误信息,则关闭模态框,跳转到最后一页,否则,有哪些信息就显示哪些信息。

  • 相关阅读:
    JMeter学习(二十三)关联
    最常用的DOS命令
    不同类型的操作系统
    分级存储管理的四大优点
    软件工程中数据库设计
    PPP(点对点协议(Point to Point Protocol)
    关键路径法
    什么是鲁棒性测试
    何为蠕虫病毒
    临界区
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12240004.html
Copyright © 2011-2022 走看看