im Moment arbeite ich an einem Applet, das ein Servlet dazu bringen soll, den übermittelten Inhalt in eine Datei auf dem Server zu schreiben.
Das Applet besteht im Grunde aus einem TextArea und einem Absende-Button.
Alles funktioniert prima, wenn ich nur ein Wort in das Feld schreibe.
Sobald ich aber ein Leerzeichen hinter das Wort mache und ein zweites Wort anfüge, passiert beim Drücken des Absende-Buttons gar nichts mehr. Wenn ich eine 2. Zeile in das Textfeld einfüge, gibt es sogar eine MalformedURLException.
Das Lesen einer Datei mit vielen Zeilen und das Anzeigen im TextArea funktioniert tadellos. Nur das Zurückschreiben macht die genannten Probleme.
Ich nutze die Methode (doGet(…) im Servlet und die Fehlermeldung heißt:
java.net.MalformedURLException: Illegal character in URL
wenn du den Text bzw. die Sonderzeichen in der TextArea nicht escapst (z. B. Leerzeichen wird zu %20) wirst du mit der GET-Methode immer ein Problem haben. Bei GET werden alle an das Servlet zu übertragenden Parameter in die URL eingeflochten,
etwa so http://meinewebseite.de/meinServlet?param1=asdf&m2=1…
Deswegen auch die Exception.
GET ist insbesondere schlecht, da die URL nicht endlos sein kann (irgendwo bei ~2.000 Zeichen ist Schluss, soweit ich es noch im Kopf habe).
Besser: Die POST-Methode verwenden, da darf „alles“ drin sein und die Länge ist auch nicht beschränkt. Sowohl im Applet verwenden als auch im Servlet (die doPost() überschreiben).
POST wäre meine Lieblingsoption.
Ich hatte gehofft, dass ich einfach doGet durch doPost zu ersetzen muss.
Leider funktioniert es nicht. Es gibt eine IOException.
Hier fehlt mir Wissen.
Vermutlich muss ich im Applet oder im Servlet irgend etwas ändern.
Das Kochrezept für doPost scheint anders zu sein.
Hast du eine Idee?
POST wäre meine Lieblingsoption.
Ich hatte gehofft, dass ich einfach doGet durch doPost zu ersetzen muss.
Leider funktioniert es nicht. Es gibt eine IOException.
Hier fehlt mir Wissen.
Vermutlich muss ich im Applet oder im Servlet irgend etwas ändern.
Das Kochrezept für doPost scheint anders zu sein.
Hast du eine Idee?
POST würde ich gerne verwenden. Im Moment wird offensichtlich im Servlet automatisch die Methode doGet angesprochen.
Wie muss ich meinen Link anders gestalten, damit er die Methode doPost anspricht? Geht das eigentlich oder muss ich mit der Klasse org.apache.commons.httpclient.methods.PostMethod arbeiten?
Die Methode PostMethod hab ich gegoogelt. Mit dieser Methode habe ich allerdings keine Erfahrung.
Woraus setzt sich die URL zusammen, die den Fehler auslöst?
POST würde ich gerne verwenden. Im Moment wird offensichtlich im Servlet automatisch die Methode doGet angesprochen.
Wie muss ich meinen Link anders gestalten, damit er die Methode doPost anspricht? Geht das eigentlich oder muss ich mit der Klasse org.apache.commons.httpclient.methods.PostMethod arbeiten?
Die Methode PostMethod hab ich gegoogelt. Mit dieser Methode habe ich allerdings keine Erfahrung.
Woraus setzt sich die URL zusammen, die den Fehler auslöst?
Besser: Die POST-Methode verwenden, da darf „alles“ drin sein
und die Länge ist auch nicht beschränkt. Sowohl im Applet
verwenden als auch im Servlet (die doPost() überschreiben).
Die Methode POST möchte ich gern im Applet verwenden.
Wenn der GET Request funktioniert und die doGet Methode deines Servlelts anspricht sollte ein POST auf die selbe URL ohne Parameter eigentlich die doPost Methode ansprechen, also http://www.haller-mtl.de/Test/Test
Momentan meldet Tomcat aber für alle URLs einen Fehler.
Wenn der GET Request funktioniert und die doGet Methode deines
Servlelts anspricht sollte ein POST auf die selbe URL ohne
Parameter eigentlich die doPost Methode ansprechen, also http://www.haller-mtl.de/ Test/Test
Momentan meldet Tomcat aber für alle URLs einen Fehler.
Ein Html-Formular mit der Methode Post ist meine Zwischenlösung. Die akzeptiert der Server.