(我不确定在此标题的确切表达方式,因此,我也不确定如何寻找答案。)>
我有一个处理请求的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
以供以后访问)而无需将对象作为参数传递?
((我不确定在此标题的确切表达方式,因此,我也不确定如何搜索答案。)我有一个处理请求的Java servlet引擎。说...
[servlet API中没有,但是您可以轻松地制作自己的。 (诸如spring-mvc之类的一些框架,struts提供了这样的功能)
您可以使用setAttribute
将对象附加到当前请求。该API主要用于内部路由,但是只要您为属性名称使用正确的名称空间,它也可以安全地用于您自己的目的。