我不确定如何在这里标题的标题,因为我不确定如何去寻找答案。Java中是否有请求上下文?
我有一个处理请求的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中(我目前正在学习它,在我开始学习java之后开始学习,但发现这非常方便,所以让我重新思考我是如何在java中进行的),例如,我可以存储当前项目像这样的线程:HttpContext.Current.Items.Add("myId", "123")。然后可以在其他函数中使用HttpContext,而不必传递对象。
是否有在Java中的方式来设置每个请求一些变量(或甚至设置MyUserObject稍后访问)而不经过对象通过作为参数?
如果这是一种常见的已经回答的问题随时给我指出正确的方向,因为我不知道如何句话吧。
2012-04-17
Two13
+0
我自由地编辑了你的标题。请验证它是否是一个好的 –
2012-04-17 18:48:51
+0
我只是明确地传递它,隐式状态和依赖关系对可维护性不利。像Spring这样的框架应该明确地帮助删除一些样板和混乱。 –
2012-04-17 18:48:54
+0
如果你理解我的问题,那么我相信你的标题编辑比我原来的标题更好:) –
2012-04-17 18:55:49