Gibt es in Java einen Anforderungskontext?

Ich weiß nicht genau, wie ich den Titel hier formulieren soll, und deswegen weiß ich auch nicht so recht, wie ich nach der Antwort suchen soll.

Ich habe eine Java-Servlet-Engine, die Anfragen bearbeitet. Nehmen wir an, wir haben eine doGet-Anfrage:

<code>public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //set up user data

    //do whatever the user requested
    SomeClass c = new SomeClass();
    c.doSomething();
}
</code>

Jetzt möchte ich in doSomething darauf zugreifen können, welcher Benutzer die Anfrage gestellt hat. Im Moment mache ich das, indem ich ein Java-Objekt erstelle und es dort weitergebe, wo ich es brauche:

<code>public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //set up user data
    MyUserObj userObj = new MyUserObj();
    userObj.setId('123');

    //do whatever the user requested
    SomeClass c = new SomeClass(userObj);
    c.doSomething();
}
</code>

Auf diese Weise habe ich Zugriff auf die Instanz von MyUserObj, die bei Bedarf weitergegeben werden kann.

Das fühlt sich schlampig an. In asp.net MVC3 (ich lerne es gerade, nachdem ich angefangen habe, Java zu lernen, fand es aber sehr praktisch, so dass ich überlegte, wie ich es in Java gemacht habe) kann ich zum Beispiel Objekte für den aktuellen Tag speichern Faden wie folgt:HttpContext.Current.Items.Add("myId", "123"). HttpContext ist dann in anderen Funktionen verfügbar, ohne dass ich ein Objekt herumreichen muss.

Gibt es in Java eine Möglichkeit, einige Variablen pro Anfrage zu setzen (oder sogar dieMyUserObject um später darauf zuzugreifen) ohne das Objekt als Parameter durchzuleiten?

Wenn dies eine häufig gestellte, bereits beantwortete Frage ist, zögern Sie nicht, mich in die richtige Richtung zu weisen, da ich mir nicht sicher war, wie ich sie ausdrücken sollte.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage