springMVC之JSR 303注解表单验证

1.JSR 303表单验证
这种方法比较适合银行类型使用的一些项目,涉及的安全度比较高时使用。所以,只要能看懂,会用就可以了。一般的项目中用不到

2.详细信息


image.png

3.需要的jar包:


image.png

4.实例

Validate实体类: 主要看注解

 package com.gb.pojo;

import java.util.Date;

import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Past;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.Email;
import org.springframework.format.annotation.DateTimeFormat;

public class Validate {


@NotNull
private Integer id;


@NotNull
@DecimalMin("1.0")// 最小值
@DecimalMax("300000.0")// 最大值
private Double price;


@NotNull
@Past
@DateTimeFormat(pattern="yyyy-MM-dd")//可以解析的日期格式
private Date date;

@NotNull
@Min(1)
@Max(300)
private Integer value;




@Size(min=10,max=200)
private String note;


@Pattern(regexp = "^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$", message="邮箱格式不正确")
private String email;


public String getEmail() {
    return email;
}


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


public Integer getId() {
    return id;
}


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


public Double getPrice() {
    return price;
}


public void setPrice(Double price) {
    this.price = price;
}


public Date getDate() {
    return date;
}


public void setDate(Date date) {
    this.date = date;
}


public Integer getValue() {
    return value;
}


public void setValue(Integer value) {
    this.value = value;
}


public String getNote() {
    return note;
}


public void setNote(String note) {
    this.note = note;
}}

jsp

 <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

<form action="val/validate.do" method="post">
  ID:<input type="text" name="id"/><br/>
  价格:<input type="text" name="price"/><br/>
  日期:<input type="text" name="date"/><br/>
  值    :<input type="text" name="value"/><br/>
  备注:<input type="text" name="note"/><br/>
  邮箱:<input type="text" name="email"/><br/>
   <input type="submit" value="提交"/><br/>
</form>
</body>
</html>

ValidateController.java

 package com.gb.controller;

 import java.util.List;

 import javax.validation.Valid;

 import org.springframework.stereotype.Controller;
 import org.springframework.validation.Errors;
 import org.springframework.validation.FieldError;
 import org.springframework.web.bind.annotation.RequestMapping;

 import com.gb.pojo.Validate;

 @Controller
 @RequestMapping("val")
 public class ValidateController {

@RequestMapping("validate")
public String validate(@Valid Validate validate, Errors errors) {
    
    List<FieldError> fieldErrors = errors.getFieldErrors();
    
    // 得到验证的错误信息,之后可以加入自己的处理逻辑,此处只是将它们输出
    for(FieldError fe:fieldErrors) {
        System.out.println(fe.getField() + ", " + fe.getDefaultMessage());
    }
    
    return "test";
    
    
}}

test.jsp

 <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
 "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

<%=session.getAttribute("id") %><br/>
<%=session.getAttribute("name") %><br/>
<%=session.getAttribute("note") %><br/>
<%=session.getAttribute("role") %><br/>
</body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,148评论 6 342
  • 对于任何一个应用而言在客户端做的数据有效性验证都不是安全有效的,这时候就要求我们在开发的时候在服务端也对数据的有效...
    低至一折起阅读 3,607评论 0 1
  • SpringMVC介绍之Validation 对于任何一个应用而言在客户端做的数据有效性验证都不是安全有效的,这时...
    yongguang423阅读 4,870评论 0 16
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,088评论 19 139
  • Spring的模型-视图-控制器(MVC)框架是围绕一个DispatcherServlet来设计的,这个Servl...
    alexpdh阅读 7,499评论 0 3

友情链接更多精彩内容