Controller object that manages a single request cycle. A request cycle is one 'hit' on the web server. In the case of a Tapestry application, this will involve:
- Responding to the URL by finding an {@link IEngineService} object
- Determining the result page
- Renderring the result page
- Releasing any resources
Mixed in with this is:
- Exception handling
- Loading of pages and templates from resources
- Tracking changes to page properties, and restoring pages to prior states
- Pooling of page objects
A request cycle is broken up into two phases. The rewind phase is optional, as it tied to {@link org.apache.tapestry.link.ActionLink} or{@link org.apache.tapestry.form.Form} components. In the rewind phase,a previous page render is redone (discarding output) until a specific component of the page is reached. This rewinding ensures that the page is restored to the exact state it had when the URL for the request cycle was generated, taking into account the dynamic nature of the page ( {@link org.apache.tapestry.components.Foreach}, {@link org.apache.tapestry.components.Conditional}, etc.). Once this component is reached, it can notify its {@link IActionListener}. The listener has the ability to update the state of any pages and select a new result page.
Following the rewind phase is the render phase. During the render phase, a page is actually rendered and output sent to the client web browser.
@author Howard Lewis Ship
@version $Id: IRequestCycle.java 243791 2004-02-19 17:38:13Z hlship $