Da ein Parameter auch mehr als einen Wert haben kann, hilft getParameter() nicht weiter, da dieser nur jeweils einen Wert liefert. Hier führt die Methode getParameterValues() zum Ziel, die ein Feld von Strings zurückgibt. (Damit ist kein zusammengesetzter String etwa für Suchmaschinen gemeint.) Sind wir an einer vollständigen Aufzählung der Schlüssel interessiert, liefert getParameterNames() ein Objekt vom Typ Enumeration zurück, mit dem wir durch das Feld wandern und die Werte mit getParameter() erfragen können.
<% java.util.Enumeration paramNames = request.getParameterNames(); while ( paramNames.hasMoreElements() ) { String param = (String) paramNames.nextElement(); out.print( "<p>" + param + " = " ); String[] paramValues = request.getParameterValues( param ); if ( paramValues.length == 1 ) { String paramValue = paramValues[0]; if ( paramValue.length() == 0 ) out.println( "unbestimmt" ); else out.println( paramValue ); } else { for ( int i = 0; i < paramValues.length; i++ ) out.print( paramValues[i] + " " ) ; out.println( "<p>" ); } } %>
Wenn wir das Programm mit der Zeile
http://localhost:8080/jt/parameterNames.jsp?a=1&b=2&c=&a=2
im Browser starten, erzeugt das Servlet folgende Ausgabe:
b = 2 a = 1 2 c = unbestimmt
Wir sehen, dass alle Parameter hier aufgeführt sind, doch in unbestimmter Reihenfolge. Dies ist aber egal. Das Programm erkennt, ob ein Wert gesetzt ist oder nicht beziehungsweise ob einem Schlüssel ein Wert zweimal zugewiesen wurde.