Мне удалось определить проблему.Поскольку в JDK 1.5+ так много болтовни и разговоров о методе getParameterMaps () для 1.5, информация о том, как обработчики 1.4 обрабатывают данные поста, была скудной и неоднозначной.(Пожалуйста, оставьте комментарий, если вы найдете что-то конкретное для 1.4).
До версии 1.5 вам необходимо вручную получить данные формы через getInputStream , а затем проанализировать их.Я нашел этот метод (опубликован ниже) на сайте java sun, который хорошо работает с использованием Hashtable.Мне пришлось сделать небольшой мод для устаревших методов.Но, кажется, работает достаточно надежно, «из коробки», так что вы можете просто вырезать и вставить.Я знаю, что это «старая технология», но я подумал, что это целесообразно для тех, кто может оказаться в той же ситуации, что и я, и застрял в решении (как представляется,) простых задач.
public Hashtable parsePostData(int length, ServletInputStream instream) {
String valArray[] = null;
int inputLen, offset;
byte[] postedBytes = null;
boolean dataRemaining=true;
String postedBody;
Hashtable ht = new Hashtable();
//Vector paramOrder = new Vector(10);
StringBuffer sb = new StringBuffer();
if (length <=0) {
return null;
}
postedBytes = new byte[length];
try {
offset = 0;
while(dataRemaining) {
inputLen = instream.read (postedBytes, offset, length - offset);
if (inputLen <= 0) {
throw new IOException ("read error");
}
offset += inputLen;
if((length-offset) ==0) {
dataRemaining=false;
}
}
} catch (IOException e) {
System.out.println("Exception ="+e);
return null;
}
postedBody = new String (postedBytes);
StringTokenizer st = new StringTokenizer(postedBody, "&");
String key=null;
String val=null;
while (st.hasMoreTokens()) {
String pair = (String)st.nextToken();
int pos = pair.indexOf('=');
if (pos == -1) {
throw new IllegalArgumentException();
}
try {
key = URLDecoder.decode(pair.substring(0, pos),"UTF8");
val = java.net.URLDecoder.decode(pair.substring(pos+1,pair.length()),"UTF8");
} catch (Exception e) {
throw new IllegalArgumentException();
}
if (ht.containsKey(key)) {
String oldVals[] = (String []) ht.get(key);
valArray = new String[oldVals.length + 1];
for (int i = 0; i < oldVals.length; i++) {
valArray[i] = oldVals[i];
}
valArray[oldVals.length] = val;
} else {
valArray = new String[1];
valArray[0] = val;
}
ht.put(key, valArray);
String sValues = "";
for(int i=0;i<valArray.length;i++) {
if (0<i) {
sValues+=",";
}
sValues = valArray[i];
}
System.out.println("Form data field " + key + ":" +sValues);
//paramOrder.addElement(key);
}
return ht;
}