(Я не уверен, как именно сформулировать заголовок здесь, и поэтому я не совсем уверен, как искать ответ.)
У меня есть движок сервлетов 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
для доступа позже), не передавая объект в качестве параметра?