Skip to content

21. Conclusie

Laten we nog eens samenvatten wat in dit document is behandeld:

  • de basisprincipes van webprogrammeren in Java met servlets en pagina's JSP
  • een inleiding tot de architectuur MVC
  • een inleiding tot de 3-tier-architectuur
  • een inleiding tot Spring IoC
  • voorbeelden ter illustratie van deze punten

Wij denken dat de lezer die tot hier is gekomen, klaar is om zelf zijn eigen webapplicaties in Java te ontwikkelen. Hij is ook klaar om andere ontwikkelingsmethoden aan te pakken die vergelijkbaar zijn met die welke in dit document zijn behandeld. Laten we de architectuur van de hier ontwikkelde webapplicaties nog eens op een rijtje zetten:

Voor eenvoudige applicaties is deze architectuur voldoende. Wanneer men meerdere applicaties van dit type heeft geschreven, merkt men dat de servlets van twee verschillende applicaties:

  1. hetzelfde mechanisme gebruiken om te bepalen welke methode [doAction] moet worden uitgevoerd om de door de gebruiker gevraagde actie te verwerken
  2. in feite alleen verschillen in de inhoud van deze methoden [doAction]

De verleiding is dan groot om:

  • de verwerking (1) onder te brengen in een generieke servlet die niet weet welke applicatie haar gebruikt
  • de verwerking (2) te delegeren aan externe klassen, aangezien de generieke servlet niet weet in welke applicatie deze wordt gebruikt
  • de koppeling te leggen tussen de door de gebruiker aangevraagde actie en de klasse die deze moet verwerken met behulp van een configuratiebestand

Er zijn hulpmiddelen, vaak „frameworks“ genoemd, in het leven geroepen om ontwikkelaars de bovengenoemde mogelijkheden te bieden. De oudste en waarschijnlijk bekendste daarvan is Struts (http://struts.apache.org/). Jakarta Struts is een project van de Apache Software Foundation (www.apache.org). Dit framework wordt beschreven in (http://tahe.developpez.com/java/struts/).

Het recenter verschenen Spring-framework (http://www.springframework.org/) biedt vergelijkbare mogelijkheden als Struts. Het gaat in feite om de Spring-module MVC. Het gebruik ervan is in verschillende artikelen beschreven (http://tahe.developpez.com/java/springmvc-part1/).

Spring beperkt zich niet tot het concept MVC van de [web]-laag van een 3-tier-applicatie. Het is zelfs nuttig in applicaties buiten het web.

Zo hebben we onze cursus afgesloten met het implementeren van een MVC-architectuur in een [web, metier, dao]-drielagige architectuur aan de hand van een eenvoudig voorbeeld van het beheer van een personenlijst.

In versie 1 van de applicatie werd de lijst met personen in het geheugen bewaard en verdween deze bij het afsluiten van de webapplicatie. In de andere versies wordt de lijst met personen in een databasetabel bewaard. We hebben vier verschillende SGBD gebruikt: Firebird, Postgres, MySQL en SQL Server Express.

Dankzij Spring IoC kon de [web]-laag van versie 1 volledig behouden blijven in de volgende versies. Zo hebben we aangetoond dat het mogelijk is om ntier-architecturen te bouwen met onafhankelijke lagen.

Met de versies die gebruikmaken van een database hebben we de bijdrage van Spring aan de opbouw van de lagen [dao] en [service] aangetoond. Dankzij de integratie van Spring met iBATIS konden we vier versies bouwen die alleen in hun configuratiebestanden van elkaar verschillen. Dezelfde klasse [DaoImplCommon] is gebruikt om de laag [dao] in de vier versies te implementeren. Om een specifiek probleem met Firebird SGBD op te lossen, moesten we deze klasse afleiden, maar niet wijzigen.

Ten slotte hebben we laten zien hoe we met Spring transacties op declaratieve wijze kunnen beheren op het niveau van de [service]-laag.

De lezer wordt aangemoedigd om alle functionaliteiten van dit product te ontdekken.