Deel XVII: JSP-applicatiearchitectuur 1 Internetapplicaties Deel 17: JSP-applicatiearchitectuur Model 2 = MVC = Model View Controller
Deel XVII: JSP-applicatiearchitectuur2 Inhoud Onderhoud van JSP-code Voorbeeld zonder include Voorbeeld met include: Voorbeeld met include: Model 1 architecture Model 2 architecture: Model View Controller
Deel XVII: JSP-applicatiearchitectuur3 Voorbeeld zonder include Probeer de volgende pagina na te bootsen: (broncode te vinden op onze site)
Deel XVII: JSP-applicatiearchitectuur4 Voorbeeld zonder include
Deel XVII: JSP-applicatiearchitectuur5 Voorbeeld zonder include tabelconstructie: <table> 1e rij 1e kol 1e rij 2e kol 1e rij 1e kol 1e rij 2e kol 2e rij 1e kol 2e rij 2e kol 2e rij 1e kol 2e rij 2e kol
Deel XVII: JSP-applicatiearchitectuur6 Voorbeeld zonder include Breedte en hoogte van de tabel: Verticale plaatsing van rij: meerdere kolommen overspannen: jpg/gif tonen:
Deel XVII: JSP-applicatiearchitectuur7 Problemen bij het ‘onderhoud’ Met onderhoud (maintenance) bedoelen we Bug fixing Kleine aanpassingen Bij ons zou dit kunnen zijn: Vervanging van het logo Vervanging van de copyright-vermelding Op zich vormen deze aanpassingen geen probleem. Alleen, als er meerdere jsp-pagina’s met dit logo en deze copyright-vermelding zijn, dan moeten we al die pagina’s aanpassen. We willen dit maar één keer moeten doen.
Deel XVII: JSP-applicatiearchitectuur8 De oplossing: include N.B.: Include-mechanismen zijn al langer bekend in programmeertalen. Het is een primitieve manier om code op te roepen. In c-code verving de preprocessor (dus alvorens te compileren) de #include directives met code in een andere c-broncode-file. Syntax: De lijn hierboven wordt voor het omzetten van de jsp- pagina naar java-broncode (=naar servlet-broncode), in zijn geheel vervangen door de inhoud van copyright.jsp. Het is dus alsof de inhoud van copyright.jsp ge-copypaste wordt.
Deel XVII: JSP-applicatiearchitectuur9 Voorbeeld met include Laat ons dus in ons voorbeeld, de copyright-notice vervangen door een include directive. Het spreekt vanzelf dat u een copyright.jsp –pagina maakt met als inhoud het rode stuk in het ‘Voor:’-gedeelte. Voor: Copyright(c), 2004 SCVO-BIRM Copyright(c), 2004 SCVO-BIRM Na:
Deel XVII: JSP-applicatiearchitectuur10 Model 1 en Model 2 architecturen A Model 1 architecture consists of a Web browser directly accessing Web-tier JSP pages. The JSP pages access Web-tier JavaBeans that represent the application model, and the next view to display (JSP page, servlet, HTML page, and so on) is determined either by hyperlinks selected in the source document or by request parameters. A Model 1 application control is decentralized, because the current page being displayed determines the next page to display. In addition, each JSP page or servlet processes its own inputs (parameters from GET or POST). In some Model 1 architectures, choosing the next page to display occurs in scriptlet code, but this usage is considered poor form. (See the design guideline Section on page 89.) A Model 2 architecture introduces a controller servlet between the browser and the JSP pages or servlet content being delivered. The controller centralizes the logic for dispatching requests to the next view based on the request URL, input parameters, and application state. The controller also handles view selection, which decouples JSP pages and servlets from one another. Model 2 applications are easier to maintain and extend, because views do not refer to each other directly. The Model 2 controller servlet provides a single point of control for security and logging, and often encapsulates incoming data into a form usable by the back- end MVC model. For these reasons, the Model 2 architecture is recommended for most interactive applications.
Deel XVII: JSP-applicatiearchitectuur11 Model 1 De ene getoonde jsp-file beslist wat de volgende getoonde jsp-file is. Op die manier is de controle gedecentraliseerd. De verschillende jsp-bestanden moeten elkaar kennen. Verschillende jsp-bestanden kunnen java-beans aanroepen die het applicatiemodel (business classes) uitmaken. Of we nu rechtstreeks vanuit de de jsp-besanden de database aanroepen of via beans, maakt niks uit: het blijft model 1.
Deel XVII: JSP-applicatiearchitectuur12 Model 1 x.html y.jsp z.jsp url aanroep a.java b.java
Deel XVII: JSP-applicatiearchitectuur13 Van model 1 naar model 2 We zullen een voorbeeldje uitwerken. We beginnen vanaf model één en zetten dan om naar model twee.
Deel XVII: JSP-applicatiearchitectuur14 Model 1 Login.html
Deel XVII: JSP-applicatiearchitectuur15 Valideer.jsp: 2 verschijningsvormen
Deel XVII: JSP-applicatiearchitectuur16 Model 1 nadelen Elk jsp-bestand dat een ander oproept, moet die andere pagina kennen. N.B. In ons voobeeld was dat minder erg omdat alle controle al gecentraliseerd zat in 1 pagina: model1Valideer.jsp Presentatie en controle zijn gemengd: Dit bemoeilijkt de taakverdeling tussen grafische ontwerpers en programmeurs Dit maakt de jsp-pagina’s moeilijk leesbaar
Deel XVII: JSP-applicatiearchitectuur17 Bean (.java) Model 2 x.html y.jsp Servlet (.java) of jsp-file (.jsp) VIEW CONTROLLER MODEL bean (.java) bean-instantiatie En aanroepen
Deel XVII: JSP-applicatiearchitectuur18 Naar Model 2 Een goede kandidaat om om te zetten naar ‘controller’ is de Valideer.jsp. We willen dat die pagina alleen nog testen uitvoert en en aan de hand hiervan andere pagina’s oproept (zoals eerder op pag 15) FouteLogin.jsp bevat een foutboodschap Menu.jsp bevat de 2 menu-opties
Deel XVII: JSP-applicatiearchitectuur19 Naar Model 2 Wij hebben nog niet gezien hoe, afhankelijk van script-code, een andere pagina kan opgeroepen worden zonder dat de gebruiker iets doet. Dat gaat zo: en