1) JSP scripting elements are very jsp translation to java class oriented.
2) JSP delcarations are class or instance variables
3) JSP scriptlet variables are local vars.
This is clear...if you look at compiles JSPs this is crystal clear.
JSTL action tags cannot access any JSP declaration or scriptlet variables unless those variables are placed into a scope and of course the default scope is page scope.
So, this means JSTL communicates to other JSTL elements only through scope.
The means by which variables are declared and removed from scope using only JSTL is with <c:set> or <c:remove>.
Is this conceptualization accurate?
I have more to add but, let's see how this flies...
Oh one more thing...looking through the java file for a scriptless JSP page which uses only JSTL, reveals that all of the manipulation of data occurs in the methods that were inserted into the file per the use of JSTL.
Each of these methods, seems to be very self contained and communicate only through the "scoping" mechanism.