我已经看到,您也可以直接调用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。

希望这很清楚。

10-04 21:05