else if(method.getName().equals("getParameterMap")){ Map<String,String[]> map = (Map<String, String[]>) method.invoke(req, args); if(map!=null){ for (String s : list) { for (String key : map.keySet()) { if(map.get(key)[0].contains(s)){ map.get(key)[0]= map.get(key)[0].replace(s,"***"); } } } } return map; } //不是就传递真实对象,和args数组 return method.invoke(req, args); } }); //2.放行!注意这时候穿proxy_req 在Servlet调用getParameter方法才会走增强的逻辑! chain.doFilter(proxy_req, resp);
注意contain()两头的位置,是大包小
[笨蛋, 坏蛋, fuck]
输出:
key=name,value=zhang
key=msg,value=***zhang