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>

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

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值