Questa politica sui cookie è stata aggiornata l'ultima volta il Giugno 5, 2025 e si applica ai cittadini e ai residenti permanenti legali dello Spazio Economico Europeo e della Svizzera.
1. Introduzione
Il nostro sito web, https://casapride.it (di seguito: "il sito web") utilizza i cookie e altre tecnologie correlate (per comodità tutte le tecnologie sono definite "cookie"). I cookie vengono anche inseriti da terze parti che abbiamo ingaggiato. Nel documento sottostante ti informiamo sull'uso dei cookie sul nostro sito web.
2. Cosa sono i cookie?
I cookie sono dei semplici file spediti assieme alle pagine di questo sito e salvati dal tuo browser sul disco rigido del tuo computer o altri dispositivi. Le informazioni raccolte in essi possono venire rispediti ai nostri server oppure ai server di terze parti durante la prossima visita.
3. Cosa sono gli script?
Uno script è un pezzo di codice usato per far funzionare correttamente ed interattivamente il nostro sito. Questo codice viene eseguito sui nostri server o sul tuo dispositivo.
4. Cos'è un web beacon?
Un web beacon (o pixel tag) è un piccolo, invisibile pezzo di testo o immagine su un sito che viene usato per monitorare il traffico di un sito web. Per fare questo, diversi dati su di te vengono conservati utilizzando dei web beacon.
5. Cookie
5.1 Cookie tecnici o funzionali
Alcuni cookie assicurano il corretto funzionamento del sito e che le tue preferenze rimangano valide. Piazzando cookie funzionali, rendiamo più facile per te visitare il nostro sito web. In questo modo non devi inserire ripetutamente le stesse informazioni quando visiti il nostro sito web, per esempio, l'oggetto rimane nel tuo carrello finché non hai pagato. Possiamo piazzare questi cookie senza il tuo consenso.
5.2 Cookie di marketing/tracciamento
I cookie di marketing/tracciamento sono cookie o qualsiasi altra forma di memorizzazione locale, utilizzati per creare profili utente per visualizzare pubblicità o per tracciare l'utente su questo sito web o su diversi siti web per scopi di marketing simili.
5.3 Social media
Sul nostro sito web abbiamo inserito contenuti di Instagram e Facebook per promuovere pagine web (ad es. "mi piace", "pin") o condividerle (ad es. "tweet") su social network come Instagram e Facebook. Questo contenuto è incorporato con codice derivato da Instagram e Facebook e inserisce cookie. Questo contenuto potrebbe memorizzare ed elaborare alcune informazioni per la pubblicità personalizzata.
Leggi l'informativa sulla privacy di questi social network (che possono cambiare regolarmente) per sapere cosa fanno con i tuoi dati (personali) che processano usando questi cookie. I dati ottenuti vengono anonimizzati quanto possibile. Instagram e Facebook si trovano negli Stati Uniti.
6. Cookie inseriti
Elementor
Statistiche (anonimo)
Utilizzo
Usiamo Elementor per creazione di contenuti. Leggi tutto
Quando visiti il sito web per la prima volta, noi mostreremo un popup con una spiegazione dei cookie. Appena clicchi su "Salva preferenze", dai il permesso a noi di usare le categorie di cookie e plugin come descritto in questa dichiarazione relativa ai popup e cookie. Puoi disabilitare i cookie attraverso il tuo browser, ma prendi in considerazione, che il nostro sito web potrebbe non funzionare più correttamente.
7.1 Gestisci le tue impostazioni di consenso
Hai caricato la Cookie Policy senza supporto javascript. Su AMP, puoi usare il pulsante di gestione del consenso in fondo alla pagina.
8. Abilitare/disabilitare e cancellazione dei cookie
Puoi usare il tuo browser per cancellare automaticamente o manualmente i cookie. È anche possibile specificare che determinati cookie non possono essere piazzati. Un'altra opzione è quella di modificare le impostazioni del tuo browser internet in modo da ricevere un messaggio ogni volta che viene inserito un cookie. Per ulteriori informazioni su queste opzioni, consultare le istruzioni nella sezione Guida del tuo browser.
Tieni presente che il nostro sito web potrebbe non funzionare correttamente se tutti i cookie sono disabilitati. Se cancelli i cookie nel vostro browser, essi verranno nuovamente inseriti dopo il consenso fornito quando visiterete nuovamente il nostro sito web.
9. I tuoi diritti in relazione ai dati personali
Hai i seguenti diritti relativi ai tuoi dati personali:
Hai il diritto di sapere quando i tuoi dati personali sono necessari, cosa succede ad essi, quanto a lungo verranno mantenuti.
Diritto di accesso: hai il diritto ad accedere ai tuoi dati personali dei quali siamo a conoscenza.
Diritto di rettifica: hai il diritto di completare, correggere, cancellare o bloccare i tuoi dati personali quando lo desideri.
Se ci darai il consenso per elaborare i tuoi dati, hai il diritto di revocare questo consenso e di eliminare i tuoi dati personali.
Diritto di trasferire i tuoi dati: hai il diritto di richiedere tutti i tuoi dati dal controllore e trasferirli tutti quanti ad un altro controllore.
Diritto di opposizione: hai il diritto di opporti al trattamento dei tuoi dati. Noi rispetteremo questa scelta, a meno che non ci siano delle basi valide per trattarli.
Per esercitare questi diritti, non esitate a contattarci. Si prega di fare riferimento ai dettagli di contatto in fondo a questa Cookie Policy. Se hai un reclamo su come gestiamo i tuoi dati, vorremmo sentirti, ma hai anche il diritto di presentare un reclamo all'autorità di vigilanza (l'Autorità per la Protezione dei Dati).
10. Dettagli di contatto
Per domande e/o commenti riguardo la Cookie Policy e questa dichiarazione, per favore contattaci usando i seguenti dati di contatto:
Associazione “Casa Pride” Viale Madonna dei Fiori, 108 - 12042 Bra (CN) Italia
Sito web: https://casapride.it
Email: info@ex.comcasapride.it Numero di telefono: +39 375 8070230
Questa politica sui cookie è stata sincronizzata con cookiedatabase.org il Luglio 9, 2025.
– html/css per il la pagina web
– javascript per la gestione delle rest lato client e la renderizzazione della pagina
– java per la gestione del backend e delle rest lato server
– mysql per la gestione dei dati su db
per la creazione del progetto uso spring una piattaforma che mi permette di avere un ambiente preimpostato che permette di niettare in odo effieciete le dipendenze e l’esposizione dei vari servizi
REST tramite l’annotazione @RestController, semplificando la creazione di end-point per la comunicazione front-end-backend
Per la connesione al db aggiungo la dipendenza MySQL Driver e SPING DATA JPA che mi semplifica, viste le tempistiche, l’accesso ai dati e la gestione delle query
Tipologia di progetto spring:
– Maven in linguaggio java
– SpeingBoot 3.5.3 con packaging WAR e java 17
Per l’apertura delle porte MYSQL e Tomcat userò XAMPP
Per testare le chiamte REST prima di intergrarle nel frontend farò uso di POSTMAN , in modo da validare LE RICHIESTE IN modo rapido e controllato
Credo di mantenere, in quanto ottimamle l’architettua a tre livelli
– Interface layer (controller) espone gli endpoint REST e gestisce lo scambio dai con il front end tramite DTO
– Business layer (service) Contiene le logiche applicative
– DATABAse layer (repository) accede ai dati tramite JPA collegato al Db Mysql
‘—————————————————————————————————–
PER PRIMA COSA CREO LA CONNESSIONE E IL MIO DATABASE biblioteca utilizzando il programma Dbeaver nella sua versione portable
Creo tabelle a mano anche se JPA mi consentirebbe di mapparle attraverso le entity del mio progetto Java, questo per non rischiare di sovrascrivere o modifcare colonne in corso d’opera (sempre in relazione alle tempistiche)
Prima Tabella book
id INT chiave primaria, autoincrement not null
title Varchar(100) NOT NULL
author Varchar 100 NOT NULL
publish_year Int NOT NULL
iduser INT null
Seconda Tabella user
id INT chiave primaria, autoincrement not null
firstname Varchar(100) NOT NULL
lastname Varchar 100 NOT NULL
PREDISPONDO L’ambiente java
‘—————————————————————-
Nota: Per ragioni di tempo, non sono stati inclusi i getter e setter, ma in un contesto reale verrebbero aggiunti per garantire una gestione corretta delle entità .
‘————————————————————-
DIR Controller – Espone gli endpoint REST al frontend
–> BookControlle.java – annotation @Entities – @autowired BookService @autowired UserService
DIR Dtos – Trasferisce dati tra client e server in modo sicuro
–> BookDto.java –> Proprietà + costruttore BookDto vuoto + costruttore BookDto parametri + + costruttore BookDto (Book)
–> BookRequestDto.java –> ProprietÃ
–> UserDto.java Proprietà + costruttore UserDto vuoto + costruttore UserDto parametri + + costruttore BoUserDtookDto (User)
–> UserRequestDto.java
DIR Entities – Mappano le tabelle del database
–> Book.java annotation @Entities contierne ha un campo User user @ManyToOne e @JoinColumn (iduser) che restituiesce uno user
—> User.java annotation @Entities annotation @OneToMany mappato su “user” che restituisce una lista di libri
DIR Repositories – Gestiscono l’accesso al database
–> BookRepository.java – public Interface extended Jpa Repository annotation @Repository –> opera sulla tabella book
–> UserRepository.java – public Interface extended Jpa Repository annotation @Repository–> opera sulla tabella libri
Creo l’index.html (/resource/static/) skin base html (uso bootstrap, linkato da cdn che conosco bene e uso abitualmente) e un /static/assets/css/custom.css per le personalizzazioni. Imposto già la navigazione per le varie pagine
Creo i file html che mi servono
– listBook.html
– addbook.html
Per ciascun file creo il file js (vuoto) per le xmlhhtprequest che dovrò effettuare
NB avrei preferito usare fetch (piu bello e moderno) ma il poco tempo mi fa optare per l’xmlhhtprequest che riesco a debaggare al momnto con piu facilità . E’ piu prolisso e verboso ma per quasto meno ostico da testare,
cosi come userò DOM classico (createElement, appendChild, ecc.) per la creazione dinamica dell’html piuttosto che innerHTML con template string oppure framework/librerie come React o Vue.
‘————————-PRIMO PUNTO LISTA libri
Html –>
Tabella con col di bootstrap
JS –>
onload–> GetBooks (end point “get_books”) fa richiesta GET al controller della lista libri, la riceve, la formatta GetListBooks() e la pubblica costruendo le righe in maniera dinamica MakeHtml()
backend
CController
@GetMapping sull’endpoint get-books → GetListBooks() riceve la richiesta, controlla la congruità dei dati e la restituisce al client dopo averla fatta elaborare al service.
Service
GetListBooks() → Chiede al repository, attraverso una funzione findAll() di JPA, una lista di entità Book.
Crea dall’entità una lista di DTO e la passa al controller.
‘————————-SECONDO PUNTO ADD book
Html (addbook.html) –>
Form con campi input per l’inserimento
Button che chiama la funzione Addbook nel js (addbook.js)
Div nascoste per messaggi di errore o conferma
JS
onload → rende invisibili le div di risposta.
AddBook() → assegna i valori degli input alle variabili, controlla i campi obbligatori,
crea l’oggetto book.
Chiama l’endpoint add-book con un POST, inviando al controller un JSON con l’oggetto.
Se il libro viene inserito correttamente, riceve una risposta positiva (Created: 201)
→ valorizza e rende visibile il messaggio di OK sull’HTML.
Se il libro non viene inserito, riceve un messaggio di errore (HttpServerError specifico)
→ rende visibile il messaggio di errore sull’HTML.
BACKEND
Controller
@PostMapping sull’endpoint add-book → AddBook()
→ risponde con una ResponseEntity per poter restituire valori diversi.
Riceve la richiesta annotata con @RequestBody in forma di BookRequestDto.
Controlla la congruità dei dati; se non rispettata, restituisce una BadRequest.
Crea un BookDto e lo passa al service per l’inserimento.
Nel blocco try-catch:
se la creazione va a buon fine → ritorna al client l’oggetto creato.
se fallisce → ritorna uno status Server Error con messaggio di errore.
Service
AddBook() → riceve il BookDto, lo trasforma in entità Book
e lo salva con save() del repository.
Restituisce il nuovo oggetto creato (in DTO).
‘————————-TERZO PUNTO lIBRO IN PRESTITO
Html (CHECKOUTBOOK.html) –>
Form con campi input per l’inserimento di nome e cognome
Select dove viene pubblicata la lista dei libri disponibili
button che chiama CheckOutBook()
Div nascoste per messaggi di errore o conferma
JS
onload → rende invisibili le div di risposta, chiama GetListAvaiableBook
GetListAvaiableBook() (end point “get-avaiable-books”) fa richiesta GET al controller della lista libri non in prestito (iduser=0 o null), la riceve, la formatta e la pubblica costruendo le righe in maniera dinamica le option della select(MakeSelectOption)
CheckOutBook() , setta e valorizza le variabili degli input, controlla la congruita dei dati, chiama l’endpoint checkout-book con un POST, inviando al controller un JSON con l’oggetto formato da (id del libro, nome e gognome dell’utente).
Se il libro viene datao in prestip correttamente, riceve una risposta positiva (Created: 201)
→ valorizza e rende visibile il messaggio di OK sull’HTML.
Se il libro non viene dato in prestito, riceve un messaggio di errore (HttpServerError specifico)
→ rende visibile il messaggio di errore sull’HTML.
BACKEND
Controller
@GetMapping sull’end-point get-avaiable-books
GetListAvaiableBook chiede al service una lista di libri con iduser 0 o null
ottiene una lista BookDto disponibili
@PostMapping sull’endpoint check-out-book → CheckOutBook()
→ risponde con una ResponseEntity per poter restituire valori diversi.
Riceve la richiesta annotata con @RequestBody in forma di BookRequestDto.
Controlla la congruità dei dati; se non rispettata, restituisce una BadRequest.
Chiama il service (GetBook) passandogliid del libro ottiente uno UserDto
se questo passaggio va a buon fine
Chiama il service (FindUserByName) passandogli nomne e cognome dell.utente e ottiente uno UserDto
Se questo passaggio va a buon fine
chiama di il service passandogli BookDto e UserDto ed ottiene il bookdto aggiornato con il nuovo iduser
** tutte queste chiamate aòl service avvengono dentro un try/catch
Service Bookservice
GetListAvaiableBook() –> restituisce una lista di BookDto disponibili interrogando il repository con una query nativa (iduser=0 or null)
GetBook() → Cerca il libro attraverso jpa findById()
Restituisce il nuovo oggetto trovato o creato (come UserDTO).
CheckOutBook(). riceve uno UserDto e un BookDto
converte i dto in entitÃ
Aggiorna il Book con il nuovo user
Lo ritrasforma in dto e lo restituisce al controller
Service UserService
GetUserByName() → Cerca l’utente interrogando il repository con una query nativa coi parametri @Param(“firstname”) String firstamane, @Param(“lastname”) String lastname
Se non lo trova lo crea