校验理解:
项目中,通常使用较多是前端的校验,比如页面中 js 校验。对于安全要求较高点建议在服务端进行校验。
服务端校验:
控制层 controller:校验页面请求的参数的合法性。在服务端控制层 controller 校验,不区分客户端类型(浏览器、手机客户端、远程调用)
业务层 service(使用较多):主要校验关键业务参数,仅限于 service 接口中使用的参数。
持久层 dao:一般是不校验的。
需求:
springmvc 使用 hibernate 的校验框架 validation (和 hibernate 没有任何关系)。
校验思路:
页面提交请求的参数,请求到 controller 方法中,使用 validation 进行校验。如果校验出错,将错误信息展示到页面。
具体需求:
产品修改,添加校验(校验商品名称长度,生产日期的非空校验),如果校验出错,在产品修改页面显示错误信息。
准备 jar 包:
hibernate 的校验框架 validation 所需要 jar 包:
配置校验器:
校验器注入到处理器适配器中
在 pojo 中添加校验规则
CustomValidationMessages.properties:
捕获校验错误信息:
editProducts.jsp:
效果:
分组校验
需求:
在 pojo 中定义校验规则,pojo 是被多个 controller所共用。当不同的 controller 方法对同一个 pojo 进行校验时,不能让每个 controller 方法完成不同的校验。
解决方法:
定义多个校验分组( 其实是一个 java 接口 ),分组中定义有哪些规则;每个 controller 方法使用不同的校验分组。