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