1. Serveis d'Acces a Dades
| Versió | Data | Notes |
|---|---|---|
| Versió 1.0 | Desembre 2022 | Versió inicial |
| Versió 2.0 | Setembre 2023 | Haetoas |
| Versió 1.0 | Octubre 2024 | Traduccions |
© Joan Gerard Camarena Estruch
- Aquests materials es basen en apunts d'anys anteriors creats per Joan Gerard Camarena i Jose Alfredo Murcia.
- Agraïments especials a Loren Diaz de Haro per compartir el seu material i exemples de codi.
1. Introducció. Serveis d'Accés a Dades
Un servlet és una aplicació que s'executa en un servidor, preparada per respondre a sol·licituds http. Més tard tenim JSP (Java Server Pages), que permeten combinar elements HTML/XML amb fragments de codi Java per generar contingut dinàmicament. Hem de llançar un servidor d'aplicacions i afegir l'aplicació per executar-la i servir-la com una altra pàgina.
Podem utilitzar Servlets per escriure una aplicació web, però hi ha molts detalls intrínsecs a controlar: validació, REST, cos de la sol·licitud/resposta per a JSON, vinculació de formularis, etc. Això implica que gran part del nostre codi es dedica a controlar les capes inferiors de comunicació.
Amb el framework Spring, realment utilitzem servlets, però allibera el programador d'aquesta tasca pesada, gestionant-la automàticament. Això permet al programador centrar-se en la lògica de l'aplicació, sense haver de gestionar els nivells inferiors de comunicacions. A més, Spring Boot es defineix com un accelerador de Spring, permetent-nos indicar una sèrie de convencions (comportaments) que realitzen tasques pesades de configuració d'arxius per a nosaltres. Finalment, Spring Boot incorpora un servidor web integrat (normalment Tomcat).
El terme framework o si intentem forçar la seva traducció al català Marc de treball ens proporciona un conjunt de regles i eines dissenyades per augmentar la velocitat de desenvolupament d'aplicacions.
2. MVC
El Model Vista Controlador (MVC) és una arquitectura per al desenvolupament d'aplicacions que separa les dades, la interfície i la lògica de control en capes.
El funcionament és el següent:
- L'usuari està utilitzant l'aplicació client (normalment un navegador o client), i fa una sol·licitud a través del protocol http, també coneguda com una HTTP_REQUEST. Aquestes sol·licituds són rebudes pel mòdul controlador. El controlador gestiona una llista d'operacions o esdeveniments que pot processar, determinats pel seu propi protocol.
- En el cas d'una sol·licitud que demana una consulta o modificació de les dades, passem els paràmetres proporcionats en la sol·licitud a la capa del model. Aquesta capa accedeix a les dades, realitzant els passos 3 i 4 a través d'operacions del SGBD. El Model ara està en condicions de donar una resposta.
- Consultar la base de dades.
- Recuperació de la consulta de la base de dades.
- El model transfereix el conjunt de resultats obtinguts a la vista.
- La vista és responsable de rebre les dades i presentar-les o formatar-les adequadament.
- El controlador retorna la presentació generada per la vista (que normalment serà HTML dinàmic) a l'aplicació client, a través de la sol·licitud HTTP_RESPONSE.
3. REST
El model REST (Representational State Transfer) ens permet proporcionar al nostre servidor un servei per recuperar i manipular dades fàcilment al servidor. En aquest model, la part de la vista es delega al client, deixant el controlador i el model al servidor. En aquest model, destacarem entre altres:
- El protocol segueix el model client/servidor sense estat, igual que http, una sol·licitud només respondrà segons la informació rebuda en la mateixa sol·licitud, sense tenir en compte totes les anteriors.
- Suport d'operacions CRUD, a través de les especificacions http equivalents: GET (consulta), POST (crear), PUT (modificar) i DELETE (eliminar).
- Disposició del model HATEOAS (Hypermedia As Engine Of The Application State). Aquest principi permet incloure hipervincles com a recursos en les respostes.
En MVC, i de manera simplificada, seria eliminar la capa de la vista i retornar les dades processades pel model. Normalment els servidors REST retornen dades en format JSON.