Java req.getsession().getservletcontext()和getservletcontext()之间的差异
我已经看到,您也可以直接调用getservletcontext(),也可以像下面这样req.getsession().getservletcontext() 两者之间有什么区别?我应该使用哪一种?是否有任何场景是我应该使用其中一个而不是另一个 顺便说一下,我正在使用web模块2.5 这两者的区别是什么 两者之间没有区别,它们是一体的 只有当代码位于扩展了Java req.getsession().getservletcontext()和getservletcontext()之间的差异,java,servlets,Java,Servlets,我已经看到,您也可以直接调用getservletcontext(),也可以像下面这样req.getsession().getservletcontext() 两者之间有什么区别?我应该使用哪一种?是否有任何场景是我应该使用其中一个而不是另一个 顺便说一下,我正在使用web模块2.5 这两者的区别是什么 两者之间没有区别,它们是一体的 只有当代码位于扩展了HttpServlet的类中时,才可以直接调用方法getServletContext()。这是因为HttpServlet基类定义了这个方法(实际
HttpServlet
的类中时,才可以直接调用方法getServletContext()
。这是因为HttpServlet
基类定义了这个方法(实际上是在GenericServlet
类中,HttpServlet
扩展的)
req.getSession()返回的ServletContext
。getServletContext()与上面返回的相同。
HttpSession包含对该会话所属的
ServletContext`的引用
我应该用哪一个?是否有任何场景是我应该使用其中一个而不是另一个
只要代码在servlet类中,就可以使用任何东西,因为两者都可以调用
假设您从servlet调用自定义类中的一个方法,并将会话对象传递给它,以处理会话中的一些数据。此自定义类不扩展servlet。您需要在此自定义类中引用ServletContext
。由于您有对会话的引用,因此可以使用方法session.getServletContext()
访问ServletContext
希望这是清楚的。会话变量只为一个浏览器保存,上下文变量可在一个会话中由所有浏览器使用
因此,如果用户只使用一个浏览器(大多数情况下都是这样),它们之间没有区别,但是如果你想在一个会话中使用不同的浏览器,最好使用上下文我是一个noob..你能为我把你的答案细分一下吗,以便我能理解:(…..也许有一个例子,实际上我没有得到你说的“在HttpServlet类以外的地方使用”的部分。@Nav,我试图详细说明我的答案。请参阅编辑。