Wow, this has been quite a bit of work for a few chapters. You now can have users register and look at products, and you can allow them to add and remove those products from the shopping cart.
In this chapter, you learned how you can do complicated form processing using the Request object directly. You also learned how to handle changing more than one value at the same time and how to generate forms programmatically.
In addition, you used a session object to carry state between form submissions (specifically, the contents of the shopping cart). You also learned how a child window can be used to do form processing without the perils of accidental resubmission.
If you take a quick look at your FRD, it is looking ...