(Я не уверен, как именно сформулировать заголовок здесь, и поэтому я не совсем уверен, как искать ответ.)
У меня есть движок сервлетов Java, который обрабатывает запросы. Скажем, у нас есть запрос doGet():
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();
}
Теперь в doSomething() я хочу получить доступ к тому, какой пользователь сделал запрос. Сейчас я делаю это, создавая Java-объект внутри метода и передавая его туда, где он мне нужен:
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();
}
Благодаря этому у меня есть доступ к экземпляру MyUserObj, и он может в дальнейшем передаваться в приложении по мере необходимости.
Я знаю, что в ASP.NET MVC3 я могу добиться этого, сохраняя элементы/атрибуты для текущего потока, например: HttpContext.Current.Items.Add("myId", "123"). HttpContext затем становится доступным в других функциях без явного обхода объекта.
Есть ли способ в Java, чтобы установить некоторые переменные для запроса (или даже установить MyUserObject для доступа позже), не передавая объект в качестве параметра?