28/02/2023 - Princeluus ha scritto:
Ti allego il file war da dove devo fare le modifiche
Allora, gli ho dato una occhiata veloce (non ho molto tempo…). Si tratta ovviamente di una applicazione JavaEE “classica” che usa in particolare Struts e Apache Tiles. Presumo che giri su un application server IBM (ci sono dei descrittori) e questo spiegherebbe perché nella WEB-INF/lib manca “roba”, tra cui i jar di Apache Tiles che sono quasi sicuramente shared a livello di application server.
L'utilizzo di JDBC è stato fatto in maniera molto “frugale” e ben poco riutilizzabile, andando a prendere il DataSource da lookup JNDI e poi facendo tutte le varie operazioni in maniera molto “a manina” e senza nemmeno preoccuparsi di fare bene i vari close. Considera che se c'è un connection-pool dietro, un conn.close() NON chiude la Connection ma la restituisce al pool. In questi casi è molto importante chiudere correttamente Statement e ResultSet, cosa che invece vedo NON viene fatta in maniera sistematica/coerente.
Lato web, le pagine sono fatte con JSP. Anche qui, è stato fatto tutto in maniera molto diretta, usando scriptlet Java, facendo iterazioni con il for ed emettendo in output i dati usando espressioni tipo <%=tizio.getNomeDipendente()%>
Questo in generale è molto brutto perché non viene fatto alcun escaping dei caratteri speciali e questo può anche portare problemi di “sicurezza” in quanto espone le pagine a potenziali injection di codice (Javascript) malevolo.
Ora: se devi popolare una tabella, la prima di cosa da fare è modellare ciascuna riga con una apposita classe. I dati che hai mostrato sono Articolo, Descrizione, Cartellino e Disegno. Hai già una classe che “modella” queste informazioni? Se no, la dovresti creare.
Su come fare le query, di casi nel codice ce ne sono (anche se, ripeto, non buonissimi). Puoi prendere spunto da lì. Chiaramente devi sapere tu quale tabella, quali colonne devi trattare. I dati da passare alla JSP vengono messi nel request scope, poco prima di fare un forward alla JSP.
P.S. visto che hai tra le mani questa webapp, ti avviso di prestare attenzione a molte delle cose inutili/errate che ho intravisto.
Dalle cose inutili tipo:
new String("")
(è una delle cose più inutili in Java) fino a cose proprio palesemente errate tipo:
if (this.getDisegno().equalsIgnoreCase("") || this.getDisegno() == null) {
(non è così che si testa il potenziale null da getDisegno() !)
Se non li hai scritti tu, tranquillo, non sono erroracci tuoi. ;)