Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich weiss nicht, ob ich richtig liege aber die Variable username sollte den Wert der Session "username" ausgeben. Was ich nicht verstehe ist was getUserProperties() hier für eine Rolle spielt. Warum kann ich nicht einfach userSession.get("username"); ausgeben?
Hmm, also für mich hat jede Session einen Key und einen Value. Der Key wäre in diesem Fall "username" und der Value wäre z.B. "Hans".
Wenn also die Session mit dem Key "username" nicht gesetzt wurde, soll sie gesetzt werden.
Das wäre einfach ein Key-Value-Paar. Mengen solcher Paare werden oft mit Hilfe einer Map verwaltet. Da eine Session nicht nur ein solches Paar besitzen kann, sondern beliebig viele, erhältst Du per getUserProperties() eben die Map (genauer: eine Referenz auf ein Objekt, das das Map-Interface implementiert) zurück, mit der die betreffende Session ihre Key-Value-Paare verwaltet.
Kann ich davon ausgehen, dass mir getUserProperties() NUR Sessions ausgibt oder beinhaltet sie auch andere Daten? Eigentlich müsste sie ja nur Sessions ausgeben, weil die Methode danach heisst get(). Wenn es nicht so wäre, müsste sie ja getSession() heissen oder so. Es sei denn alle Paare, welche einen Key & Value haben werden gleich behandelt. Kann ich die Methode irgendwie aufrufen, damit ich sehe was sie wirklich für Daten liefern könnte?
Unter anderem ist da die Funktion getUserProperties() beschrieben.
Und da steht dann genau beschrieben, was zurück gegeben wird ("an editable Map of application data.").
Und es wird auch Beschrieben, wozu diese Funktion dient:
"While the session is open, this method returns a Map that the developer may use to store application specific information relating to this session instance. The developer may retrieve information from this Map at any time between the opening of the session and during the onClose() method. But outside that time, any information stored using this Map may no longer be kept by the container. Web socket applications running on distributed implementations of the web container should make any application specific objects stored here java.io.Serializable, or the object may not be recreated after a failover."
Wenn Du da nur Sessions rein packst, dann hast Du wohl nur Sessions da drin. Aber da sehe ich erst einmal keinen wirklichen Sinn drin ...
Und wenn Du da einfach den key "username" mit einem String Wert hinterlegst, dann ist da genau der Wert hinterlegt.