HttpServletRequest入参校验方法

package com.tiger.common;

import org.apache.commons.lang.StringUtils;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.regex.Pattern;

/**
 * HttpRequest的转换类
 */
public class RequestUtil {

    private static Pattern filePattern = Pattern.compile("[/./.\\\\/:,<>+\"^]");


    /**
     * 将HttpServletRequest转换为HashMap形式
     * 重名参数只取第一个
     *
     * @param request
     * @return
     */
    public static HashMap<String, String> convert2Map(HttpServletRequest request) {
        HashMap<String, String> map = new HashMap<String, String>();


        Enumeration<String> names = request.getParameterNames();
        while (names.hasMoreElements()) {
            String key = names.nextElement();
            String value = RequestUtil.replaceChar(request.getParameter(key));
            if (StringUtils.isBlank(value)) {
                continue;
            }
            map.put(key, value);
        }


        return map;
    }

    /**
     * 校验参数中需要检查的key
     *
     * @param request
     * @return 需要验证的key,但是在request中没有找到的
     */
    public static String checkParamKey(HttpServletRequest request, String... keys) {
        StringBuffer buffer = null;
        if (keys.length > 0) {
            Enumeration<String> names = request.getParameterNames();
            ArrayList<String> paramKeyList = Collections.list(names);
            for (String keyNeed : keys) {
                if (!paramKeyList.contains(keyNeed)) {
                    if (null == buffer) {
                        buffer = new StringBuffer();
                        buffer.append(keyNeed);
                        continue;
                    }
                    buffer.append(", ").append(keyNeed);
                }
            }
        }
        return null == buffer ? null : buffer.toString();
    }


    public static String replaceChar(String value) {
        if (null == value || "".equals(value)) {
            return null;
        }
        if (value.indexOf("\r") != -1) {
            value = value.replaceAll("\r", "");
        }
        if (value.indexOf("\n") != -1) {
            value = value.replaceAll("\n", "");
        }
        if (value.indexOf("%0a") != -1) {
            value = value.replaceAll("%0a", "");
        }
        if (value.indexOf("%0d") != -1) {
            value = value.replaceAll("%0d", "");
        }
        return value;
    }


    /**
     * 替换文件路径中的非法字符
     * 如:/ \ + ^ : , .. 等
     *
     * @param value
     * @return
     */
    public static String replaceIllegalChar(String value) {
        if (null == value || "".equals(value)) {
            return null;
        }
        return filePattern.matcher(value).replaceAll("");
    }
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值