SpringMVC 学习笔记心得(三)自定义Converter的使用

应用场景:我们在数据库中定义了出生日期字段类型为date,在浏览器中的form表单中填写数据,springmvc内置了十种过滤器模式,当你将日期写成xx/xx/xx格式可以被内置解析,但是xx-xx-xx这种格式会抛出 400 Bad Request请求异常,所以我们自定义过滤器配置使用

1.实现接口Converter<S,T>

1.1 创建StringDateFormat类

 	 /*
       类型转换
     */
    public Date convert(String s) {

        if (s == null) {
            throw new RuntimeException("参数不能为空");
        }

        try {
            // 解析字符串 Date date = df.parse(source); return date;
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            Date date = df.parse(s);
            return date;
        } catch (Exception e) {
            throw new RuntimeException("类型转换错误");
        }
    }

1.2 在springmvc配置文件中配置ConversionServiceFactoryBean工厂

 <bean class="org.springframework.context.support.ConversionServiceFactoryBean" id="conversionService">

        <property name="converters">
            <set>
                <bean class="cn.itcast.controller.StringDateFormate"></bean>
            </set>

        </property>
    </bean>

1.3 模拟实体类

public class UserAccount implements Serializable {

    private Date date;
		
		(...省略toString get() set() )
}

1.4 在没添加之前输入xx-xx-xx发出错误请求界面:

在这里插入图片描述
2.编写Controller类

@RequestMapping("/getDate")
    public String getDate(UserAccount account){
        System.out.println("date : " + account);
        return "success";
    }

2.1 输入xx-xx-xx日期类型,控制台输出结果为:

date : UserAccount{date=Tue Dec 11 00:00:00 CST 1212}

2.中文乱码问题解决

 <!-- 配置过滤器  -->

  <filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

好了,这就是简易自定义过滤器的使用了,有什么不同的见解可以一起探讨

猜你喜欢

转载自blog.csdn.net/weixin_43409994/article/details/105900883
今日推荐