# Einfaches Problem mit Servlets



## ernst (6. Nov 2008)

Hallo allerseits,
1)
Zu Demozwecken (um ein bisschen zu üben) schicke ich von einem Formular (Ursprungsformular) aus eine Artikelnummer an den Apachewebserver (Tomcat). Dort sucht ein von mir geschriebenes Servlet diesen Artikel in einer Datenbank und schickt den Artikel an den Client, der dort im Browser ausgegeben wird.
Im Brower wird oben die Zeile angezeigt:
http://localhost:8080/db2/Austausch
Alles funktioniert korrekt.

2)
Zusätzlich schickt das Servlet auch das oben angegebene Formular (also den entsprechenden HTML-Text) mit, so dass der Anwender wieder ein Formular hat, in dem er nochmals eine Artikelnummer eingeben kann. Jetzt gibt es ein Problem:
Wenn ich in das (vom Servlet erhaltene) Formular (nicht in das Ursprungsformular) die gleiche Artikelnummer eingebe, erscheint im Browser auf der Zeile oben:
http://localhost:8080/localhost:8080/db2/Austausch
(also zweimal localhost)
Vom Webserver kommt die Meldung:
The requested resource (/localhost:8080/db2/Austausch) is not available.
Obwohl ich die gleiche Artikelnummer wie im Ursprungsformular eingegeben habe.


Bemerkungen:
1)
Das Servlet, das das Formular sendet, enthält die Programmierzeile:
out.println("<form action=\"http:/localhost:8080/db2/Austausch\" method=\"post\">");

2)
Wenn ich im Browser auf "aktuelle Seite neu laden klicke" (d.h. bevor ich die nochmals eingegebene Artikelnummer im vom Servlet erhaltenen Formular eingebe) erscheint die Meldung:
"Die Seite, die Sie ansehen wollen, enthält POST-Daten. Wenn Sie die Daten nochmals senden, wird jede Aktion, die das Formular ausgeführt hat (wie eine Suche oder ein Online-Einkauf) wiederholt. Um die Daten  nochmals zu senden klicken Sie OK, andernfalls klicken Sie abbrechen."
Wenn ich OK drücke, kommt (nach dem Drücken des Absendebuttons auf meinem Formular) allerdings wieder der oben beschriebene Fehler.


Das Problem hat vielleicht nichts mit Java zu tun.
Kann mir trotzdem jemand sagen, wo der Fehler liegt?

mfg
Ernst


----------



## Murray (6. Nov 2008)

ernst hat gesagt.:
			
		

> Das Servlet, das das Formular sendet, enthält die Programmierzeile:
> out.println("<form action=\"http:/localhost:8080/db2/Austausch\" method=\"post\">");



Keine Ahnung, ob das das Problem verursacht, aber sollte es nicht http:*//*localhost:8080.... heißen?


----------



## Sergeant_Pepper (6. Nov 2008)

Hallo ernst,

ich steige zwar selber erst in die Thematik ein, aber so etwas habe ich noch nie gesehen:

*http://localhost:8080/localhost:8080/db2/Austausch*

Ich habe noch nie einen URL gesehen, in dem der Servername (hier localhost) und der Port (hier 8080) zwei mal vorkommen.


----------



## Murray (6. Nov 2008)

Sergeant_Pepper hat gesagt.:
			
		

> *http://localhost:8080/localhost:8080/db2/Austausch*
> 
> Ich habe noch nie einen URL gesehen, in dem der Servername (hier localhost) und der Port (hier 8080) zwei mal vorkommen.



Genau das ist ja das Problem: der Server auf localhost:8080 kann mit dem Pfad "/localhost:8080/db2/Austausch" nichts anfangen und meldet deshalb einen Fehler.

Daher auch mein Tip (s.o.), es mal mit einem doppelten Slash hinter dem "http:" zu versuchen, damit die Adresse auch wirklich als absolute URL verstanden wird.


----------



## Sergeant_Pepper (6. Nov 2008)

Ach da liegt der Hund begraben:



> Das Servlet, das das Formular sendet, enthält die Programmierzeile:
> 
> ```
> out.println("<form action=\"http:/localhost:8080/db2/Austausch\" method=\"post\">");
> ```


----------



## ernst (7. Nov 2008)

Murray hat gesagt.:
			
		

> Sergeant_Pepper hat gesagt.:
> 
> 
> 
> ...



Genau das war das Problem, das damit gelöst ist.
Vielen Dank an alle.

mfg
Ernst


----------

