I usually associate frameworks with "inversion of control" or IoC. With no framework you might write code that controls a sequence of steps from beginning to end. A framework might sequence the work, perform some generic steps itself and call you to perform application specific steps. You'll often see this done through abstract classes:
This is also known as The Hollywood Method or "don't call us, we'll call you" because you wait for the framework to invoke your methods. If you Google for "inversion of control" you'll find it mixed in with "dependency injection" which is a different thing. They can be used together or separately but don't let them confuse you.
IoC isn't the only way to spot a framework and abstract classes are not the only way to make do IoC happen, but they often go together.
You mentioned
Struts in the subject line. Can you see where Struts takes control of the process and calls you to do parts of the work?
[ March 15, 2007: Message edited by: Stan James ]