In this chapter, we have learned JSP: JavaServer Pages. We have looked at their syntax and discussed the meaning of their basic constructs. The point we have emphasized throughout is that they are construction material of outstanding flexibility and versatility that requires a conscious design effort in order to be put to good use. Two uses we have emphasized are: the main servlet of the application, and output template files. We strongly recommend against using JSP pages as containers for back-end code.
In terms of the Model-View-Controller pattern, think of JSP as presentation logic, ignorant (as much as possible) of the underlying model but carrying all of the view information and some of the controller. As a project grows, we suggest that the bean takes the role of control, the model is confined to the classes controlled by the bean, and JSP is purely view, including view of the controller.
One component of the design that is conspicuously absent from this chapter is XML. We have shown how a JSP file can be a valid XML file (and thus produced and validated by an XML editor), but the relationship between JSP and XML is much deeper than that, we believe. One major use of JSPs is to manage an associated JavaBean (or several beans). The beans themselves can serve as processors of incoming and outgoing streams of information. XML, as you know, is ideally suited for encoding streams of information, and Java has the best tools for processing XML. Putting the two together, it is natural to organize an application as a network of JSP pages and associated beans that produce and consume XML streams. The initial source of an XML stream may be a database or an email store or anything else, as long as it is XML. This is what we will do in the next chapter.