35 Stimmen

Wie kann ich eine Java-Sitzung manuell mit einer JSESSIONID laden?

Ich habe ein Servlet, das ein mehrteiliges Formular Post verarbeitet. Der Beitrag wird von einer in die Seite eingebetteten Flash-Datei-Upload-Komponente erstellt. In einigen Browsern enthält der von Flash erzeugte POST keine JSESSIONID, was es mir unmöglich macht, bestimmte Informationen aus der Sitzung während des Posts zu laden.

Die Flash-Upload-Komponente enthält Cookie- und Sitzungsinformationen in einem speziellen Formularfeld. Mit diesem Formularfeld kann ich den JSESSIONID-Wert tatsächlich abrufen. Das Problem ist, dass ich nicht weiß, wie ich diesen JSESSIONID-Wert verwenden kann, um diese spezielle Sitzung manuell zu laden.

Bearbeiten - Auf der Grundlage der Lösung von ChssPly76 habe ich folgendes erstellt HttpSessionListener Umsetzung:

    @Override
    public void sessionCreated(final HttpSessionEvent se) {
        final HttpSession session = se.getSession();
        final ServletContext context = session.getServletContext();
        context.setAttribute(session.getId(), session);
    }

    @Override
    public void sessionDestroyed(final HttpSessionEvent se) {
        final HttpSession session = se.getSession();
        final ServletContext context = session.getServletContext();
        context.removeAttribute(session.getId());
    }

Das fügt alle Sitzungen zum ServletContext als Attribute, die durch ihre eindeutigen IDs zugeordnet werden. Ich könnte stattdessen eine Karte der Sitzungen in den Kontext einfügen, aber das erscheint mir überflüssig. Bitte teilen Sie mir Ihre Meinung zu dieser Entscheidung mit. Als nächstes füge ich die folgende Methode zu meinem Servlet hinzu, um die Sitzung nach der ID aufzulösen:

    private HttpSession getSession(final String sessionId) {
        final ServletContext context = getServletContext();
        final HttpSession session = (HttpSession) context.getAttribute(sessionId);
        return session;
    }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X