博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【SpringMVC整合MyBatis】validation校验-商品修改校验
阅读量:6846 次
发布时间:2019-06-26

本文共 2684 字,大约阅读时间需要 8 分钟。

springmvc校验
1.校验理解
项目中,通常使用较多是前端的校验,比如页面中js校验。对于安全要求较高点建议在服务端进行校验。
服务端校验:
控制层controller:校验页面请求的参数的合法性。在服务端控制层controller校验,不区分客户端类型(浏览器、手机客户端、远程调用)
业务层service(使用较多):主要校验关键业务参数,仅限于service接口中使用的参数。
持久层dao:一般是不校验的。
2.springmvc校验需求
springmvc使用hibernate的校验框架validation(和hibernate没有任何关系)。
校验思路:
页面提交请求的参数,请求到controller方法中,使用validation进行校验。如果校验出错,将错误信息展示到页面。
具体需求:
商品修改,添加校验(校验商品名称长度,生产日期的非空校验),如果校验出错,在商品修改页面显示错误信息。
3.环境准备
hibernate的校验框架validation所需要jar包:
 
4.配置校验器
在springmvc.xml配置文件中配置:
classpath:CustomValidationMessages
之后在工程的源文件夹config下创建CustomValidationMessages.properties配置文件,用来配置校验错误信息。
5.校验器注入到处理器适配器
6.在pojo中添加校验规则
在ItemsCustom.java中添加校验规则:
public class Items {	    private Integer id;    //校验名称在1到30个字符之间    //message是提示校验出错显示的信息    @Size(min=1,max=30,message="{items.name.length.error}")    private String name;    private Float price;    private String pic;    //非空的校验    @NotNull(message="{items.createtime.isNULL}")    private Date createtime;    private String detail;    //get和set方法省略}
7.CustomValidationMessages.properties
在CustomValidationMessages.properties配置校验错误信息:
#添加校验错误提示信息items.name.length.error=请输入1到30个字符的商品名称items.createtime.isNULL=请输入商品的生产日期
8.捕获校验错误信息(@Validated与BindingResult)
//商品信息修改提交//在需要校验的pojo前边加@Validated,在需要校验的pojo后边添加BindingResult bindingResult接收校验出错信息//注意:@Validatedh和BindingResult bindingResult是配对出现,并且在形参中出现的顺序是固定的(一前一后)@RequestMapping("/editItemsSubmit")public String editItemsSubmit(HttpServletRequest request,Integer id,		@Validated ItemsCustom itemsCustom,BindingResult bindingResult)throws Exception{				//获取校验错误信息		if(bindingResult.hasErrors()){			//输出错误信息			List
allErrors=bindingResult.getAllErrors(); for(ObjectError objectError:allErrors){ //输出错误信息 System.out.println(objectError.getDefaultMessage()); } } itemsService.updateItems(id, itemsCustom); //重定向到商品的查询列表 return "redirect:queryItems.action"; }
我们先测试输出错误看看,如果能正常输出错误,我们再去让它在页面中显示
访问主界面:

点击修改,如图

然后让生产日期为空,发现报错:

然后让名字大于30个字符,发现报错:
说明我们的校验配置成功!
下面我们让它在页面显示校验错误提示信息
9.在页面显示校验错误信息
在controller中将错误信息传到页面即可。
//获取校验错误信息if(bindingResult.hasErrors()){	//输出错误信息	List
allErrors=bindingResult.getAllErrors(); for(ObjectError objectError:allErrors){ //输出错误信息 System.out.println(objectError.getDefaultMessage()); } //将错误传到页面 model.addAttribute("allErrors",allErrors); //出错之后要跳转的页面 return "items/editItems";}
页面显示错误信息:
在商品编辑页面editItems.jsp中显示错误信息:
${error.defaultMessage}
然后再一次测试,不输入日期和输入长姓名,点击修改之后结果:

如图

转载请注明出处:

你可能感兴趣的文章
我的友情链接
查看>>
我的友情链接
查看>>
linux 下安装zip
查看>>
我的友情链接
查看>>
python-标示符和关键字
查看>>
使用递归解决斐波那契数列的性能问题
查看>>
Springboot之整合Fastdfs
查看>>
【Perl】perl正则表达式中的元字符、转义字符、量词及匹配方式
查看>>
用带余除法可以解决一切部分分式的题目
查看>>
10部电影教你6大沟通术-泡妞MM
查看>>
JQuery 左右拖动插件
查看>>
[转]获取js函数的名称
查看>>
笔记本的拆卸
查看>>
最长递增子序列LIS再谈
查看>>
【Text Editor】文本编辑器:Sublime Text
查看>>
C语言 判断字符串是否回文
查看>>
改变echarts中tooltip的宽度以及换行
查看>>
js中伪数组
查看>>
【ZZ】超全面的设计模式总结
查看>>
连续特征离散化和归一化
查看>>