【项目问题解决】参数过滤器实现代码及相关问题

发布时间:2024年01月03日

主图==========

目录

【项目问题解决】参数过滤器实现代码及相关问题


文章所属专区 项目问题解决


1.前言

参数过滤器实现代码及相关问题

2.代码实现

2.1常量类

@Component
public class ProjectConstants {
    public static String CONDITION_FILTER;
    
    @Autowired(
            required = false
    )
    private void setConditionFilter(@Value("${request.param.condition.filter:%}") String filter) {
        this.assignConditionFilter(filter);
    }

    private void assignConditionFilter(String filter) {
        CONDITION_FILTER = filter;
    }
}

2.2过滤器方法

  /**
     * 综合查询条件过滤
     * @param map
     * @throws AppException
     */
    public static void validateIllegalParam(Map<String, Object> map) throws AppException {
        if (org.apache.commons.lang3.StringUtils.isNotBlank(ProjectConstants.CONDITION_FILTER)) {
            List<String> conditionFilterList = Arrays.asList(ProjectConstants.CONDITION_FILTER.split(","));
            Iterator var2 = map.entrySet().iterator();

            while(var2.hasNext()) {
                Map.Entry<String, Object> entry = (Map.Entry)var2.next();
                String key = (String)entry.getKey();
                Object value = entry.getValue();
                if (value instanceof String && conditionFilterList.contains(value)) {
                    throw new AppException("参数包含特殊字符", InternationUtils.getMessage("HOOX_ARCHIVE_01705", new Object[]{"{\"" + key + "\": \"" + value + "\"}"}));
                }
            }
        }

    }


    public static Map<String,Object> transformParam(Map<String, String> map){
        Map<String,Object> result = new HashMap<String,Object>();
        for(Map.Entry<String, String> entry : map.entrySet()){
            String key = entry.getKey();
                String value = entry.getValue();
            if(value instanceof Object){
                result.put(key,value);
            }else{
                result.put(key,value);
            }
        }
        return result;
    }

2.3 注意

在实现常量类 方法自动执行 @Autowired(required = false ) 虽然注入失败不会报错,但要注意整个类要加@Component 将整个类注入容器作为一个Bean。

3.总结

参数过滤器有多种实现方法,本文介绍了通过工具介入修改或者判断参数。

4.参考

java对过滤器或者拦截器中Request.parameter中参数进行添加或修改
java布隆过滤器搭建 java布隆过滤器实现
Java 过滤器使用 Java 过滤器实现请求过滤
java文件过滤器的使用
全注解实现自定义过滤器与拦截请求参数

给个三连吧 谢谢谢谢谢谢了
在这里插入图片描述

文章来源:https://blog.csdn.net/qq_43238568/article/details/135030988
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。