Spring Boot学习之五(数据验证)

Spring Boot学习之五(数据验证)

1.在com.example.beans下创建MyUserView.java文件,内容如下:

package com.example.beans;

import javax.validation.constraints.NotBlank;

public class MyUserView {
    private int id;
    @NotBlank(message="{user.name.notBlank}")
    private String name;
    private String passwd;

数据验证:分为客户端和服务器验证,客户端验证主要是过滤正常用户的误操作,主要通过JavaScript代码完成;服务器验证是整个应用阻止非法数据的最后防线,主要通过在应用中编程实现。

其中@NotBland(message="{user.name.notBlank}")为使用JSR303注解验证。

其它的注解内容,见后面

2.在resources下新建ValidationMessages.properties文件。该文件用于显示错误信息,内容如下:

user.name.notBlank=\u7528\u6237\u540d\u4e0d\u80fd\u4e3a\u7a7a

该文件内容是Unicode编码(注意)

3.创建控制器,代码如下

package com.example.demo.controller;

import com.example.beans.MyUserView;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;



@Controller
public class ValidationStudy {

    @RequestMapping(value = "/login",method = RequestMethod.GET)
    public String login(Model model){
        MyUserView user=new MyUserView();
        model.addAttribute("user",user);
        return "/user/login";
    }

    @RequestMapping(value="/loginsave",method = RequestMethod.POST)
    public String loginSave(@Validated MyUserView user, BindingResult result, Model model){
        model.addAttribute("user",user);
        if(result.hasErrors()){
            String errorInfo=result.getFieldError().getDefaultMessage();
            model.addAttribute("errorInfo",errorInfo);
            return "/user/login";
        }
        return "/user/login";
    }
}

在控制器类中,使用@Validated对模型对象进行验证,

4.在resources下创建user目录,在该目录下创建login.html文件,内容如下:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <form action="/loginsave" method="post">
        用户名:<input type="text" name="name" th:value="${user.getName()}"/>
        <br/><br/>
        密码:<input type="text" name="passwd" th:value="${user.getPasswd()}"/>
        <br/><br/>
        <input type="submit" value="确定"/>
    </form>
    <div id="errorInfo">
        <h4 th:text="${errorInfo}">错误信息</h4>
    </div>
</body>
</html>

5.运行测试结果如下:

猜你喜欢

转载自my.oschina.net/u/3537796/blog/1823267