java.lang.IllegalStateException: No modifications are allowed to a locked ParameterMap

java.lang.IllegalStateException: No modifications are allowed to a locked ParameterMap

在拦截器中,拦截请求参数,对参数进行处理,避免跨域注入漏洞等问题;

将request中的参数 进行替换时出现的错误
 Map<String, String[]> params =  request.getParameterMap();
if (params.size() > 0) {
	for (String key : params.keySet()) {
		String[] vlaue = params.get(key);
		vlaue[0] = HTMLEncode(vlaue[0]);
		params.put(key,vlaue);
	}
}
修改如下:
Map<String, String[]> params = new HashMap(request.getParameterMap());
	if (params.size() > 0) {
		for (String key : params.keySet()) {
			String[] vlaue = params.get(key);
			vlaue[0] = HTMLEncode(vlaue[0]);
			params.put(key,vlaue);
		}
	}
	public static String HTMLEncode(String aText){
        final StringBuilder result = new StringBuilder();
        final StringCharacterIterator iterator = new StringCharacterIterator(aText);
        char character =  iterator.current();
        while (character != CharacterIterator.DONE ){
            if (character == '<') {
                result.append("&lt;");
            }
            else if (character == '>') {
                result.append("&gt;");
            }
            else if (character == '&') {
                result.append("&amp;");
            }
            else if (character == '\"') {
                result.append("&quot;");
            }
            else {
                result.append(character);
            }
            character = iterator.next();
        }
        return result.toString();
    }

总结:在java中,对象直接进行等于操作的时候会关联原对象 原对象不可以进行修改 新参数也无法进行修改

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值