I want to implement, using JSPs not servlets, following tree structure for transaction entry.

1 (Mandatory)
 1.1 (Mandatory)
 1.2 (Optional)
2 (Mandatory)
 2.1 (Mandatory)
 2.2 (Optional)
 2.3 (Mandatory)
  2.3.1 (Mandatory)
3 (Optional)

Brackets indicate whether the step is mandatory or optional. For a mandatory step, user has to enter some data on that screen. For an optional step, user may or may not enter the data. In both the cases, once the user moves on to the next screen, the data is submitted and stored in the database. And when user navigates from any step to any other step, he/she should see the previously entered data. However, the transaction is not active till user CONFIRMS the entire transaction.
1. How to implement the above navigation in most user friendly manner??
2. Where (on which screen) should the user be allowed to confirm??

I'll appreciate if someone can give me the approach to the above problems?