# Applet - Servlet Kommunikation ohne Sockets



## Kian (6. Okt 2004)

Hi,
ich schreib gerade für 'ne Art Browsergame ein Applet das TXT-Dateien auf einem Server lesen und verändern kann!
Das Lesen hab ich ohne Probleme hinbekommen und klappt auch prima. Das läuft alles über ein Servlet. Jetzt hab ich das Problem, dass ich es nicht hinbekomme Daten(Strings) an das Servlet zu schicken. Über Params und URLConnection geht es aber ich kann auf diese Weise keine ganzen Sätze mit Leerzeilen schicken.

Code im Applet:
ACTION Param = was getan werden soll
FILE = Name der Datei
EXT = Dateiendung (musste ich machen da die Params keine Punkte akzeptieren)
Ich weiss diese Params könnte ich mir sparen, wenn ich des Zeug direkt übertrage würde.(WIE?!)


```
public void write()
{
    URL url2 = new URL("http://localhost:8080/servlet1?ACTION=write&FILE=test&EXT=txt");
    URLConnection con2 = url2.openConnection();

    // Hier muss vermutlich was rein das die Daten(String) sendet

}
```

Den einzigen Code den ich im Servlet hab ist für das Auslesen der Params(request.getParameter("xx") der Datei(über RandomAccessFile) und das Senden der Strings an das Applet:


```
public void send()
{
        response.setContentType("text/plain");
        PrintWriter out = response.getWriter();
        out.write(text);
}
```


----------



## foobar (6. Okt 2004)

Du mußt die Daten per Post übermitteln. Guck mal hier: http://www.java-forum.org/de/viewtopic.php?t=8414&highlight=connection

BTW Es ist eine große Sicherheitslücke, wenn jeder über ein Servlet, Daten auf dem Server manipulieren kann.


----------



## Bleiglanz (6. Okt 2004)

Oder die Leerzeichen maskieren (%20) URL encoden, irgendwo in java.net.* ist dafür eine Klasse...

max. Länge so um die 1000 Zeichen in einer URL


----------



## Kian (6. Okt 2004)

OK, das mit POST raff ich jetzt, aber wie richtet man das Servlet so ein das es die Daten auch empfangen kann?


----------



## CyberKane (19. Okt 2004)

```
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;

public class servletTest extends HttpServlet
{

   public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
   {
      String sParam = req.getParameter ("servlet1");
   }
}
```

Das was du in deinem String hinter servlet1=... versendest, wird unter dem String sParam abgespeichert. Hoffe dieser Beipsielhafte Vorgang hilft dir.

MFG - CyberKane


----------



## Kian (23. Okt 2004)

Das nicht das was ich wollte, aber die Sache hat sich nun von selbst erledigt, bin von selbst drauf gekommen.
Trotzdem, Danke!


----------

