“contiene una componente del nome che indica un ruolo o una posizione specifici a livello sociale, come nel caso di titoli ufficiali o grado
6.2 La struttura MVC
L’applicazione web si basa sull’utilizzo delle logiche del modello MVC, ovvero Model
View Controller, che separa concettualmente le applicazioni in:
● gestione dei dati e delle logiche interne;
● presentazione delle elaborazioni ottenute dai dati all’utente;
● l’infrastruttura che permette la comunicazione tra le due parti precedenti.
Viene ottenuta così una separazione fra la logica applicativa, di cui si occupano il controller e il model, e l'interfaccia utente della quale si occupa la parte view.
In questo modo è possibile fare una chiara distinzione tra oggetti di dominio che modellano il mondo reale e gli oggetti utilizzati per presentare gli elementi che sono visibili sullo schermo.
Nello specifico il controller riceve i comandi dall’utente mentre il model fornisce i metodi per accedere ai dati . 61
All’interno della parte model viene operata una ulteriore suddivisione delle classi tramite l’utilizzo dei DAO, Data Access Object . 62
Questo strato implementa le operazioni di CRUD, così chiamate perché sono le principali operazioni compiute sul database (Create, Read, Update, Delete ). 63
Per permettere alla parte del model e del controller di comunicare correttamente è stato necessario implementare uno strato anch’esso tipico in questa struttura: lo strato del service. Questa parte viene utilizzata per richiamare i metodi del DAO, coordinarli e utilizzarli nella parte del controller.
61 GRAIG WALLS, Spring in Action, Shelter Island, Manning Publications, 2015, cap. 5.1. 62Ibidem, cap. 10.2.
Tesi Magistrale di Teresa Meini
L’applicazione si connette al database attraverso le API JDBC ( Java DataBase
Connectivity ) del linguaggio Java e i relativi driver. Per accedere basta fornire i nomi64 giusti per avviare la connessione (indirizzo per raggiungere il database, utente, password, nome della tabella, colonna, eccetera).
Per sfruttare al meglio la API JDBC viene utilizzata la classe JdbcTemplate , a quale 65 permette a scrivere meno codice e aiuta a evitare gli errori più comuni.
Per far girare l'applicazione web è stato sfruttato il servlet container Tomcat, una piattaforma software per l'esecuzione di applicazioni Web sviluppate in linguaggio Java. Tomcat implementa il supporto alle pagine JSP, JavaServer Pages , che servono66
a presentare dinamicamente i risultati ottenuti in formato HTML a seconda delle diverse richieste dall’utente.
figura 6.2.1
Tutto ciò è stato realizzato grazie al framework open source Spring, che è specializzato per la creazione di applicazioni di tipo J2EE , aiutando a ridurre la complessità di 67 sviluppo di progetti simili grazie all'uso di pattern di programmazione semplici e potenti.
64 GRAIG WALLS, Spring in Action, Shelter Island, Manning Publications, 2015, cap. 10.1. 65Ibidem, cap. 1.1.4.
66 GRAIG WALLS, Spring in Action, Shelter Island, Manning Publications, 2015, Part 2. 67Ibidem, Part 1.
Tesi Magistrale di Teresa Meini
Utilizzando Spring (o meglio, come verrà ricordato successivamente, Spring Boot, framework che facilita ulteriormente la creazione dei progetti basati su Spring ) sono 68
stati ottenuti dei risultati soddisfacenti sfruttando delle librerie consone.
Spring funziona tramite l’iniezione di dipendenze, tecnica chiamata Dependency
Injection (DI) . 69
La DI è un tipo di IoC ( Inversion of Control ) che serve a minimizzare il grado di 70 interdipendenza tra i vari moduli e ne massimizza la riusabilità.
Questi meccanismi permettono di iniettare classi direttamente dentro altre classi , in 71 maniera tale da gestirle in maniera indipendente le une dalle altre e senza bisogno di inizializzarle; tutto questo è gestito da Spring senza bisogno di interventi diretti.
6.2.1 Perché utilizzare questa struttura?
MVC è una tipologia di struttura già ben collaudata e ampiamente utilizzata nella creazione di applicazioni web: esistono vari tipi di strutture simili e derivate da questa 72
, ma la scelta della struttura da utilizzare va compiuta basandosi principalmente sui problemi da risolvere e sul tipo di applicazione da sviluppare.
Per creare l’applicazione in maniera funzionale era necessaria una divisione ordinata e precisa delle parti in questione, divisione che non doveva essere eccessiva per evitare problemi di prestazioni . 73
La scelta della struttura MVC è quindi risultata ottimale perché distingue chiaramente tra le parti prese in causa e i loro ruoli all’interno di un progetto
6.2.2 Come è stato creato il progetto
Spring Boot permette la creazione di progetti di tipo Spring in maniera facile e veloce.
68 GRAIG WALLS, Spring Boot in Action, Shelter Island, Manning Publications, 2016, cap. 1. 69 GRAIG WALLS, Spring Boot in Action, Shelter Island, Manning Publications, 2016, cap. 1. 70 Vedi significato in: https://en.wikipedia.org/wiki/Inversion_of_control.
71Ibidem, cap. 1.4.2.
72 Collegamento web per approfondire i vari design pattern che è possibile utilizzare: http://www.infoworld.com/article/2926003/microsoft-net/exploring-the-mvc-mvp-and-mvvm-design-patt erns.html.
Tesi Magistrale di Teresa Meini
Attraverso uno strumento online per generare progetti permette di scegliere le librerie74 più adatte alla creazione del progetto che è inteso realizzare; dentro di esso vengono inseriti gli strumenti per configurare l’applicazione in maniera automatica e senza il bisogno di scrivere documenti di configurazione in linguaggio XML da parte del programmatore.
Epidoc-Creator utilizza la tecnologia Maven , un sistema che permette di gestire la 75 costruzione automatica di un progetto Java e le librerie da cui esso dipende.
Maven si basa sull’utilizzo di un documento chiamato pom.xml, dove vengono descritte le librerie necessarie a descrivere un corretto funzionamento del progetto e i passi necessari per compilarlo ed esportarlo in formato pacchetto per il successivo deploy sull'application server.
In questo caso il documento pom.xml viene automaticamente creato dal generatore di progetti di Spring Boot; è possibile ritrovare al suo interno le librerie aggiunte tramite le scelte effettuate durante la generazione via interfaccia web, ovvero JDBC, Web, PostgreSQL e Security.
Lo scopo di queste librerie è dare la possibilità di creare degli oggetti Java e gli oggetti da cui essi a loro volta dipendono per utilizzarli all’interno del progetto.
Il punto focale di Spring, di conseguenza anche di Spring Boot, è l’utilizzo delle annotazioni , meccanismi che permettono di iniettare parti di codice o dichiarare76 l’utilizzo di una classe all’interno delle altre classi, impedendo quindi di ripetere codice ad oltranza.
Quella che viene utilizzata maggiormente è @Autowired: essa è usata per configurare l’iniezione di dipendenza in Spring ed è associata a un metodo setter, o a un campo o a un costruttore di una classe; in pratica è l’annotazione che rappresenta il cuore del concetto DI.
74 Collegamento web: https://start.spring.io/.
75 Spiegazione di cosa è maven all’interno del libro online “Maven: The Complete Reference”: http://books.sonatype.com/mvnref-book/reference/introduction-sect-whatIsMaven.html.
Tesi Magistrale di Teresa Meini