# Wie am besten Parameter transportieren?



## Fats (2. Feb 2007)

Mojn, mojn!

Es ist wie verhext: ein Problem gelöst und zack stehen 5 neue vor der Tür 

Ich bin grade dabei mit Parametern um mich zu schmeissen, und würde gern wissen, welche Möglichkeit die sinnvollste Lösung ist. Ich generiere mir mittels Servlet und Klassen eigene Grafiken, die ich in HTML und JSP-Seite einbinden möchte. Im Code steht einfach das image-Tag und ruft eine Bild-URL auf:


```
[img]/pics/pic.jpg[/img]
```

Diese ist mit dem Servlet verknüpft, das daraus ein Bild erzeugt und es als OutputStream zurückliefert. Anhand der an das Servlet übergebenen Parameter bestimme ich Farbe, Schriftart/größe, usw.

Bisher ziehe ich mir im Servlet die Parameter aus dem requestScope mittels


```
String font = request.getParameter("font");
String fontsize = request.getParameter("fontsize");
```

Dafür muß ich entsprechend das Image-Tag beim Aufruf mit Parametern präperieren:


```
[img]/pics/pic.jpg?font=arial&fontsitze=15&color=44dd11[/img]
```

Das geht, aber ich glaube, das ist recht unhübsch  :? Was denkt ihr? Wie kann man das besser machen?

Ich vermute, wenn ich von reinen HTML-Seiten diese Bilderaufrufen möchte, hab ich kaum eine andere Chance. Aber mit JSPs gibt es ja nooch mehr Möglichkeiten 

Ein erster Gedanke wäre, die Parameter mittels request.setAttribute(...) hochzuschicken und dann im Servlet wieder abzufragen. Ein erster Test klappte aber nicht. Nächste Idee wäre dann auf den SessionScope oder den ApplicationScope auszuweichen. ApplicationScope ist glaub ich häßlich, da man dafür sorgen müsste, daß es kein Kuddelmuddel gibt, sobald mehere User gleichzeitig auf die Webseiten zugreifen. Da wäre die Session geeigneter ...

Aber selbst dabei stellt sich noch die Frage, wie man den Aufbau von diversen Grafiken auf einer (!) Seite koordiniert? Verteilt man dann an die Objekte einzelne IDs und ruft nur diese als Parameter im Image-Tag auf?

Im JSP

```
[...]
img_obj[4711].setFont("arial");
img_obj[4711].setFontSize(17);
img_obj[4711].setColor("44dd11");
session.setAttribute("Img4711",img_obj[4711]);
[...]
[img]/pics/pic.jpg?id=4711[/img]
[...]
```


Im Servlet

```
[...]
String id = request.getParameter("id");
img_obj = (MyImgObj) session.getAttribute(id);
[...]
```

Wäre das der bessere Weg? Oder gibt es noch was Eleganteres?

Viele Grüße
Fats


----------



## Terminator (3. Feb 2007)

> Das geht, aber ich glaube, das ist recht unhübsch Was denkt ihr? 

Nö das passt doch.
Ist am einfachsten das als URL Parameter mitzugeben.


> Wie kann man das besser machen?

Könnte noch eigenes Tag programmieren.
<my:image src="..." fontSize="..." color="..."/>

Die Attribute auslesen und dann für URL codieren und Image Tag renderen.
Aber ob der Aufwand sich dafür lohnt, ich weiss nicht, muss man schon einiges proggen für.


----------



## Ralf Ueberfuhr (3. Feb 2007)

Das mit dem Request setzen funktioniert deshalb nicht, weil der Request ja erst beim Aufruf der Image-URL erzeugt wird. Der Request ist auf dem Server gültig von Request-Eingang bis Response-Asugang.

Anstelle des o.g. Custom Tags könntest du in JSPs auch die JSTL nutzen, schau mal unter <c:url>.

Ansonsten passt das auch so mit der URL, eine andere Möglichkeit gibt es nicht und macht auch wenig Sinn.


----------

