zoukankan      html  css  js  c++  java
  • springboot统一日期格式(前端请求后台接收实体)+ 全局handler前日期统一处理、跨域配置

    第一步:自定义类

    import org.apache.commons.lang.StringUtils;
    import org.springframework.core.convert.converter.Converter;
    import org.springframework.stereotype.Component;
    
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    
    /**
     * 全局handler前日期统一处理
     * @author WBG
     * @date 2021/4/17
     */
    @Component
    public class DateConverterConfig implements Converter<String, Date> {
    
        private static final List<String> formarts = new ArrayList<>(4);
    
        private static final String YYYY_MM = "yyyy-MM";
        private static final String YYYY_MM_DD = "yyyy-MM-dd";
        private static final String YYYY_MM_DD_HH_MM = "yyyy-MM-dd HH:mm";
        private static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
    
        static{
            formarts.add(YYYY_MM);
            formarts.add(YYYY_MM_DD);
            formarts.add(YYYY_MM_DD_HH_MM);
            formarts.add(YYYY_MM_DD_HH_MM_SS);
        }
    
        @Override
        public Date convert(String source) {
            if (StringUtils.isBlank(source)) {
                return null;
            }
            source = source.trim();
            if(source.matches("^\d{4}-\d{1,2}$")){
                return parseDate(source, formarts.get(0));
            }else if(source.matches("^\d{4}-\d{1,2}-\d{1,2}$")){
                return parseDate(source, formarts.get(1));
            }else if(source.matches("^\d{4}-\d{1,2}-\d{1,2} {1}\d{1,2}:\d{1,2}$")){
                return parseDate(source, formarts.get(2));
            }else if(source.matches("^\d{4}-\d{1,2}-\d{1,2} {1}\d{1,2}:\d{1,2}:\d{1,2}$")){
                return parseDate(source, formarts.get(3));
            }else {
                throw new IllegalArgumentException("Invalid false value '" + source + "'");
            }
        }
    
        /**
         * 格式化日期
         * @param dateStr String 字符型日期
         * @param format String 格式
         * @return Date 日期
         */
        private Date parseDate(String dateStr, String format) {
            Date date;
            try {
                DateFormat dateFormat = new SimpleDateFormat(format);
                date = dateFormat.parse(dateStr);
            } catch (Exception e) {
                throw new IllegalArgumentException(e.getLocalizedMessage());
            }
            return date;
        }
    
    }

    第二步:全局拦截

    /**
     * 自定义拦截配置
     */
    @Configuration
    public class WebMvcConfig implements WebMvcConfigurer {
    
       
        /**
         * 添加自定义的Converters和Formatters.
         */
        @Override
        public void addFormatters(FormatterRegistry registry) {
            registry.addConverter(new DateConverterConfig());
        }
    
    /**
         * 跨域配置
         */
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            /**
             * 可跨域全局配置
             */
            registry.addMapping("/**")
                    .allowedOrigins("*")
                    .allowCredentials(true)
                    .allowedMethods("GET", "POST", "DELETE", "PUT")
                    .allowedHeaders(SystemConstant.TOKEN)
                    .maxAge(3600 * 24);
        }
    }
  • 相关阅读:
    数组指针:a pointer to an array,即指向数组的指针
    爬取人人网新鲜事python版本
    python的专用类方法
    北邮校园网管登陆python脚本
    北邮人论坛python模拟登录程序
    结对项目四则运算“软件”升级版
    了解大数据的特点、来源与数据呈现方式
    第一次作业:准备
    第二次作业:分布式版本控制系统Git的安装与使用
    第三次作业 四则运算
  • 原文地址:https://www.cnblogs.com/weibanggang/p/14671046.html
Copyright © 2011-2022 走看看