所以我有这个小代码:
public class TestServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)
throws ServletException, IOException {
final ServletContext servletContext = getServletContext();
System.out.println(servletContext.getClass());
}
}
打印出来:
class org.apache.catalina.core.ApplicationContextFacade
所以ServletContext是一个接口,这意味着getServletContext()方法返回一个接口。那么Tomcat如何知道使用哪个Concrete类(在这种情况下是ApplicationContextFacade)?它是如何或何时决定的?
答案 0 :(得分:3)
Tomcat将在每个webapp的Context实例上创建,以便它可以知道哪个请求转到哪个servlet。我相信ApplicationContextFacade
是Tomcat在内部用来实现此目的的ServletContext
的实现。可能是了解Tomcat中的上下文如何有助于更好地理解这一点。 Check here for starters