Avatar billede syncroniq Nybegynder
29. april 2003 - 20:48 Der er 6 kommentarer og
1 løsning

Servlet beskeder

Hey

Jeg prøver og lave en servlet der kan gemme en lille besked. Bare simpelt.

Person 1 skal f.eks. kunne sige
http://localhost:8080/servlet?message=hejsa

hvor er person 2 skal kunne sige
http://localhost:8080/servlet?action=getMessage og få "hejsa" ud som respons.

Men hvordan gemmer man data imellem 2 kald i en servlet?

Håber i kan hjælpe.
Avatar billede arne_v Ekspert
29. april 2003 - 20:57 #1
Meget primitiv løsning:

public class Gem {
  public static String message;
}

gem:

Gem.message = request.getParameter("message");

hent:

out.println(Gem.message);
Avatar billede arne_v Ekspert
29. april 2003 - 20:57 #2
Lidt mere avanceret: lav en singleton og lad gem appende.
Avatar billede arne_v Ekspert
29. april 2003 - 21:06 #3
Eksempel:

public class Store {
    private static Store instance = null;
    private StringBuffer message;
    private Store() {
        message = new StringBuffer("");
    }
    public synchronized static Store getInstance() {
        if (instance == null)
            instance = new Store();
        return instance;
    }
    public synchronized void appendMessage(String s) {
        message.append(s);
    }
    public String getMessage() {
        return message.toString();
    }

    public static void main(String[] args) {
        Store.getInstance().appendMessage("abc");
        Store.getInstance().appendMessage("123");
        System.out.println(Store.getInstance().getMessage());
    }
}


(du skal naturligvis ikke have main med den er kun til test)
Avatar billede syncroniq Nybegynder
29. april 2003 - 21:57 #4
Hey,

Jammen det er jo til en servlet. Jeg skal kunne genne en String imellem to sessioner.
Avatar billede arne_v Ekspert
29. april 2003 - 22:01 #5
Ja.

Det kan den også bruges til.

Tag Store klassen, slet main, og brug Store.getInstance().appendMessage
og Store.getInstance().getMessage !

Det vil virke. Det er slet ikke så svært.

Dog kun på en enkelt server. Hvis du kører flere server i cluster
og bruger 1 skal kunne gemme på en maskine og bruger 2 kunne
læse på en anden maskine, så skal vi havet fat i nogle mere
avancerede løsninger.
Avatar billede syncroniq Nybegynder
29. april 2003 - 22:14 #6
Det prøver jeg. mange tak.
Avatar billede arne_v Ekspert
29. april 2003 - 22:25 #7
En servlet er bare en klasse som kører i en JVM, hvor en metode
bliver kaldt af mange tråde samtidigt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester