SpringMVC学习之服务器端校验
来源:互联网 发布:时代网络大厦 联想电脑 编辑:程序博客网 时间:2024/06/03 17:25
1.校验理解
通常使用较多的是前端校验,比如页面js校验,对于安全性要求高一点的建议在服务器端校验。
服务器端校验:
控制层controller:校验页面请求参数的合法性,在服务器端控制层controller校验不区分客户端类型(浏览器,手机客户端,远程校验)
业务层service:(使用较多)主要校验关键业务参数,仅限于service接口使用的参数
持久层dao:一般不进行校验
2.springmvc校验
springmvc使用hibernate的校验框架validation
校验思路:
页面提交请求的参数,请求到controller方法中,使用validation进行校验,如果校验出错,将错误信息展示到页面
3.环境准备
hibernate的validation所需的jar包
hibernate-validation-4.3.0.Final.jar
jboss-logging-3.1.0.CR2.jar
validation-api-1.0.0.GA.jar
4.配置校验器
<bean id="validation" class="org,springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <!--校验器--> <property name="providerClass" value="org.hibernate.HibernateValidator" /> <!--指定校验使用的资源文件,在文件中进行配置校验错误的信息,如果不指定则默认为classpath下的ValidationMessage.properties--> <property name="validationMessageSource" ref="messageSource"/></bean><bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basenames"> <list> <value>classpath:CustomValidationMessage</value><!--这里不加。properties是因为上面property中的name是basenames--> </list> </property><!--文件编码方式--> <property name="fileEncodings" value="utf-8" /><!--对资源文件内容缓存时间单位是秒,120秒后重新加载--> <property name="cacheSeconds" value="120" /></bean>
5.校验器注入到处理器适配器
<mvc:annotation-driven validator="validator"/>
6.在pojo中添加校验规则
如在字段上加一行代码
@Size(min=1,max=30,message="{资源文件的key值,用大括号括起来}")
private String name;
上面的两行代码表示校验名称在1到30个字符之间,message表示出错提示信息,
不在上面配置出错信息,就配置到上面的资源文件中,防止硬编码(资源文件中例:item.name.length.error=内容)
7.配置 .properties文件
item.name.length.error=字符长度不合适
8.在controller中进行校验捕获
将页面提交过来的pojo进行校验,在controller的pojo形参前加如:@Validated Item item,后面再加一个参数 BindingResult bindingResult)
如:
public String index(@Validated Item item , BindingResult bindingResult) {return null;}
注:1.在需要校验的pojo前面加@Validated在需要校验的pojo后面加BindingResult bindingResult 接收校验的出错信 息。
2.多个需要校验的,则@Validated 和 BindingResult bindingResult是配对出现的,并且顺序是固定的一前一后
在controller中获取校验错误信息:
if(bindingResult.hasErrors()) { List<ObjectError> allErrors = bindingResult.getAllErrors(); for(ObjectError objectError:allErrors) { 输出(objectError.getDefaultMessage());}}
用来测试是不是捕获了错误信息
9.在页面显示校验的错误信息
需要在controller方法中将错误信息传到页面,使用Model,return的时候返回该页面
(具体的页面的修改,如何将错误信息显示在特定的位置这里不做说明)
- SpringMVC学习之服务器端校验
- SpringMVC:服务器端校验配置
- SpringMVC服务器端校验-无配置文件
- SpringMVC服务器端校验-有配置文件
- 学习SpringMVC(十八)之JSR303数据校验
- springmvc-学习总结-校验
- springmvc之输入校验
- SpringMvc之数据校验
- Springmvc学习(05)-数据校验
- springmvc之JSR303数据校验
- springmvc学习笔记(14)-springmvc校验
- 【SpringMVC学习06】SpringMVC中的数据校验
- SpringMVC校验---SpringMVC学习笔记(八)
- SpringMVC校验---SpringMVC学习笔记(八)
- springmvc学习笔记(14)-springmvc校验
- springMVC校验之hibernate validator校验器的使用
- Spring学习笔记-springMVC校验框架
- SpringMVC学习(七)-JSR303数据校验
- poi读取Excel内容
- flex自动导入包
- 每天回顾linux命令(unzip)
- Numpy快速入门教程(一):数组创建与数组访问
- ThinkPHP5/PHP 使用TCPDF 生成PDF文件
- SpringMVC学习之服务器端校验
- SparkStreaming之单词计数实现在一次程序的运行中,两次发送相同的key可以进行累加
- Java抽象类 详解
- 快速排序算法及C++编程
- web前端 网络优化学习笔记
- 读书05《布赞学习技巧——思维导图》
- Eclipse上Maven+Spring MVC的HelloWord项目的tiles整合
- Linux C 单向链表2
- Dynamics 365 app for android下载及IFD模式下非购买证书的app端登录