(我不确定如何在这里准确地表达标题,因此我也不确定如何去寻找答案。)
我有一个处理请求的 Java servlet 引擎。假设我们有一个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
稍后访问)?