文档章节

springmvc - validation

lemos
 lemos
发布于 2016/11/19 16:53
字数 610
阅读 15
收藏 0
点赞 0
评论 0

校验理解

一般是在前端使用js进行校验。而使用服务器端的校验,一般对安全性要求较高。

服务端校验

控制层:校验页面参数的合法性。这种校验不区分客户端的类型(浏览器,手机客户端、远程调用)

业务层:主要关键业务参数,仅仅限于service接口中的参数。

持久层:一般不进行校验。

#springmvc 校验

springmvc 使用hibernate 的校验框架validation (和 hibernate 没有任何关系)

校验思路

页面提交的参数,请求到controller方法中,使用validation进行校验校验,如果出错,将错误信息回显到页面上。

##具体需求 商品修改,添加校验,如果出错,在修改页面显示错误信息。

##jar 包

在maven中搜索hibernate-validator-4.3.0就ok,它会自动帮你下载其jar包,及相关依赖包。 hibernate-validator 的相关jar包

##代码实现

一、配置校验器 springmvc- servlet.xml中配置

<!-- 校验器 -->
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactor
    <!-- hibernate校验器-->
    <property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
    <!-- 指定校验使用的资源文件,在文件中配置校验错误信息,如果不指定则默认使用classpath下的ValidationMessages.properties -->
    <property name="validationMessageSource" ref="messageSource" />
</bean>
<!-- 校验错误信息配置文件 -->
<bean id="messageSource"
      class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <!-- 资源文件名-->
    <property name="basenames">
        <list>
            <value>CustomValidationMessages</value>
        </list>
    </property>
    <!-- 资源文件编码格式 -->
    <property name="fileEncodings" value="utf-8" />
    <!-- 对资源文件内容缓存时间,单位秒 -->
    <property name="cacheSeconds" value="120" />
</bean>

二、校验器配置到处理器适配器中 springmvc-serlvet.xml中配置

<mvc:annotation-driven conversion-service="conversionService"
validator="validator"/>

三、在po类中x配置校验

@Size(min = 1,max = 20,message = "{items.name.length.error}")
private String name;

@NotNull(message = "{items.createtime.isNull}")
private Date createtime;

四、创建 CustomValidationMessages.properties

#添加错误的校验信息提示
items.name.length.error= 请输入1到20个字符
items.createtime.isNull= 请输入商品的生产日期

五、捕获错误校验信息

//商品信息修改提交
@RequestMapping(value=("/editItemsSubmit"),method = {RequestMethod.GET,RequestMethod.POST})
public String editItemsSubmit(Model model, HttpServletRequest request, Integer id,
                              @Validated ItemsCustom itemsCustom, BindingResult bindingResult)throws Exception {
    if (bindingResult.hasErrors()) {
        List<ObjectError> allErrors = bindingResult.getAllErrors();
        for (ObjectError allError : allErrors) {
            System.out.println(allError.getDefaultMessage());
        }
        model.addAttribute("allErrors", allErrors);
        return "items/editItems";
    }
    ...
}

注意:

处理器方法必须给定包含Errors的参数,这可以是Errors本身,也可以是它的子类BindingResult。

而且这个参数是必须紧挨着@Valid参数的,即必须紧挨着需要校验的参数,这就意味着我们有多少个@Valid参数就需要有多少个对应的Errors参数,它们是一一对应的。

© 著作权归作者所有

共有 人打赏支持
lemos
粉丝 6
博文 177
码字总数 86333
作品 0
芜湖
后端工程师
让Spring Controller 的方法基本数据类型参数支持Bean Validation

让Spring Controller 的方法基本数据类型参数支持Bean Validation Spring中的Bean Validation 我们知道Spring MVC层是默认可以支持Bean Validation的,尝试使用了一下感觉很不方便,只支持对...

ForEleven
2014/04/18
0
32
Spring 3 MVC and JSR303 @Valid example

In Spring 3, you can enable “mvc:annotation-driven” to support JSR303 bean validation via annotation, if any JSR 303 validator framework on the classpath. Note Hibernate Vali......

凯文加内特
2015/10/10
116
0
bean的属性校验

拓展阅读: Java如何实现判断一个对象的所有属性是否为空 springMVC介绍之spring validation Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC(系列) 7. Validation, Data Bin...

pandudu
2016/12/27
3
0
spring mvc 采用 jsr303 bean validation 校验框架

这是一个规范,定义了一些元素来进行bean的数据校验,比如 你的model有一个 user.java ,里面有一个email,当用户注册时候要验证email是否合法。 一般做法是js前端校验,但是不安全,作为完整...

moz1q1
2014/10/31
0
0
Spring Validation实现原理分析

最近要做动态数据的提交处理,即需要分析提交数据字段定义信息后才能明确对应的具体字段类型,进而做数据类型转换和字段有效性校验,然后做业务处理后提交数据库,自己开发一套校验逻辑的话周...

68号小喇叭
07/08
0
0
Spring Roo 简介,第 1 部分: 从源代码构建

Spring Roo 是针对 Java™ 技术的一个轻量级生产力工具,可快速便捷地开发基于 Spring 的应用程序。使用 Spring Roo 创建的应用程序遵循 Spring 最佳实践,且基于 JPA、Bean Validation (JS...

IBMdW
2011/03/29
0
0
Spring 3.0.0 is Now Available (2009-12-16)

Spring 3.0.0 is Now Available News and Announcements It's here just in time for the holidays! Arjen Poutsma has just announced that Spring 3.0.0 is now final and Juergen Hoeller......

晨曦之光
2012/03/09
0
0
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC

Spring4新特性——泛型限定式依赖注入 Spring4新特性——核心容器的其他改进 Spring4新特性——Web开发的增强 Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC Spring4新特性...

咖啡杯
2014/02/18
0
0
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC

Spring4新特性——泛型限定式依赖注入 Spring4新特性——核心容器的其他改进 Spring4新特性——Web开发的增强 Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC Spring4新特性...

咖啡杯
2014/02/18
0
0
【补充】Hibernate validator使用和自定义validator及整合Spring MVC

Hibernate validator使用 导入validation-api-xxx.jar 以及 hibernate-validator-xxx.Final.jar 需要检查的java bean Entity.java 值校验的测试类 输出结果 这里有一个国际化的key值,国际化文...

jason_wu_2
2016/12/27
387
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java基础——异常

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 异常处理: 可以挖很多个陷阱,但是不要都是一样...

凯哥学堂
11分钟前
0
0
180723-Quick-Task 动态脚本支持框架之结构设计篇

文章链接:https://liuyueyi.github.io/hexblog/2018/07/23/180723-Quick-Task-动态脚本支持框架之结构设计篇/ Quick-Task 动态脚本支持框架之结构设计篇 相关博文: 180702-QuickTask动态脚本...

小灰灰Blog
14分钟前
0
0
SBT 常用开发技巧

SBT 一直以来都是 Scala 开发者不可言说的痛,最主要的原因就是官方文档维护质量较差,没有经过系统的、循序渐进式的整理,导致初学者入门门槛较高。虽然也有其它构建工具可以选择(例如 Mill...

joymufeng
19分钟前
0
0
HBase in Practice - 性能、监控及问题解决

李钰(社区ID:Yu Li),阿里巴巴计算平台事业部高级技术专家,HBase开源社区PMC&committer。开源技术爱好者,主要关注分布式系统设计、大数据基础平台建设等领域。连续4年基于HBase/HDFS设计和...

中国HBase技术社区
20分钟前
1
0
ES18-JAVA API 批量操作

1.批量查询 Multi Get API public static void multiGet() {// 批量查询MultiGetResponse response = getClient().prepareMultiGet().add("my_person", "my_index", "1")// 查......

贾峰uk
24分钟前
0
0
SpringBoot2.0使用health

1,引入actuator <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency> 2,application.properties ......

暗中观察
31分钟前
0
0
阿里巴巴Java开发规约

###编程规约 命名风格 【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束 【强制】代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。...

简心
36分钟前
0
0
如何用TypeScript来创建一个简单的Web应用

转载地址 如何用TypeScript来创建一个简单的Web应用 安装TypeScript 获取TypeScript工具的方式: 通过npm(Node.js包管理器) npm install -g typescript 构建你的第一个TypeScript文件 创建...

durban
41分钟前
0
0
分享好友,朋友圈自定义分享链接无效

这个问题是微信6.5.6版本以后,修改了分享规则:分享的连接必须在公众号后台设定的js安全域名内

LM_Mike
58分钟前
0
0
2018年7月23日课程

一、LVS-DR介绍 director分配请求到不同的real server。real server 处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接。负载均衡器仅处理一半的连接,避免了...

人在艹木中
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部