我已经看到您也可以直接调用 getservletcontext() ,也可以像这样 req.getsession().getservletcontext() 。
两者有什么区别,我应该使用哪一个?有没有我应该使用一种而不是另一种的情况?
顺便说一句,我正在使用 web 模块 2.5
两者有什么区别
两者没有区别,它们是一回事。
getServletContext()
只有当您的代码在扩展类中时,您才能直接调用的方法HttpServlet
。那是因为HttpServlet
基类定义了这个方法(实际上是在扩展的GenericServlet
类中)。HttpServlet
此会话所属的ServletContext
req.getSession().getServletContext() is same as the one returned above.
HttpSession ServletContext`返回。contains a reference to the
我应该使用哪一个?有没有我应该使用一种而不是另一种的情况?
只要您的代码在 servlet 类中,您就可以使用任何东西,因为两者都可以调用。
假设(假设)您从 servlet 调用自定义类中的方法,并将会话对象传递给它以处理会话中的某些数据。这个自定义类不扩展 servlet。您需要ServletContext
在这个自定义类中引用。由于您有对会话的引用,因此您可以使用方法访问 ServletContext session.getServletContext()
。
希望这很清楚。
Session变量只为一个浏览器保存,而Context变量可以在一个会话中被所有浏览器使用。
因此,如果用户只使用一种浏览器(在大多数情况下),它们之间没有区别,但如果您喜欢在一个会话中使用不同的浏览器,最好使用Context。