A ServletContext represents one web application.
A context is the root of the web application. In a url like
http://domain 
ort/ctx, ctx is the context root of the application. The web application will usually be deployed as a war with the same name 'ctx' or in exploded directory format where the top level directory name is 'ctx'.
A
j2ee web container may host several such web-applications. Each web application may have several servlets, jsps and several other static resources associated with it. All resources live under the root folder that's the context in a manner dictated by the j2ee spec. The container on initialization assigns a context to each web application that's deployed within it (as a war file or in exploded directory format).
A Session exists per Context. Once a session is created for a Context, this session can be accessed and modified by all other resources (Servlets, Jsps) that belong to this Context. A Servlet would belong to that context by virtue of
1. being registered in that web application's web.xml and/or
2. Its class files located under the root folder of that context. (in the WEB-INF/classes directory under the root folder that represents one context)
The same hold true for jsps too though the location that they are stored and the way they are registered (optional) differ from Servlets.
Thanks,
Ram.