Spring mvc 数据验证

加入jar包

bean-validator.jar

在实体类中加入验证Annotation和消息提示

package com.stone.model;

import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;

public class User {

    private int id;
    private String username;
    private String nickname;
    private String password;
    private String email;

    public User(String username, String nickname, String password, String email) {
        this.username = username;
        this.nickname = nickname;
        this.password = password;
        this.email = email;
    }

    public User() {
        super();
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @NotEmpty(message="用户名不能为空")
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    @NotEmpty(message="密码不能为空")
    @Size(min = 3, max = 10,message="密码长度必须大于3小于10")
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Email(message="邮件的格式为[email protected]")
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "User [id=" + id + ", username=" + username + ", nickname="
                + nickname + ", password=" + password + ", email=" + email
                + "]";
    }

}

在Controller中加入@Valid和BindingResult处理验证结果

package com.stone.controller;

import java.util.HashMap;
import java.util.Map;

import javax.validation.Valid;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

import com.stone.model.User;

@Controller
@RequestMapping("/user")
public class UserController {

    private final static Map<String, User> users = new HashMap<String, User>();

    public UserController() {
        users.put("ldh", new User("ldh", "刘德华", "123", "[email protected]"));
        users.put("zxy", new User("zxy", "张学友", "123", "[email protected]"));
        users.put("gfc", new User("gfc", "郭富城", "123", "[email protected]"));
        users.put("lm", new User("lm", "黎明", "123", "[email protected]"));
    }

    @RequestMapping("/users")
    public String list(Model model) {
        model.addAttribute("users", users);
        return "user/list";
    }

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

    @RequestMapping(value = "/add", method = RequestMethod.POST)
    public String add(@Valid User user, BindingResult bingding) {
        if (bingding.hasErrors()) {
            return "user/add";
        }
        users.put(user.getUsername(), user);
        return InternalResourceViewResolver.REDIRECT_URL_PREFIX + "/user/users";
    }
}

在jsp中加入验证提示消息

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="sf" uri="http://www.springframework.org/tags/form"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP ‘add.jsp‘ starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">

</head>

<body>
    <sf:form method="post" modelAttribute="user">
        username:<sf:input path="username" />
        <sf:errors path="username" />
        <br />
        password:<sf:password path="password" />
        <sf:errors path="password" />
        <br />
        nickname:<sf:input path="nickname" />
        <br />
        email:<sf:input path="email" />
        <sf:errors path="email" />
        <br />
        <input type="submit" />
    </sf:form>
</body>
</html>
时间: 2024-10-12 17:06:14

Spring mvc 数据验证的相关文章

Spring MVC 数据验证——validate编码方式

1.导入jar包 validation-api-1.0.0.GA.jar这是比較关键的一个jar包,主要用于解析注解@Valid. hibernate-validator-4.3.2.Final.jar能够下载最新的.这个包在注解方式编码中尤为重要. 其它的就是一些日志包(不一定全不须要):jboss-logging-3.1.3.GA.jar.slf4j-log4j12-1.6.1.jar 2.web项目的结构图 项目的主要结构图,不清楚web项目的环境的能够自己学一下.推荐去慕课网上找视频看

Spring MVC 数据验证——validate注解方式

1.说明 学习注解方式之前,应该先学习一下编码方式的spring注入.这样便于理解验证框架的工作原理.在出错的时候,也能更好的解决问题.所以本次博客教程也是基于编码方式,只是在原来的基础加上注解方式. 2.配置信息 web.xml不需要改变的 hello-servlet.xml将原来的加载方式,改为自动加入有hibernate和Spring提供的validate的默认类,配置如下: <?xml version="1.0" encoding="UTF-8"?&g

Spring mvc 数据验证框架注解

@AssertFalse 被注解的元素必须为false@AssertTrue 被注解的元素必须为false@DecimalMax(value) 被注解的元素必须为一个数字,其值必须小于等于指定的最小值@DecimalMin(Value) 被注解的元素必须为一个数字,其值必须大于等于指定的最小值@Digits(integer=, fraction=) 被注解的元素必须为一个数字,其值必须在可接受的范围内@Future 被注解的元素必须是日期,检查给定的日期是否比现在晚.@Max(value) 被注

简析Spring MVC 数据解析

简析Spring MVC 数据解析 特别说明:本文使用spring 版本为 4.1.3 常用数据提交方式: 1. form 表单提交数据 1.1 解析form表单数据(无图片等数据) 前端代码事例: <form action="test/entity" method="post"> 用户ID:<input type="text" name="userid"/><br> 用户名:<inp

MVC 数据验证

前一篇说了MVC数据验证的例子,这次来详细说说各种各样的验证注解.System.ComponentModel.DataAnnotations 一.基础特性 一.Required 必填选项,当提交的表单缺少该值就引发验证错误. 二.StringLength 指定允许的长度 指定最大长度: [StringLength(20)] //最大长度不超过20个字符 指定最短于最长限制: [StringLength(20,MinimumLength=3)] //最大长度不超过20个字符,最短不能低于3个字符

MVC 数据验证【转】

[转自]http://www.cnblogs.com/dozer/archive/2010/04/12/MVC-DataAnnotations.html 作者Dozer 今天在这里给大家介绍一下MVC的数据验证框架. 在1.0版中,很多朋友提出了怎么使用客户端验证,今天找了一些资料,发现了客户端验证的方法. 1.MVC中的数据验证框架有何优点? 在Asp.net时代,或者没有使用MVC的验证框架,一般是在BLL层中进行数据验证,但是BLL层的返回值又只能返回一个东西,比如一个字符串,而实际情况中

[Spring MVC] - InitBinder验证

Spring MVC使用InitBinder验证: 使用InitBinder做验证的情况一般会在此Controller中提交的数据需要有一些是业务性质的,也即比较复杂的验证情况下才会使用.大部份简单的表单验证,使用annotation验证即可以解决. Annotation验证使用方法可参见:http://www.cnblogs.com/HD/p/4123146.html 这里需要注意的一点:InitBinder和Annotation两种验证只能二选一,如果使用了InitBinder,就不能使用A

[Spring MVC] - Annotation验证

使用Spring MVC的Annotation验证可以直接对view model的简单数据验证,注意,这里是简单的,如果model的数据验证需要有一些比较复杂的业务逻辑性在里头,只是使用annotation做验证是比较难的. 以下是使用Spring MVC自带的annotation验证,加上自定义的一个@Tel的annotation验证例子,此例子具有: 1.支持多语言(国际化) 2.对默认数据先进行转化,比如int.date类型如果传入空值时,会抛异常,默认给定值 先看配置: 1.web.xm

Spring MVC数据校验

在web应用程序中,为了防止客户端传来的数据引发程序异常,常常需要对 数据进行验证.输入验证分为客户端验证与服务器端验证.客户端验证主要通过JavaScript脚本进行,而服务器端验证则主要通过Java代码进行验证.   为了保证数据的安全性,一般情况下,客户端和服务器端验证都是必须的 1.导入jar包 SpringMVC支持JSR(Java Specification Result,Java规范提案)303-Bean Validation数据验证规范.而该规范的实现者很多,其中较常用的是Hib