req.getsession()。getservletcontext()和getservletcontext()之间的区别

时间:2012-09-16 16:58:40

标签: java servlets

我已经看到你也可以直接调用getservletcontext(),也喜欢这个req.getsession()。getservletcontext()。

两者之间有什么区别,我应该使用哪一个?是否有任何基于我应该使用的场景而不是其他场景?

顺便说一句,我使用的是web模块2.5

2 个答案:

答案 0 :(得分:9)

  

两者之间有什么区别

两者之间没有区别,它们是同一个。

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

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

  我应该使用哪一个?是否有任何基于我应该使用的场景而不是其他场景?

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

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

希望这很清楚。

答案 1 :(得分:-1)

会话变量仅保存在一个浏览器中,上下文变量可供所有浏览器在一个会话中使用。

因此,如果用户仅使用一个浏览器(在大多数情况下),则它们之间没有区别,但如果您希望在一个会话中使用不同的浏览器,请更好地使用上下文