我已经看到,您也可以直接调用getservletcontext(),也可以像这样req.getsession()。getservletcontext()一样。
两者之间有什么区别,我应该使用哪一个?是否有任何我应该使用而不是另一种使用的方案?
顺便说一下,我正在使用Web模块2.5
最佳答案
两者之间没有区别,它们是相同的。
仅当您的代码在扩展getServletContext()
的类中时,才可以直接调用HttpServlet
方法。这是因为HttpServlet
基类已定义此方法(实际上在GenericServlet
扩展的HttpServlet
类中)。
此 session 所属的req.getSession()。getServletContext()ServletContext
HttpSession is same as the one returned above.
ServletContext返回的contains a reference to the
。
只要您的代码在servlet类中,就可以使用任何都可以调用的东西。
假设(假设)您从Servlet调用自定义类中的方法,然后将 session 对象传递给该方法以处理 session 中的某些数据。这个自定义类不会扩展servlet。您需要在此自定义类中对ServletContext
的引用。由于您具有对 session 的引用,因此可以使用session.getServletContext()
方法访问ServletContext。
希望这很清楚。