In order to guarantee certain levels of QoS, a Web application needs to adapt itself to different execution contexts. However, because of the lack of coordination support in Web platforms, service providers respond to the challenge by simply providing multiple versions of a Web application, one for each context. We argue this top-down approach is neither efficient nor scalable: developing a context-specific application requires considerable effort and expertise while the ever-changing Internet never stops generating interesting contexts which can be exploited for better deployment. As an alternative, we propose a three-layer, bottomup approach to building context-aware Web applications. At the bottom layer, we characterize a context-specific Web application with a particular component distribution plan which provides details for composing individual objects. In the middle layer, recursively defined configurations provide a bridge which relates high-level context features to low-l...