when we execute this application index.xhtml page is translated into views. View is collection of UI components arranged paricular manner. for example our index.xhtml page turns into View

View Tree of index.xhtml page

UIViewRoot is Top level components add HtmlOutputHead and HtmlOutputBody. These 2 components translated in <head> and <body> tag in Render phase. In body component has input text field and command button components.

If browser request index.html first time the Phase 1 & 6 only executed all other phases are bypassed

Phase 1 : Create / Restore View
Every JSf page is create the view. the that view is cached for future use. for example index.html page is requested by browser then container search index.xhtml view tree. Above diagram is view tree of index.xhtml page.If found in cache the restore the view, otherwise create the view tree.

now user fill some details in index.xhtml the click some action the same page is requested to server now this time index.xhtml tree view is restored and run all remaining phases.

Phase 3: Apply values from User to View
if user sends some data like POST or GET form values, this phases apply this values to the Tree View like fooling diagram

Phase 4: Validate the values
This is optional phase. if any validations is mentioned then this phases is executed. otherwise it simply bypassed. for example in index.xhtml input text field we mentioned required=true its one of the validation. so if submit the form without filling values this phases reporting exception and forward to directly render phase. all other phaes are bypassed. if this phases execute without exception the phase 5 is executed

Phase 5: Fetch New View
In this phases is responsible for find the next view to render and displayed to user. for example our example in command button has action property to mentioned welcome value. in this phase find the welcome.xhtml page and gives to render phase. here we used implicit navigation its one of the features of JSF 2.0