Spring MVC使用篇(十一)—— Validation数据校验

1、综述

  对于MVC模式的Web应用,不同层面校验的机制是不同的。例如在Controller控制层,会校验页面请求参数的合法性;在Service业务层,主要校验关键业务参数,且仅限于Service接口中使用的参数。而对于DAO数据交互层,一般不需要再进行校验。

  在后端校验的都是比较常用的数据,绝大部分业务逻辑都使用一样的校验方法,这时候如果在每个方法里面都添加这种校验逻辑,会是大妈臃肿不好维护,因此需要将校验逻辑集中起来。Spring MVC为此提供了多种校验机制,其中有Bean Validation及Spring Validator接口校验。在Spring 4.0之后,支持Bean Validation 1.0(JRS-303)和Bean Validation 1.1(JRS-349)校验,可以单独集成Hibernate的validation校验框架,用于服务端的数据校验。

2、Bean Validation 数据校验

2.1 导入jar包

  要在项目中使用Bean Validation校验机制,需要添加相关jar包,具体如下图所示:
在这里插入图片描述
在这里插入图片描述
  其中validation-api.jar提供了Bean Validation的基本校验机制,以及用于xml文档验证的api。hibernate-Validator.jar是Hibernate的一个验证框架,其中包含了Bean Validation的检验约束拓展,不需要和Hibernate的其他部分绑定就可以使用。即使项目中没有使用Hibernate,但是使用了Hibernate的validation机制,就要引入Hibernate的依赖jar包jboss-logging.jar。

  Bean Validation校验框架的一个重要特性就是,检测实体封装类JavaBean中的数据。 它会使用简洁的注解语法来对Bean中的某个属性进行校验。

2.2 搭建validation校验框架

  在前面的用户登录项目基础上,实现真正对用户通过表单提交过来的数据进行校验。

  login.jsp页面为:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>   
<!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>用户登录</title>
    </head>
    <body>
        <h3>用户登录</h3>
        <form action="doLogin.action" method="post">
            <table width="300px;" border=1>
                <tr>
                    <td>用户编号:</td>
                    <td><input type="text" name="userId" id="userId" /></td>
                </tr>
                <tr>
                    <td>用户名:</td>
                    <td><input type="text" name="username" id="username" /></td>
                </tr>
                <tr>
                    <td>密 码:</td>
                    <td><input type="password" name="password" id="password" /></td>
                </tr>
            </table>
            <br/>
            <input type="submit" id="login_button" value="用户登录" />
        </form>
    </body>
</html> 

  当用户的登录信息处理完毕后,如果校验成功,向用户显示success.jsp页面,提示登录成功,具体页面代码如下所示:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>登录成功</title>
</head>
<body>
  <h2>登录成功!</br></br>欢迎您${
   
   user.username}</h2>
  <hr/>
  <h3>使用user参数显示用户注册信息</h3>
  <table width="300px;" border=1>
    <tr>
      <td>用户编号:</td>
      <td>${
   
   user.userId}</td>
    </tr>
    <tr>
      <td>用户名:</td>
      <td>${
   
   user.username}</td>
    </tr>
    <tr>
      <td>密 码:</td>
      <td>${
   
   user.password}</td>
    </tr>
  </table>
</body>
</html>

  当用户的登录信息处理完毕后,如果校验失败,向用户显示error.jsp页面,提示登录失败,并显示具体校验错误信息,具体页面代码如下所示:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: xiaobaixiaoda
  Date: 2018/11/14
  Time: 14:47
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录错误</title>
</head>
<body>
    <h1>登录错误!</h1>
    <c:if test="${allErrors != null}">
        <c:forEach items="${allErrors}" var="error">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值