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