springMVC和mybatis整合笔记02


1.springMVC注解开发:

       包装类型pojo参数绑定:

            1.在形参中 添加httpServletRequest Request参数,通过request来接收条件参数。

            2.在形参中 让包装类型的pojo接收条件参数

               分析:

                      页面传参是复杂多样性的。

2.

    数组绑定、list绑定,map绑定。

  1.使用List接收页面提交的批量数据,通过包装pojo接收,在包装pojo中定义list<pojo>属性。


3.服务端校验:

      1.通常使用最多的是前端校验,比如js校验。对于安全性较高的建议在服务端进行校验。

      2.服务端校验:控制层controller--校验页面请求的参数的合法性

      3.业务层校验:(使用最多)主要校验关键业务参数、仅限于service接口中的使用参数。

      3.持久层校验:一般是不检验的。

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

    思路:页面提交请求的参数,请求道controller方法中,使用validation进行校验,如果校验出错,将错误信息展示到页面。

hibernate-validator-4.3.0.Final.jar

jboss-logging-3.1.0.CR2.jar

validation-api-1.0.0.GA.jar

 

校验规则:

 <!-- 校验器 -->
    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <!-- hiberante校验 -->
        <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
        
        <!-- 指定校验的资源文件,如果不指定,默认使用classpath下validationMessages.properties -->
        <property name="validationMessageSource" ref=""/>
    </bean>
    <!-- 校验资源文件 -->
    <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
       <!-- 资源文件名 -->
      <property name="basenames">
         <list>
            <value>classpath:CustomValidationMessage</value>
         </list>
      </property>
      <!-- 资源文件编码格式 -->
      <property name="fileEncodings" value="utf-8"/>
      <!-- 文件内容缓存时间 -->
      <property name="cacheSeconds" value="120"/>
    </bean>

 <!-- 注解映射器 -->
    <!-- 注解适配器 -->  
     <mvc:annotation-driven validator="validator"></mvc:annotation-driven>
 //校验名称
    @Size(min=1,max=30,message="{items.name.length.error}")
    private String name;

 //非空校验
    @NotNull(message="{items.createtime.isNull}")
    private Date createtime;

 

CustomValidationMessage.properties:
   items.name.length.error=\u8BF7\u8F93\u51651\u523030\u4E2A\u5B57\u7B26\u7684\u5546\u54C1\u540D\u79F0
   items.createtime.isNull=\u8BF7\u8F93\u5165\u5546\u54C1\u7684\u751F\u4EA7\u65E5\u671F

//在你需要校验的pojo前边添加@Validated,在后面添加BindingResult bindingResult接收错误信息
//@Validated 和BindingResult bindingResult配对出现,且按顺序
	@RequestMapping("/editqueryItems")
	public ModelAndView editqueryItems(@Validated ItemsQueryVo itemsQueryVo,BindingResult bindingResult)throws Exception{

//获取检验错误方法
		if(bindingResult.hasErrors()){
			//输出错误信息
			List<ObjectError> allErrors=bindingResult.getAllErrors();
			for (ObjectError objectError : allErrors) {
				//输出错误信息
				System.out.println(objectError.getDefaultMessage());
			}
                    //传到页面上去
            model.addAttribute("allErrors", allErrors);
                   return "到从新修改页面";
 }

<!-- 页面显示错误信息 -->
   <c:if test="${allErrors!=null }">
   <c:forEach items="${allErrors}"  var="error">
      ${error.defaultMessage }
   </c:forEach>
   </c:if>

5.分组校验:

    在pojo中定义校验规则,而pojo是被多个controller所共用,不同的controller对同一个pojo进行校验,但是每个controller方法需要不同的检验。

     解决方法:

         定义多个 检验分组(接口),分组中每个controller方法使用不同的校验分组。

  

/**
 * @描述: 校验分组
 * 
 */
public interface ValidGroup1 {

	//接口不需要定义任何方法。仅是对不同的检验规则进行分组。
}

//检验名称在1到30的字符
    //message提示出错信息
    //groups此校验属于哪个分组,可以定义多个分组。
    @Size(min=1,max=30,message="{items.name.length.error}",groups={ValidGroup1.class})
    private String name;


//在你需要校验的pojo前边添加@Validated,在后面添加BindingResult bindingResult接收错误信息
//@Validated 和BindingResult bindingResult配对出现,且按顺序
//value={ValidGroup1.class}指定使用validgroup1分组
@RequestMapping("/editqueryItems")
public ModelAndView editqueryItems(@Validated(value={ValidGroup1.class}) ItemsQueryVo itemsQueryVo,
       BindingResult bindingResult)throws Exception{




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值