6

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

两者有什么区别,我应该使用哪一个?有没有我应该使用一种而不是另一种的情况?

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

4

2 回答 2

9

两者有什么区别

两者没有区别,它们是一回事。

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

此会话所属的ServletContextreq.getSession().getServletContext() is same as the one returned above.HttpSession ServletContext`返回。contains a reference to the

我应该使用哪一个?有没有我应该使用一种而不是另一种的情况?

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

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

希望这很清楚。

于 2012-09-16T17:04:11.237 回答
-1

Session变量只为一个浏览器保存,而Context变量可以在一个会话中被所有浏览器使用。

因此,如果用户只使用一种浏览器(在大多数情况下),它们之间没有区别,但如果您喜欢在一个会话中使用不同的浏览器,最好使用Context

于 2014-02-13T00:16:37.137 回答