2016-05-19 10 views
1

Wir sind die Kater für unsere Web-Anwendung mit und für die Sitzungsverwaltung wir Http in javax.servlet.http.HttpSession verwendenHttp in tomcat

Dies ist, wie setzen wir die Session-ID und einige Benutzer in Httpsession-Attributen

HTTPSession session = request.getSession() 
session.setAttribute("sessionIdNo",sessionIdNo); 

So erhalten wir die Sitzungs-ID und einige Benutzerattribute, die wir im vorherigen HTTP-Aufruf gespeichert haben.

HTTPSitzung session = request.getSession(); Sitzung .getAttribute ("sessionIdNo");

Meine Frage ist

  1. Wie ihre möglich, dass von Browser im nächsten HTTP-Aufruf, können wir die Session Attribut in Server-Seite erhalten, die in vorherigen HTTP-Aufruf in Httpsession festgelegt ist.

    HINWEIS: Ich habe auch nicht in Cookies gespeichert, ich glaube, es wurde nicht von meinem Browser gesendet. Hat es eine Verbindung zu JSESSION_ID?

  2. Wenn ja meine zweite Frage ist, wie funktioniert diese HTTP-Sitzungsverwaltung in Desktop-Anwendungen ich meine, ohne Browser zu verwenden? Ich meine Wie benutze ich JESSION_ID hier für die Sitzungsverwaltung.

  3. Wenn nicht, was ist der andere Weg?

Antwort

1

HttpSession impliziert die Verwendung von, nun, HTTP. In Ihrem Browser wird der JSESSIONID-Cookie verwendet, um auf die Sitzung zu verweisen. Ein Benutzer kommt zum ersten Mal und ihnen wird eine neue Sitzungs-ID zugewiesen (request.getSession(). GetId()). Dies wird in den JSESSIONID-Cookie eingefügt und zurück an den Browser gesendet. Bei nachfolgenden Anfragen sendet der Browser den Cookie, der Tomcat mitteilt, welche Sitzung verwendet werden soll.

Wenn Sie eine Desktop-Anwendung erstellt haben, möchten Sie möglicherweise einen anderen Mechanismus verwenden. Aber Tomcat ist zum Teil ein HTTP-Server und das ist der "normale" Mechanismus. Eine Desktop-Anwendung könnte weiterhin mit Tomcat und webbasierten Diensten interagieren, aber ihre Benutzeroberfläche würde wahrscheinlich zum Beispiel in Java Swing gerendert werden.

EDIT

Sie Sitzungen mit nur ein wenig Code sehen können erstellt und zerstört zu werden:

import javax.servlet.annotation.WebListener; 
import javax.servlet.http.HttpSessionEvent; 
import javax.servlet.http.HttpSessionListener; 

@WebListener 
public class DemoSessionListener implements HttpSessionListener { 

    @Override 
    public void sessionCreated(HttpSessionEvent sessionEvent) { 
     System.out.println("session \"" + sessionEvent.getSession().getId() + 
          "\" created); 
     } 
    } 

    @Override 
    public void sessionDestroyed(HttpSessionEvent sessionEvent) { 
     System.out.println("session \"" + sessionEvent.getSession().getId() + 
          "\" destroyed); 
    } 
} 
+0

Wenn ich laufe es den HTTP-Aufruf mit curl Befehl noch in der Lage ist, die gleiche Http zu verwenden, in nächster Anruf. Wie ist es möglich? Wie meine HttpSession die gleiche Sitzung beim nächsten Anruf verwendet. Ich habe auch kein Eingabefeld in den Cookies übergeben. – Harry

+0

Wie sind Sie sicher, dass es dieselbe Sitzung ist? Es sieht so aus, als würde curl per curl standardmäßig nicht aktiviert, so dass das nicht richtig klingt. – stdunbar