zoukankan      html  css  js  c++  java
  • 10.SpringMVC 自定义类型转换器

    自定义类型转换器

    SpringMVC 默认已经提供了一些常用的类型转换器,例如:客户端提交的字符串转换成int型进行参数设置。

    那么如果是时间类型它也会自动转,但是呢 每个国家的时间类型都不一样对吧,你能确保SpringMVC 都给你转吗? 这是不可能的,例如:

    package com.bihu.Controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import java.util.Date;
    
    @Controller
    public class TestController {
    
        @RequestMapping("/ok")
        @ResponseBody//直接响应 不进行跳转
        public void TestConverter(Date date){
            System.out.println(date);
        }
    
    
        /***
         *      当你访问下面网址时:
         *      成功访问:http://localhost:8080/ok?date=2020/02/03
         *      失败报错:http://localhost:8080/ok?date=2020-02-03
         */
    }

    所以呢 如果你想是 2020-02-03的这样进来 怎么办:

    自定义类型转换器的开发步骤:

    ① 定义转换器类实现Converter接口

    ② 在配置文件中声明转换器

    ③ 在中引用转换器

    代码:

    1️⃣

    package com.bihu.Converter;
    
    import org.springframework.core.convert.converter.Converter;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    //① 定义转换器类实现Converter接口
    //实现这个接口 选有泛型的 第一个是你原来的类型 第二个是你要转的类型
    public class DateConverter implements Converter<String,Date> {
    
    //convert 是重写的方法 -- 形参是你传进来的字符串
        @Override
        public Date convert(String myDate) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date = null;
            try {
                date = sdf.parse(myDate);   //此方法需处理异常
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return date;    //将转换好的时间 返回去
        }
    }

    然后:2️⃣ 和 3️⃣

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                               http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
                               http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
        <!--扫描注解-->
        <context:component-scan base-package="com.bihu"/>
    <!--  原始容器处理静态资源  -->
        <mvc:default-servlet-handler/>
    
    
        <!-- ② 在配置文件中声明转换器:ConversionServiceFactoryBean //转换服务工厂bean
            他的参数是Set 我们吧我们自己的转换器 注入
            记得加ID 引用中引入
        -->
        <bean id="DateConverter" class="org.springframework.context.support.ConversionServiceFactoryBean">
            <property name="converters">
                <list>
                    <bean class="com.bihu.Converter.DateConverter"></bean>
                </list>
            </property>
        </bean>
    
        <!--③ 在<annotation-driven>中引用转换器-->
        <!--驱动注解 在这里引入自定义转换器 [conversion-service] -->
        <mvc:annotation-driven conversion-service="DateConverter" />
    </beans>

    然后呢 你尝试访问 http://localhost:8080/ok?data=2020-02-03 也可以将 日期制动封装到Date类型了。

    本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/14976842.html

  • 相关阅读:
    PyCharm 2020 激活到 2100 年
    PyTorch-22 学习 PyTorch 的 Examples
    机器视觉的主要研究内容和细分方向(超全超赞)
    CVPR 2020 全部论文 分类汇总和打包下载
    2020年,加油鸭
    SpiningUP 强化学习 中文文档
    大学C语言基础——30天挑战PAT甲级(一)
    明天提交辞职报告
    要开始新的技术之旅了
    记忆是件奇怪的东西
  • 原文地址:https://www.cnblogs.com/bi-hu/p/14976842.html
Copyright © 2011-2022 走看看