异常
java.lang.IllegalStateException: No modifications are allowed to a locked ParameterMap。网上查了一些资料,解决方案是使用Wrapper,重写HttpServletRequestWrapper,如下:
package com.gdcn.bpaf.security.yale; import java.util.Enumeration; import java.util.Map; import java.util.Vector; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; @SuppressWarnings("unchecked") public class ParameterRequestWrapper extends HttpServletRequestWrapper { private Map params; public ParameterRequestWrapper(HttpServletRequest request, Map newParams) { super(request); this.params = newParams; } public Map getParameterMap() { return params; } public Enumeration getParameterNames() { Vector l = new Vector(params.keySet()); return l.elements(); } public String[] getParameterValues(String name) { Object v = params.get(name); if (v == null) { return null; } else if (v instanceof String[]) { return (String[]) v; } else if (v instanceof String) { return new String[] { (String) v }; } else { return new String[] { v.toString() }; } } public String getParameter(String name) { Object v = params.get(name); if (v == null) { return null; } else if (v instanceof String[]) { String[] strArr = (String[]) v; if (strArr.length > 0) { return strArr[0]; } else { return null; } } else if (v instanceof String) { return (String) v; } else { return v.toString(); } } }
2.使用
//然后在另一个地方使用时,按下面这样用,假如我要修改username的值 HashMap m=new HashMap(request.getParameterMap()); /* 关键部分,如果不转换成String数组,如果在下面这样是有时: eg: HttpSession session = request.getSession(); Map map = request.getParameterMap(); Set keySet = map.keySet(); for (Iterator iterator = keySet.iterator(); iterator.hasNext();) { String key = (String)iterator.next(); String values[] = (String[])map.get(key); //这个地方就会报错,因为username一个String不能转换成String数组 if (values.length == 1) session.setAttribute(key, values[0]); else session.setAttribute(key, values); } 异常 就会出现java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.String; */ //m.put("username", newusername); //这样会报错 m.put("username", new String[]{newusername}); //这就是对的 HttpServletRequest req = (HttpServletRequest) request; com.gdcn.bpaf.security.yale.ParameterRequestWrapper wrapRequest=new com.gdcn.bpaf.security.yale.ParameterRequestWrapper(req,m); request=wrapRequest; //这是rquest就和本身的request一样了
相关推荐
可以动态修改表达提交参数,使之修改request.getParameterMap(),不报异常。
对request请求进行拦截,对请求参数修改。常用于前台提交表单参数关键字的过滤。此工具可以对参数拦截并转义后提交到对应的处理类。 除了添加两个JsFilter.java和GetHttpServletRequestWrapper.java之外,需要在web....
一个非常棒的程序,用于修改request携带的参数信息。使用了filter等技术。
java 干货,对接口参数进行中的特殊字符,如insert select * % 等进行判断,进行过滤.
对项目中的所有参数去除前后空格...可以基于此过滤器实现过滤跨站脚本攻击,参数的增加,修改!敏感词汇过滤。实现原理为重写HttpServletRequestWrapper,获取参数的方法。include和 Forwarded 内部转发不在过滤之内。
支持jmeter5.0 请求参数中文乱码,修改了jar源代码,直接放到lib/ext 覆盖即可
如果您正在寻找一份JAVA客户端发送POST请求的示例代码,那么我们的资源库将为您提供一切所需。...您可以根据自己的需求和场景,修改示例代码中的请求参数和响应处理方法,并将其应用到实际项目中。
java模拟网络请求,get post put delete四种模式,请求头处理参数处理。此文件仅供大家参考,稍作修改即可。
一个可以在你修改请求参数值后,自动从新计算sign的burp插件。但是前提是你需要知道具体的算法细节,并且在插件的GUI中配置。BackgroundMore and more mobile developers begin to use the signature algorithm to ...
本篇文章主要介绍了java通过HttpServletRequest获取post请求中的body内容的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本例子主要展示了自行封装请求参数和返回数据的用法,对后台的交互没有任何格式和命名限制。 基于Bootstrap 2.3.2,相关的其他插件包括图标控件FontAwesome、等待提示控件Spinjs(修改版)、弹窗控件lhgdialog(修改版) ...
(微信只在第一次请求,以后链接不 改则不会请求认证)参数说明:这两行就是上文需要在源码中替换的参数,如果第一次部署项目没成功,请重置appsecret参数网页授
java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供用于生成与呈现无关的图像的类和接口。 java.awt.print 为通用的打印 API 提供类和接口。 java.beans 包含与开发 beans 有关的类,...
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供用于生成与呈现无关的图像的类和接口。 java.awt.print 为通用的打印 API 提供类和接口。 java.beans 包含与开发 beans 有关的类,即...
1. 简单类型是按值传递的 ... swap(int[] data, int a, int b) 方法在内部实际上是改变了 data 所指示的对象的成员数据,即上述讨论的第二种改变参数值的方法。希望大家能够举一反三,使用类似的方法来解决相关问题。
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
运行环境jdk1.6,使用时,根据实际情况修改: map.put("userId", "320"); String temp = HttpTest.doPost("http://www.test.com/submit.jsp", map, "GBK");