首页 > 学院 > 开发设计 > 正文

Validation校验(一)

2019-11-14 10:23:24
字体:
来源:转载
供稿:网友
校验理解项目中,通常使用较多的是前端的校验,比如页面中的js校验,对于安全要求较高点建议在服务端进行校验服务端校验控制层Controller:校验页面请求的参数合法性,在服务端控制层Controller校验,不区分客户端类型(浏览器,手机客户端,远程接口调用等)业务层service:主要校验关键业务参数,仅限于service接口中使用的参数持久层dao:一般是不校验的sPRingmvc校验springmvc使用hibernate的校验框架validation(和hibernate没有任何关系)。校验思路:页面提交请求的参数,请求到Controller方法中,使用validation进行校验,如果校验出错,将错误信息展示到页面需求:用户信息修改,添加校验环境准备hibernate的校验框架validation所需要的jar包:配置校验器springmvc.xml
	<!-- 校验 -->	<bean id="validator"		class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">		<!-- 校验器 -->		<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>classpath:CustomValidationMessages</value>			</list>		</property>		<!-- 资源文件编码格式 -->		<property name="fileEncodings" value="utf-8" />		<!-- 对资源文件内容缓存时间,单位秒 -->		<property name="cacheSeconds" value="120" />	</bean>新建校验信息资源文件CustomValidationMessages.properties校验器注入到处理器适配器中springmvc.xml
<mvc:annotation-driven conversion-service="conversionService" validator="validator"></mvc:annotation-driven>在pojo中添加校验规则
//检查名称在3到5个字符中间	@Size(min = 3, max = 5, message = "{user.name.length}")	private String name;	// 年龄不能为空	@NotNull(message = "{user.age.isNull}")	private Integer age;Controller添加验证
// 需要在校验的pojo前边添加@Validated,在需要校验的pojo后边添加BindingResult接收校验输出错误信息	// 注意:@Validated和BindingResult是配对出现,并且形参顺序是固定的(一前一后)	@RequestMapping("/editUserSubmit")	public String editUserSumit(Model model, Integer id, @Validated UserCustom userCustom, BindingResult bindingResult)			throws Exception {		if (bindingResult.hasErrors()) {			List<ObjectError> errors = bindingResult.getAllErrors();			for (ObjectError objectError : errors) {				System.out.println(objectError.getDefaultMessage());			}			model.addAttribute("errors", errors);			// 重定向			return "user/editUser";		} else {			usersservice.updateUser(id, userCustom);			// 重定向			return "redirect:queryUsers.action";		}	}jsp页面显示错误信息
<c:if test="${errors!=null }">				<tr>					<td><c:forEach items="${errors }" var="error">						${error.defaultMessage }<p />						</c:forEach></td>				</tr>			</c:if>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表