Czy w Javie występuje kontekst żądania?
Nie mam pewności, jak dokładnie tu sformułować tytuł, i dlatego też nie jestem pewien, jak szukać odpowiedzi.
Mam silnik serwletów Java, który obsługuje żądania. Powiedzmy, że mamy żądanie doGet:
<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>
Teraz w DoSomething chcę mieć dostęp do tego użytkownika, który wykonał żądanie. Teraz robię to, tworząc obiekt java i przekazując go wszędzie tam, gdzie potrzebuję:
<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>
W ten sposób mam dostęp do instancji MyUserObj i może być dalej przekazywana w razie potrzeby.
To jest niedbałe. W asp.net MVC3 (obecnie się go uczę, zacząłem po tym, jak zacząłem uczyć się java, ale okazało się, że jest to naprawdę wygodne, więc sprawiłem, że ponownie zastanowiłem się, jak to robiłem w Javie). Mogę na przykład przechowywać elementy dla bieżącego wątek taki jak ten:HttpContext.Current.Items.Add("myId", "123")
. HttpContext
jest wtedy dostępny w innych funkcjach bez konieczności przechodzenia przez obiekt.
Czy istnieje sposób w Javie, aby ustawić niektóre zmienne na żądanie (lub nawet ustawićMyUserObject
dostęp później) bez przekazywania obiektu jako parametru?
Jeśli jest to wspólne pytanie, na które już udzielono odpowiedzi, nie krępuj się wskazać mi właściwego kierunku, ponieważ nie byłem pewien, jak to sformułować.