# Ajax - Servlet



## MQue (29. Jul 2009)

Hallo,

ich bin bei meiner Web- Appl gerade bei der Server- Client Kommunikation dabei und hab ein paar Schwierigkeiten,

Auf meinem Client habe ich folgenden Ajax- Code:


```
var request = null;
function getVariables() {    
    createRequest();   // request wird bei jeder Anfrage neu initialisiert
    var url = "ControllerServlet";
    request.open("post", url, true);   // sollte nur beim ersten mal geöffnet werden        
    request.onreadystatechange = updatePage;
    request.send("test"); // nur bei der ersten Anfrage Initialisierungsparameter ("test") senden
    }
```

und am Servlet hab ich folgenden Code:

```
@Override
    protected void doPost(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException {     
//bei der ersten Anfrage Initialisierungsparameter auslesen und bei den weiteren
//Anfragen die Daten senden, die bei der ersten Anfrage ausgemacht wurden

        final PrintWriter out = response.getWriter();        
        out.println(String.valueOf(223));
        }
```

Was ich jetzt benötigen würde ist, dass bei der ersten Anfrage des Clients an den Server Initialisierungsparameter zum Server gesendet werden (das soll send("test"); darstellen) und weiters dann der Client z.B.: alle 3s beim Server anfragt und der Server dann die Daten sendet, die bei der ersten Anfrage ausgemacht wurden.

Was mir jetzt nicht klar ist, kann ich var request = null; einmal initialisieren und dann dieses gleiche Objekt immer für die Anfrage an den Server verwenden und wie kann ich es realisieren, dann nur bei der ersten Anfrage die Initialisierungsparameter mitgesendet werden und wie kann man diese Initialisierungsparameter (z.B.: bei mir oben jetzt "test") im Servlet auslesen.

Viele Fragen, ich weiß, ich hoffe Ihr könnt mir helfen,
Vielen Dank erstmal,
lg


----------



## bygones (29. Jul 2009)

dem servlet ist es ja egal ob es nun das erste mal oder das zigtemal aufgerufen wurde.

wenn es parameter uebergeben bekommt kannst du das aus dem Request auslesen und verwerten.

Ob du dann auf clientseite einen schalter einbaust um nur beim ersten mal die werte zu senden oder einfach immer sendest und das servlet entscheidet dann ob es die parameter ausliest ist deine sache (bzw welche parameter gesendet werden)

ansonsten schaut das nach JavaScript auf der Clientseite aus... da gibt es natuerlich viele moeglichkeiten je nach dem welche (und ob ueberhaupt) du eine js libraries fuer deine Ajax aufrufe nutzt


----------



## MQue (29. Jul 2009)

deathbyaclown hat gesagt.:


> dem servlet ist es ja egal ob es nun das erste mal oder das zigtemal aufgerufen wurde.
> 
> wenn es parameter uebergeben bekommt kannst du das aus dem Request auslesen und verwerten.
> 
> ...



Ich werds jetzt mal so machen, dass ich bei der ersten Anfrage eine Session (am Server) erzeuge und die Initialisierungsparameter in der Session speichere und bei den weiteren anfragen lese ich die Parameter aus der Session aus und schicke die Daten zurück.
Wäre das so ok und was stellt man als contentType am Servlet ein wenn auf der Clientseite eine callback- Methode die Daten in empfang nimmt?

Vielen Dank,
lg


----------

