关于request.getParameterMap()返回的map对象——我的一次移植测试经历
某次在伙伴处进行移植测试,他们写了一个过滤类FirstFilter.java,目的是实现对request请求参数中的敏感字符进行过滤提示,然后让请求继续进行,FirstFilter.java部分代码如下:
Map map = request.getParameterMap();Set set = map.entrySet();if (map != null) { for (Iterator it = set.iterator(); it.hasNext();) { Map.Entry entry = (Entry) it.next(); //System.out.println("entry class name:" + entry.getClass().getName()); if (entry.getValue() instanceof String[]) { String[] values = (String[]) entry.getValue(); for (int i = 0; i < values.length; i++){ values[i] = values[i].replace("'", "''"); for (int j = 0; j < value_group.length; j++){ if(values[i].equalsIgnoreCase(value_group[j])){ System.out.println("有关键字"); } } } entry.setValue(values); }}}
2009-09-18 11:08:53 错误 [apusic.web.cangzhouOA./cangzhouOA] 执行Servlet时发生错误。java.lang.UnsupportedOperationExceptionat java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry.setValue(Collections.java:1434)at com.OA.filter.FirstFilter.doFilter(FirstFilter.java:77)at com.apusic.web.container.FilterComponent.doFilter(Unknown Source)at com.apusic.web.container.FilterChainImpl.performFilter(Unknown Source)at com.apusic.web.container.WebContainer.invoke(Unknown Source)at com.apusic.web.container.WebContainer.processRequest(Unknown Source)at com.apusic.web.http.VirtualHost.processRequest(Unknown Source)at com.apusic.web.http.HttpServer.processRequest(Unknown Source)at com.apusic.web.http.HttpConnectionHandler.service(Unknown Source)at com.apusic.web.http.ConnectionHandler.processRequest(Unknown Source)at com.apusic.web.http.ConnectionHandler.processConnection(Unknown Source)at com.apusic.web.http.ConnectionHandler.run(Unknown Source)at com.apusic.util.ThreadPoolImpl$WorkerThread.run(Unknown Source)