SSM框架下的注册验证

由于本人在学习期间做登录注册的时候,需要给注册添加验证,研究很长时间也没想到什么方便快捷的方法

下面就是我自己看一些文档整理的思路,如有bug,欢迎指点!!!

首先: 下载连个验证依赖

 <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>1.1.0.Final</version>
        </dependency>



        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api 这个可以不下载 因为hibernate-validator里有这个功能-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.21</version>
        </dependency>

        <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.4.0.Final</version>
    </dependency>


然后:在你的bean上写验证规则

userBean:

public class User {
    private Integer id;

    @NotBlank(message = "用户名不能为空")
    @Length(max = 6, min = 3, message = "长度在3-6之间")
    private String name;//用户名

    @NotBlank(message="{密码不能为空}")
//    @Pattern(regexp="/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,10}$/", message="密码必须是6~10位数字和字母的组合")
    private String password; //密码

    private Integer level; //等级
    private String des; //简介

    @Pattern(regexp="^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$", message="请输入正确的号码格式")
    private String tel; //电话

    private String address; //地址


    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                ", level=" + level +
                ", des='" + des + '\'' +
                ", tel='" + tel + '\'' +
                ", address='" + address + '\'' +
                '}';
    }



其次:在你的controller上写注册信息

UserController:
在controller这个类里面的注册方法的bean上要注明valid 证明这个bean是需要被验证的,然后后面再接个ModelAttribute确定真正验证的bean的属性名,一般后面还要再接一个BindingResult,它会将错误信息赋值并且显示在jsp页面

这里的jsp页面省略

@Controller
public class UserController {

    @Resource
    private UserService userService;

    @RequestMapping(value = "/")
    public String loginPage() {
        return "user/login";
    }

    @RequestMapping(value = "/registpage")
    public String registpage() {
        return "user/regist";
    }

    @RequestMapping(value = "/regist", method = RequestMethod.POST)
    public String regist(@Valid @ModelAttribute("user") User user, BindingResult result, ModelMap model, HttpServletRequest request) throws IOException {
        System.out.println(user);
        if (result.hasErrors()) {
            return "user/regist";
        } else {
            model.addAttribute("username", user.getName());
            if (user.getPassword().equals(request.getParameter("repassword"))) {
                userService.regist(user);
                System.out.println("用户注册: " + user.getName() + user.getPassword());
            }
            return "user/login";
        }
    }

    @ModelAttribute("user")
    public User getUser() {
        User user = new User();
        return user;
    }

    @RequestMapping(value = "/login")
//    @ResponseBody
    public String login(String name, String password, Model model) {

        User user = userService.login(name, password);
        if (user != null) {
            model.addAttribute(user);
            model.addAttribute("msg", "登录成功");
            return "blog/showBlog";
        } else {
            return "redirect:registpage";
        }
//        return user;
    }

}


最后:在你的regist.jsp上写信息的响应

regist.jsp:


这个是局部显示错误信息

 <input type="text" name="name" class="form-control" id="name" placeholder="请输入用户名">
                <form:errors path="name" cssStyle="color: red"></form:errors>


这个是我自己的页面的显示错误信息

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>注册页面</title>
    <%--<link href="css/bootstrap.min.css" rel="stylesheet">--%>
    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

    <script src="js/jquery-3.2.1.js" type="text/javascript"></script>
</head>
<body>

<form:form action="regist" method="post" modelAttribute="user">
    <div class="container">

        <div class="col-md-4">
            <div class="form-group">
                <label for="name">用户名</label>
                <input type="text" name="name" class="form-control" id="name" placeholder="请输入用户名">
                <form:errors path="name" cssStyle="color: red"></form:errors>
            </div>
            <div class="form-group">
                <label for="password">密码</label>
                <input type="password" class="form-control" id="password" name="password" placeholder="请输入密码">
                <form:errors path="password" cssStyle="color: red"></form:errors>
            </div>

            <div class="form-group">
                <label for="repassword">重置密码</label>
                <input type="password" class="form-control" id="repassword" name="repassword" placeholder="请再次输入密码">
                <%--<form:errors path="password" cssStyle="color: red">两次密码不一致</form:errors>--%>
            </div>

            <div class="form-group">
                <label for="tel">电话</label>
                <input type="text" class="form-control" id="tel" name="tel" placeholder="请输入常用电话">
                <form:errors path="tel" cssStyle="color: red"></form:errors>
            </div>
            <div class="form-group">
                <label for="address">地址</label>
                <input type="text" class="form-control" id="address" name="address" placeholder="请输入常用地址">
            </div>
            <button id="btn" type="submit" class="btn btn-default">提交注册</button>
        </div>

    </div>

</form:form>

</body>

☺☺☺这样用注解写的验证就应该可以用了 ,如果有什么不完整,欢迎指教!!!☺☺☺

猜你喜欢

转载自blog.csdn.net/dapyandxpy/article/details/77540561
今日推荐