If you feel passing the entire controller of your visualforce page is a bit too heavy-weighted, or if you need a generic component that can be reused across pages, you can also use a dedicated class to carry the data that you need to transport back and forth between page and component.
I.e. create a 'data' class like this:
public with sharing class ComponentData {
public String theInput {get;set;}
public String theOutput {get;set;}
}
In your page controller, instantiate the class:
public ComponentData theData {get;set;}
On your component, use the class as an attribute:
<apex:component controller="CompController">
<apex:attribute type="ComponentData" name="compData" required="true" description="The data going in and out" assignTo="{!cData}"/>
<apex:outputPanel id="banManagerPanel">
<apex:inputText value="{!cData.input}">
<apex:actionSupport event="onchange" action="{!updateData}"/>
</apex:inputText>
</apex:outputPanel>
</apex:component>
On the component controller you can perform whatever logic that needs to be done:
public with sharing class ComponentController {
public ComponentData cData {get;set;}
public void updateData(){
cData.theOutput = cData.theInput + ' with something extra';
}
}
And finally, on the VF page pass the instantiated data-class to the component:
<c:theComponent compData="{!theData}"/>
<apex:outputText value="{!theData.theOutput}" />
The theData on the VF page will get the updated value that was modified by the component controller, after the button inside the component is pressed.