1、先新建一个类ParameterRequestWrapper 继承自HttpServletRequestWrapper,代码如下:
- private Map params;
- public ParameterRequestWrapper(HttpServletRequest request,Map newParams) {
- super(request);
- this.params=newParams;
- }
- // 只要重写getParameterMap这个方法即可,其他不需要
- 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、在filter中修改parameters,
- HttpServletRequest req = (HttpServletRequest) request;
- String jsondata = req.getParameter("jsondata");
- JSONObject ob = JSONObject.fromObject(jsondata);
- HashMap m=new HashMap(request.getParameterMap());
- Set<String> keys = ob.keySet();
- for (String key : keys) {
- m.put(key, ob.get(key));
- }
- ParameterRequestWrapper wrapRequest=new ParameterRequestWrapper(req,m);
- chain.doFilter(wrapRequest, response);