Decoupling web application concerns through weaving operations