• 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);
        }
    }
  • 相关阅读:
    HTML5存储
    HTML5全局属性和事件
    HTML5媒体(音频/视频)
    HTML5标签canvas制作动画
    HTML5标签canvas图像处理
    开发kendo-ui弹窗组件
    HTML5标签canvas制作平面图
    javascript匿名函数
    Javascript富文本编辑器
    快速排序算法(python版本)
  • 原文地址:https://www.cnblogs.com/weibanggang/p/14671046.html
Copyright © 2020-2023  润新知