SpringMVC-数据处理

数据绑定+转换+验证流程

数据从参数绑定到实体类的具体流程
SpringMVC-数据处理_第1张图片

进入invokeHanldeMethod()方法后的执行流程
SpringMVC-数据处理_第2张图片
这个数据绑定器里面还包含着数据验证器:validators负责数据校验工作数据转换器ConversionService组件:负责数据类型的转换以及格式化功能

自定义数据转换器

1.配置SpringMVC.xml文件

    


    
        
            
                
            
        
    

2.编写数据转换器

package com.lyh.component;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.convert.converter.Converter;
import com.lyh.bean.User;
import com.lyh.dao.UserDao;
public class MyConverterTest implements Converter {
    @Autowired
    UserDao userDao;
    @Override
    public User convert(String source) {
        User user=new User();
        if (source.contains("@")) {
            String[] split = source.split("@");
            user.setUsername(split[0]);
            user.setEmail(split[1]);
            userDao.save(user);
        }
        return user;
    }
}

3.重新启动
转换器生效
SpringMVC-数据处理_第3张图片

SpringMVC-数据处理_第4张图片

数据验证

Spring MVC中数据验证可以直接使用JSR303完成,只需要在实体类属性上添加注解然后在入参时添加@Vaild注解即可进行数据验证,用BindeingResult可以将错误信息取出,然后放到Model域中发送给前段界面。

@Email
public String emaile;
@RequestMapping("/addUser")
public String addUser(@Vaile User user,BindingResult result)
{
    Boolean result=result.hasErrors();
    List errors = result.getFieldErrors();
    if(result)
    {
    model.addAttribute("errorVaild",errors.getDefaultMessage());
    }
    else
    {
    userDao.saveUser(user);
    return "success";
    }
}
${errorVaild} 
用户名: 密码: 个人邮件:

JSR303细节看易学教程:https://www.e-learn.cn/topic/...

你可能感兴趣的:(java,spring,spring-mvc,源码分析)