CREAZIONE DELLA CLASSE CONTROLLER ARTICOLI

spring

Il controller gestisce le richieste che arrivano al Dispacher Servlet. Creiamo una nuova classe ArticoliController.java, che gestirà tutte le chiamate che riguardano gli articoli. Inseriamo la notazione @Controller fondamentale per l’IOC e per il Dispacher Servlet che quando andrà a cercare gli opportuni controller, saprà che questa è una classe Controller.

Schema Web App

LA NOTAZIONE @REQUESTMAPPING

La notazione @RequestMapping(“/articoli”) sta ad indicare che tutte le chiamate che riguarderanno gli articoli dovranno avere nell’URL la barra / seguita dalla parola articoli. Vediamo il codice o meglio l’overload di uno dei metodi di selezione.

Selezione Articoli

Il metodo GetArticoloByFilter ha tre parametri in input, la notazione @ModelAttribute(“<<nome>>”) seguita dalla classe di dominio Articoli, il Model e HttpServletRequest. Vediamo di spiegare questi tre parametri. @ModelAttribute si riferisce a una proprietà dell’oggetto Model (la M in MVC). Ti mostro un estratto della pagina JSP articoli per farti capire meglio questo primo parametro.

Form

L’ATTRIBUTO PATH

Come puoi vedere, nel form nell’attributo modelAttribute è stato riportato lo stesso valore indicato nella notazione @ModelAttribute. Il concetto è questo: tramite un campo di input del form e l’attributo path applicato a un campo della classe di dominio Articoli (l’attributo filter) si fa il binding tra la proprietà filter della classe Articoli e il campo di input. Nel mio caso questo mi è servito per far passare il contenuto digitato nel campo di input di tipo text usato come filtro, al controller. Infatti nel getter dell’attributo filter nel controller posso recuperare ciò che l’utente ha digitato nel filtro di ricerca della pagina JSP articoli e passare tale valore alla Store Procedure che farà il resto del lavoro.

IL MODEL

Il secondo parametro è il Model, e serve grazie al metodo addAttribute ad aggiungere informazioni al modello stesso che poi verranno lette e formattate nella pagina JSP articoli. HttpServletRequest inutilizzato serve per recuperare eventuali campi del form della view articoli su cui non è stato fatto il Binding con path. Il resto del codice è commentato passo dopo passo.

CREAZIONE DELLA VISTA JSP ARTICOLI

Per prima cosa andiamo nel file XML di configurazione del tiles e aggiungiamo la vista articoli. Ripeto che è fondamentale che il name che assegniamo nel file XML sia lo stesso restituito dalla classe Controller, in questo caso articoli.

Tiles

Creiamo all’interno della cartella view la pagina JSP articoli.

JSP articoli

Come vedi abbiamo costruito una tabella avente un’intestazione, (tag th) e utilizzato un forEach per popolarla con il contenuto restituito dal controller. Per quanto riguarda il dettaglio di ogni articolo lo vedremo in seguito. Nota il fatto che quando vogliamo accedere al modello mettiamo un $ davanti, cosicché la notazione ${Articoli} ,memorizzato poi nella variabile articolo, rappresenta il recordset valorizzato nel Controller.

INTRODUZIONE ALLA NOTAZIONE @REQUESTPARAM DEL CONTROLLER

Vedremo come questa notazione influisce sull’URL della richiesta http. Introduciamo un metodo avente lo stesso nome del precedente e che prende in input tre parametri. Ti riporto il frammento di codice.

Request Param

Il parametro IdRep indica il reparto, la categoria merceologica di riferimento del nostro articolo. Alla collezione che abbiamo ricavato con filter, applicheremo un ulteriore filtro utilizzando le lambda. Prima di applicare le lambda occorre usare l’istruzione stream().

PASSARE I VALORI TRA VIEW E CONTROLLER CON LA NOTAZIONE @REQUESTPARAM

Per passare ad esempio il parametro filter basta che nella pagina JSP allestiamo un form con un campo di input di tipo text avente come name il nome del parametro, cioè filter. Al submit del form il valore digitato nel campo di input verrà inserito nel query string e recuperato dal controller nel parametro Filter. IDFAMASS è l’ID della categoria alimentare. Il resto del codice rimane invariato rispetto al metodo visto precedentemente. Con la notazione @RequestParam i filtri vengono applicati dopo il punto interrogativo.

USO DELLA NOTAZIONE @DATETIMEFORMAT NEL CONTROLLER.

Creiamo un nuovo metodo che ci permetterà di filtrare i nostri articoli in base ad un certo periodo di tempo. Utilizzeremo la data di creazione. Ancora una volta per filtrare i dati in base alle date utilizzeremo le lambda, utilizzando la solita Store Procedure di selezione articoli.

Filtro per data

CREAZIONE DELLA PAGINA DETTAGLIO ARTICOLO

Il dettaglio di ogni articolo è accessibile da ogni riga della griglia dei prodotti dalla pagina JSP articoli. Vediamo prima di tutto il controller. Ti riporto il codice.

ControllerDettagio

Al controller viene passato il Codice Articolo, la ricerca deve produrre il dettaglio di un singolo articolo. @RequestParams estrae i valori dal query string mentre @PathVariables estrae i valori dal percorso URI. In pratica quello che faremo nella pagina JSP articoli sarà quella di passare al controller il CodArt mediante la sintassi che sto per mostrarti.

JSP articoli dett art

Come vedi il mapping è stato rispettato e il codice articolo passato al controller con la sintassi che vedi. Dobbiamo creare una nuova vista, la prima cosa da fare è configurare Apache Tiles. Il nome deve essere esattamente uguale a ciò che ritorna il controller, altrimenti non funzionerebbe nulla.

Tiles

CODE BLOCK ALL’INTERNO DI PAGINE JSP

Ora dobbiamo creare la vista dettarticolo.jsp dentro la cartella view. Ti riporto il codice. Ti faccio notare come sia possibile inserire del codice Java all’interno delle pagine JSP, in questo caso io ho usato i simboli <% per l’apertura e %> per la chiusura del blocco di codice.

info articolo

DOWNLOAD CODICE DELL’ARTICOLO

CODICE DELL’ARTICOLO

E’ stata implementata la funzionalità di ricerca per intervallo di date e il paging. Il video sottostante illustra queste nuove funzionalità.

IL LINGUAGGIO JAVA

IL LINGUAGGIO JAVA

LINK AI POST PRECEDENTI

SPRING FRAMEWORK