第一步:导入jar包

springmvc提高数据查询速度_java


第二步:配置文件(springmvc.xml)

第三步:测试(qqRegister.jsp、FrontController.java、QQ.java)

1、springmvc.xml:

<!--配置数据校验  -->
			<mvc:annotation-driven validator="validator"></mvc:annotation-driven>
			<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
				<property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property>
			</bean>

2、qqRegister.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false"%>
<%
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort() +request.getContextPath()+"/";
%>
<!DOCTYPE html>
<html>
<head>
	<base href="<%=basePath %>">
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title>QQ注册页面</title>
</head>
<body>
	<center>
		<form action="<%=basePath %>/front/qqRegisterByMVC.do" method="post">
			<p>昵称:<input type="text" name="nick"placeholder="长度为4-10个字符"></p>
			<p>密码:<input type="password" name="password" placeholder="长度为3-16个字符"></p>
			<p>手机:<input type="text" name="phone"  placeholder="请输入11位的手机格式"></p>
			<p>邮箱:<input type="text" name="email"  placeholder="请输入正确的邮箱格式"></p>
			<p>年龄:<input type="text" name="age"></p>
			<p>
				<input type="submit" value="注册">
				<input type="reset" value="清空">
			</p>
		</form>
	</center>
</body>
</html>

3、FrontController.java:

@RequestMapping("/qqRegisterByMVC")
    public void qqRegisterByMVC(@Valid QQ qqInfo, BindingResult errorResult) {
        boolean flag = errorResult.hasErrors();
        if (flag) {// 不通过
            List<FieldError> errorList = errorResult.getFieldErrors();
            for (FieldError fieldError : errorList) {
                String fieldName = fieldError.getField();// JavaBean中某一个属性名
                String errorMessage = fieldError.getDefaultMessage();// 属性名上对应的错误信息
                System.out.println(fieldName + "=" + errorMessage);
            }
        } else {// 通过
            System.out.println("调用dao层方法");
        }
    }

4、QQ.java:

/**
 * Project Name:dt55_springMVC3
 * File Name:QQ.java
 * Package Name:cn.java.entity
 * Date:上午10:47:07
 * Copyright (c) 2018, bluemobi All Rights Reserved.
 *
*/

package cn.java.entity;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;

import org.hibernate.validator.constraints.Email;


public class QQ {
    @NotNull(message = "昵称不能为空")
    @Pattern(regexp = "\\w{4,10}", message = "昵称必须为4-10位字符")
    private String nick;// 昵称

    private String password;// 密码

    @Pattern(regexp = "1[3578]\\d{9}", message = "请输入正确的手机格式,11位纯数字")
    private String phone;// 手机号

    @Email(message = "请输入正确的邮箱格式")
    private String email;// 邮箱

    @Min(value = 1, message = "亲,您还没出生吧!")
    @Max(value = 250, message = "亲,您还没挂么!!")
    private Integer age;// 年龄(0<age<=250)

    public String getNick() {
        return nick;
    }

    public void setNick(String nick) {
        this.nick = nick;
    }

    public String getPassword() {
        return password;
    }

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

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getEmail() {
        return email;
    }

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

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "QQ [nick=" + nick + ", password=" + password + ", phone=" + phone + ", email=" + email + ", age=" + age
                + "]";
    }

}

同时我们这里给出:hibernate-validator注解
@AssertTrue //用于boolean字段,该字段只能为true
@AssertFalse//该字段的值只能为false
@CreditCardNumber//对信用卡号进行一个大致的验证
@DecimalMax//只能小于或等于该值
@DecimalMin//只能大于或等于该值
@Digits(integer=2,fraction=20)//检查是否是一种数字的整数、分数,小数位数的数字。
@Email//检查是否是一个有效的email地址
@Future//检查该字段的日期是否是属于将来的日期
@Length(min=,max=)//检查所属的字段的长度是否在min和max之间,只能用于字符串
@Max//该字段的值只能小于或等于该值
@Min//该字段的值只能大于或等于该值
@NotNull//不能为null
@NotBlank//不能为空,检查时会将空格忽略
@NotEmpty//不能为空,这里的空是指空字符串
@Null//检查该字段为空
@Past//检查该字段的日期是在过去
@Size(min=, max=)//检查该字段的size是否在min和max之间,可以是字符串、数组、集合、Map等
@URL(protocol=,host,port)//检查是否是一个有效的URL,如果提供了protocol,host等,则该URL还需满足提供的条件
@Valid//该注解只要用于字段为一个包含其他对象的集合或map或数组的字段,或该字段直接为一个其他对象的引用,
//这样在检查当前对象的同时也会检查该字段所引用的对象