# Servlet



## MQue (7. Jun 2009)

Hallo, 

ich hab mir ein Servlet programmiert welches einen Response auf die untere form gibt, 
was mir jetzt nicht klar ist, ist, dass in der for die Reihenfolge bei den name="..." -> vorname, nachname, plz ist, wenn ich diese Namen im Servlet mit 


```
for(Enumeration<Object> enumeration = request.getParameterNames(); enumeration.hasMoreElements();) {
 		   	out.print(enumeration.nextElement() + "<br />");
 	   		}
```

auslese, bekomme ich aber die Reihenfolge:nachname, plz vorname,
Wie kann das sein,

die Ausgabe vom Servlet soll nämlich so aussehen:

vorname: Michael
nachname: Weninger
plz: 12345

Hat da jemand eine Idee, wie ich die name/wert paare herausbekomme oder wie ich es machen kann, dass die Reihenfolge der namen stimmt?

Vielen Dank,




```
<form method="post" action="http://localhost:8080/Anmeldung/AnmeldeServlet" onsubmit="return validiereEingabe();">
  	<table border="0" cellpadding="5" cellspacing="0">
	    <tr> 
	      <td align="center"><div>Vorname*:</div></td>
	      <td><input id="vorname" class="schwarzerRahmen" name="vorname" type="text" size="30" maxlength="30" /></td>
	    </tr>
	    <tr>
	      <td align="center"><div>Zuname*:</div></td>
	      <td><input id="nachname" class="schwarzerRahmen" name="nachname" type="text" size="30" maxlength="40" /></td>
	    </tr>
	    <tr>
	      <td align="center"><div>Postleitzahl*:</div></td>
	      <td><input id="text" class="schwarzerRahmen" name="plz" type="text" size="30" maxlength="40" /></td>
	    </tr>
	    <tr>
	      <td></td>
	      <td>
	        <input type="submit" value=" Send "/>
	        <input type="reset" value=" Zurücksetzen" />
	      </td>
	    </tr>
  	</table>
```


----------



## Noctarius (7. Jun 2009)

Im Hintergrund steht eine Map welche nicht sortiert ist. Die Daten fallen in beliebiger Reihenfolge raus.

Wenn du aber genau weißt, dass diese Daten kommen kannst du sie direkt abrufen:

```
String vorname = request.getParameter("vorname");
String nachname = request.getParameter("nachname");
String plz = request.getParameter("plz");
```


----------



## MQue (7. Jun 2009)

Noctarius hat gesagt.:


> Im Hintergrund steht eine Map welche nicht sortiert ist. Die Daten fallen in beliebiger Reihenfolge raus.
> 
> Wenn du aber genau weißt, dass diese Daten kommen kannst du sie direkt abrufen:
> 
> ...



Hallo,

das mit getParameter("...."); ist mir klar, aber wir sollen aus der Anfrage eben in meinem Fall "vorname, nachname, plz" herausbekommen, ohne es zu wissen,
lässt sich da was machen? 

im Header (bei der POST- Methode) stehts ja so drinne: 

vorname=meinname&nachname=meinnachname&plz=1234

kann ich da irgendwie die Tupel rausbekommen, z.B.: vorname=meinname?


----------



## Noctarius (7. Jun 2009)

So ganz verstanden was du machen willst hab ich nicht. Natürlich kannst du den InputStream selbst parsen, ob es das ist was du willst weiß ich aber nicht.


----------



## MQue (7. Jun 2009)

Noctarius hat gesagt.:


> So ganz verstanden was du machen willst hab ich nicht. Natürlich kannst du den InputStream selbst parsen, ob es das ist was du willst weiß ich aber nicht.



nein, ich möchte einfach, dass das Servlet folgendes darstellt:

vorname     Michael
nachname   Weninger
plz             12345

wobei ich vorname, nachname und plz über eine Methode abfragen möchte und auch die Werte (Michael, Weninger, 12345) mit einer Methode Abfrage möchte,

nur eben wie du geschrieben hast, ist das mit der Reihenfolge ein Problem wegen der Map,

jetzt weiß ich eben nicht wie ich das machen soll,


----------



## Noctarius (7. Jun 2009)

Du kannst die ParameterMap in eine TreeMap ( TreeMap (Java 2 Platform SE v1.4.2) ) packen und einen eigenen Comparator schreiben der genau sagt wann was kommen soll, wobei Comparatoren einen bestimmten Contract, der die Rückgabewerte der Funktion definieren, haben und einhalten müssen ( Comparator (Java 2 Platform SE v1.4.2) ).

Ansonsten wüsste ich auch keine Methode.


----------



## MQue (17. Jun 2009)

Noctarius hat gesagt.:


> Du kannst die ParameterMap in eine TreeMap ( TreeMap (Java 2 Platform SE v1.4.2) ) packen und einen eigenen Comparator schreiben der genau sagt wann was kommen soll, wobei Comparatoren einen bestimmten Contract, der die Rückgabewerte der Funktion definieren, haben und einhalten müssen ( Comparator (Java 2 Platform SE v1.4.2) ).
> 
> Ansonsten wüsste ich auch keine Methode.



Macht man das wirklich so? ich kanns mir nicht erklären, ich bin der einzige, bei dem es so verdreht daherkommt (vorname, plz, nachname), gibts da keine andere Möglichkeit, wie ich das in eine vernünfrige Reihenfolge bekomme? if- Abfragen (if ("vorname)) mag ich auch nicht reingeben, das wird dann wieder so ein gräßlicher Code, aber ich schätze mal, das Problem mit der Reichenfolge haben ja andere auch, implementieren die wirklich immer einen Comperator?
lg


----------



## Noctarius (17. Jun 2009)

Ja kannst du. Ein TreeSet mit Comparator. Wie willst du sonst einer Liste eine Reihenfolge vorgeben?


----------



## MQue (17. Jun 2009)

Noctarius hat gesagt.:


> Ja kannst du. Ein TreeSet mit Comparator. Wie willst du sonst einer Liste eine Reihenfolge vorgeben?



und wie sieht das dann aus, da muss ich in meinem Fall "vorname, nachname und plz", ja hardcodieren, um vergleichen zu können,
Hättest du vielleicht ein kleines Beispiel?
Vielen Dank,
lg


----------



## Noctarius (17. Jun 2009)

Richtig müsstest du. Wie man das macht steht genau in der API. Wie gesagt der Comparator hat nen bestimmten Contract der erdüllt sein muss.


----------

