Java req.getsession().getservletcontext()和getservletcontext()之间的差异

Java req.getsession().getservletcontext()和getservletcontext()之间的差异,java,servlets,Java,Servlets,我已经看到,您也可以直接调用getservletcontext(),也可以像下面这样req.getsession().getservletcontext() 两者之间有什么区别?我应该使用哪一种?是否有任何场景是我应该使用其中一个而不是另一个 顺便说一下,我正在使用web模块2.5 这两者的区别是什么 两者之间没有区别,它们是一体的 只有当代码位于扩展了HttpServlet的类中时,才可以直接调用方法getServletContext()。这是因为HttpServlet基类定义了这个方法(实际

我已经看到,您也可以直接调用getservletcontext(),也可以像下面这样req.getsession().getservletcontext()

两者之间有什么区别?我应该使用哪一种?是否有任何场景是我应该使用其中一个而不是另一个

顺便说一下,我正在使用web模块2.5

这两者的区别是什么

两者之间没有区别,它们是一体的

只有当代码位于扩展了
HttpServlet
的类中时,才可以直接调用方法
getServletContext()
。这是因为
HttpServlet
基类定义了这个方法(实际上是在
GenericServlet
类中,
HttpServlet
扩展的)

req.getSession()返回的
ServletContext
。getServletContext()
与上面返回的相同。
HttpSession
包含对该会话所属的
ServletContext`的引用

我应该用哪一个?是否有任何场景是我应该使用其中一个而不是另一个

只要代码在servlet类中,就可以使用任何东西,因为两者都可以调用

假设您从servlet调用自定义类中的一个方法,并将会话对象传递给它,以处理会话中的一些数据。此自定义类不扩展servlet。您需要在此自定义类中引用
ServletContext
。由于您有对会话的引用,因此可以使用方法
session.getServletContext()
访问ServletContext


希望这是清楚的。

会话变量只为一个浏览器保存,上下文变量可在一个会话中由所有浏览器使用


因此,如果用户只使用一个浏览器(大多数情况下都是这样),它们之间没有区别,但是如果你想在一个会话中使用不同的浏览器,最好使用上下文

我是一个noob..你能为我把你的答案细分一下吗,以便我能理解:(…..也许有一个例子,实际上我没有得到你说的“在HttpServlet类以外的地方使用”的部分。@Nav,我试图详细说明我的答案。请参阅编辑。