何时/如何为Tomcat选择ServletContext接口的具体类?

时间:2014-04-30 18:11:00

标签: java tomcat

所以我有这个小代码:

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)?它是如何或何时决定的?

1 个答案:

答案 0 :(得分:3)

Tomcat将在每个webapp的Context实例上创建,以便它可以知道哪个请求转到哪个servlet。我相信ApplicationContextFacade是Tomcat在内部用来实现此目的的ServletContext的实现。可能是了解Tomcat中的上下文如何有助于更好地理解这一点。 Check here for starters