[RISOLTISSIMO][Java] Prampa, come si visualizza una "list" in una pagina jsp?

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Archimede Pitagorico
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 861
Iscrizione: domenica 22 aprile 2007, 19:51

[RISOLTISSIMO][Java] Prampa, come si visualizza una "list" in una pagina jsp?

Messaggio da Archimede Pitagorico »

Prampa, dopo aver trascorso giornate a studiare il tuo esempio ho adattato il sistema di gestione dati da te suggerito ad una mia applicazione. Sono all'ultimo stadio, ovvero la visualizzazione dati in una pagina jsp. Però non capisco il codice della tua jsp! Forse hai usato un altro linuguaggio. Eccoti sotto il frammento della pagina esattamente come me l'hai inviata (non funziona); come "tradurla" in Java?












O (in altre parole) come fare in modo che nella pagina index2.jsp si visualizzi il risultato di tale classe (presa da una servlet fatta sul modello di quella da te indicata)?

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
List acList = new ArrayList();
BusinessAccount acBA = new BusinessAccount();
ValueAccount acVA = new ValueAccount();
try {
acList = acBA.getList(acVA);
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
request.setAttribute("list", acList);
request.getRequestDispatcher("index2.jsp").forward(request,response);
}
Ultima modifica di Archimede Pitagorico il venerdì 14 marzo 2008, 16:00, modificato 1 volta in totale.
prampa
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 652
Iscrizione: lunedì 26 febbraio 2007, 14:04

Re: [Java] Prampa, ma come si visualizza una "list" in una pagina jsp?

Messaggio da prampa »

non ci sono soltanto io! (nono)
Comunque per quanto riguarda il post, l'esempio è perfetto. Forse non ti funziona perche' non hai copiato nel tuo progetto la libreria jstl.jar o manca il riferimento alle taglib nella jsp. Questa libreria (JavaServerPages Standard Tag Library) contiene i tag standard da usare nelle jsp per risolvere e semplificare alcune azioni standard, tipo la tua, senza ricorrere a tag fatti a mano o a librerie di terze parti.
Ci sono diversi modi per visualizzare i dati nelle jsp,  tag jstl, tag di struts, inserendo codice java (il peggiore), azioni , fino a farseli per proprio conto. Insomma come ti pare basta che non usi codice java nelle jsp.
JSTL è un buon sistema per visualizzare dati attraverso l'uso di tag: si integra anche con struts permettendo trasformazioni xsl senza uscire dalla logica di struts!
In mancanza di meglio ti consiglio di usarle, cosi' ti abitui a non usare codice java nelle jsp: tra l'altro hai anche tag di connessione ed esecuzione query verso i DB direttamente da jsp (pero' fai finta di niente!!!!).
Nell'esempio, $lista è l'oggetto nella request impostata nella servlet contenente la lista. cognome, nome e idRubrica sono gli attributi del valueObject utilizzato per costruire la lista: sostituiscili con quelli tuoi. row è solo un alias interno alla jsp di riferimento a $lista. Per il resto cerca su google e troverai molte informazioni.
Pero' ricorda sempre: le jsp servono, o dovrebbero servire, solo per visualizzare dati gia' confezionati e basta: non devono contenere codice java (anche se non mi piace, e io non uso questa tecnica, unica concessione java è per capire riga dispari/riga pari per evidenziare con diverso colore le righe di una tabella con i css).
Tutto qua.
Ah poi, nel caso di anomalia sarebbe meglio ridirezionare l'errore ad una pagina di errori gravi di blocco dell'applicazione.
ciao
Archimede Pitagorico
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 861
Iscrizione: domenica 22 aprile 2007, 19:51

Re: [Java] Prampa, ma come si visualizza una "list" in una pagina jsp?

Messaggio da Archimede Pitagorico »

Prampa,
grazie come sempre per la tua disponibilità e scusa se ho indirizzato la domanda direttamente a te. Ho cercato tantissimo in rete, ho studiato molto il tuo esempio. Ho importato nel mio progetto le due librerie standard.jar e jstl.jar (credo in modo corretto, tant'è che i tag vengono riconosciuti come si deve). Ecco come ho impostato la sevlet di partenza, la pagina jsp ed ecco il messaggio di errore che vedo. Preciso che la pagina jsp e la servlet se "validate" tramite l'apposito comando non danno alcun errore.

Grazie di nuovo. Sei sempre disponibilissimo.





SERVLET


package servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.sql.SQLException;
import java.util.*;
import business.BusinessAccount;
import value.ValueAccount;
/**
* Servlet implementation class for Servlet: ServletAccountList
*
*/
public class ServletAccountList extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
  static final long serialVersionUID = 1L;
 
    /* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#HttpServlet()
*/
public ServletAccountList() {
super();


/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
List acList = new ArrayList();
BusinessAccount acBA = new BusinessAccount();
ValueAccount acVA = new ValueAccount();
try {
acList = acBA.getList(acVA);
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
request.setAttribute("list", acList);
request.getRequestDispatcher("index2.jsp").forward(request,response);


/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}       
}




ECCO COME HO IMPOSTATO LA PAGINA JSP


   
   
   
   
   
   
   
 







Insert title here



dfsgsdfgsdgsdfg

















ED ECCO L'ERRORE CHE COMPARE

org.apache.jasper.JasperException: /index2.jsp(26,3) According to TLD or attribute directive in tag file, attribute items does not accept any expressions
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:952)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:706)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1442)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2166)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2216)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2222)
org.apache.jasper.compiler.Node$Root.accept(Node.java:457)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2166)
org.apache.jasper.compiler.Validator.validate(Validator.java:1484)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:167)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:296)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:277)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:265)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:302)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
servlet.ServletAccountList.doGet(ServletAccountList.java:50)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
Avatar utente
jimmy.77
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 576
Iscrizione: lunedì 25 settembre 2006, 17:08
Località: San Marcello Pistoiese
Contatti:

Re: [Java] Prampa, ma come si visualizza una "list" in una pagina jsp?

Messaggio da jimmy.77 »

Ciao. Quando devi postare quantità massive di roba, ti conviene utilizzare il tag:

Codice: Seleziona tutto

blablabla
birubirubiru
pipopipopipo
(tra le iconcine nell'editor è quello contrassegnato da "#"), che utilizza una formattazione più "consona" allo scopo. Provare per credere!

Ciao, J.
Legge di Gumperson: "La probabilità che qualcosa accada è inversamente proporzionale alla sua desiderabilità"
Archimede Pitagorico
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 861
Iscrizione: domenica 22 aprile 2007, 19:51

Re: [Java] Prampa, ma come si visualizza una "list" in una pagina jsp?

Messaggio da Archimede Pitagorico »

Grazie Jimmy molto gentile! Terrò conto. Nessuno potrebbe darmi indicazioni in merito al quesito?
Avatar utente
daemon_nio
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1012
Iscrizione: lunedì 15 gennaio 2007, 14:18
Sesso: Maschile
Località: London
Contatti:

Re: [Java] Prampa, ma come si visualizza una "list" in una pagina jsp?

Messaggio da daemon_nio »

Ma le JSTL le hai installate?

Devi scaricare le JSTL da internet (è un file jstl.jar) e copiarle nella cartella /WEB-INF/lib
Poi devi inserire tutti i file .tld nella cartella /WEB-INF/tld

in questo modo puoi utilizzare le jstl nella pagina con la seguente riga:

Codice: Seleziona tutto

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
(se utilizzi JSP minore di 1.2 devi configurare anche il web.xml

Questo dagli appunti che ho scritto ab illo tempore... comunque sono riuscito a far funzionare le jstl nella mia applicazione quindi se non ho tralasciato niente dagli appunti si dovrebbe fare solo questo).
Sempre costruendo qualcosa di nuovo: Matag: The Game
prampa
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 652
Iscrizione: lunedì 26 febbraio 2007, 14:04

Re: [Java] Prampa, ma come si visualizza una "list" in una pagina jsp?

Messaggio da prampa »

potrebbe dipendere dalla coesistenza di versioni jsp e servlet. Le jslt che hai mi sembra siano la 1.1 o la 1.0 non ricordo.
Prova nella jsp ad impostare

Codice: Seleziona tutto

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
,
altrimenti
prova la combinazione delle core-rt.tld, che le dovresti avere gia' mappate nel web.xml

Codice: Seleziona tutto

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core-rt"%>
oppure

Codice: Seleziona tutto

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core-rt"%>
non ricordo bene come si scriva....ad occhio e croce....
Pero' ho dei dubbi perche' dovrebbe funzionare cosi' com'e'....
Ma invece esistono i campi cognome e nome nella classe java che utilizzi per creare la lista?
Archimede Pitagorico
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 861
Iscrizione: domenica 22 aprile 2007, 19:51

Re: [Java] Prampa, ma come si visualizza una "list" in una pagina jsp?

Messaggio da Archimede Pitagorico »

PRAMPA! E' il cielo che ti manda. Non mi sono staccato tutto il giorno da qui.

Dunque quel tag è l'UNICO tra tutte le posibili combinazioni che fa in modo che i tag della pagina siano correttamente letti senza la sottolineatura di errore e senza altri segnali poco incoraggianti. Le tabelle con relativi campi esistono in quanto correttamente richiamati da altra jsp. La situazione (codici delle pagine, messaggi di errore e soprattutto files importati tra le librerie) è esattamente quella che ti ho indicato.

Mi hai aiutato tantissimo, in un saccco di circostanze, a fare passi avanti non piccoli. Ora spero di superare anche questo piccolo scoglio abituandomi all'uso corretto di questi tag che prima delle tue indicazioni non avevo nemmeno conosciuto.

PS ovviamente ho cercato tantissimo su Google ma senza risolvere il problema. Scusa se ho fatto qualche errore di ortografia ma sono stanco morto.
prampa
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 652
Iscrizione: lunedì 26 febbraio 2007, 14:04

Re: [Java] Prampa, ma come si visualizza una "list" in una pagina jsp?

Messaggio da prampa »

Come ti ha anche scritto daemon_nio, è importantissima la parte di configurazione. Io ho dato fino ad ora per scontato che tu avessi il web.xml (con la corretta mappatura) e le librerie (jstl.jar) cosi' come sono definite nell'applicazione che ti ho inviato. Ma quella funziona? Intanto facciamo un passo per volta. Se quella di applicazione va dipende da altro, altrimenti solito metodo: zippa e allega.
Nelle jsp, secondo me, te ne puoi anche fregare delle sottolineature in rosso nelle jsp: a volte basta usare una include che ti sfalza tutto. Effettua il deploy e poi vedi se ti da errore a runtime.
Archimede Pitagorico
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 861
Iscrizione: domenica 22 aprile 2007, 19:51

Re: [Java] Prampa, ma come si visualizza una "list" in una pagina jsp?

Messaggio da Archimede Pitagorico »

Prampa, grazie tantissimo! No, anche col deploy mi da errore.
prampa
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 652
Iscrizione: lunedì 26 febbraio 2007, 14:04

Re: [Java] Prampa, ma come si visualizza una "list" in una pagina jsp?

Messaggio da prampa »

Archimede Pitagorico ha scritto: Prampa, grazie tantissimo! No, anche col deploy mi da errore.
Ma la mia di applicazione funziona?
Archimede Pitagorico
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 861
Iscrizione: domenica 22 aprile 2007, 19:51

Re: [Java] Prampa, ma come si visualizza una "list" in una pagina jsp?

Messaggio da Archimede Pitagorico »

Prampa sarò più preciso. Anche deployata con la libreria dentro ed il suo richiamo nella jsp tutto funziona alla grande (presumo quindi che la risolrse sia stata bene importata). I problemi nascono quando in quella pagina utilizzo materialmente i tag che mi hai indicato tu. Dipenderà dal formalismo in sé di quei tag? Ho scritto qualcosa di poco corretto?

Quindi andiamo per gradi... Tu come hai installato quelle librerie in matrix? TI sei limitato anche tu a copiare il file jstl.jar sotto webinf -> lib e poi l'applicazione l'ha vista e referenziata correttamente? (immagino di si, io ho fatto lo stesso con tutte le altre mie librerie ed hanno sempre funzionato).

PS in merito al tuo ultimo quesito la tua applicazione la tua applicazione da un solo, unico errore nel file web.xml. Ecco il tag che dà errore:


http://java.sun.com/jstl/fmt
/WEB-INF/fmt.tld
prampa
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 652
Iscrizione: lunedì 26 febbraio 2007, 14:04

Re: [Java] Prampa, ma come si visualizza una "list" in una pagina jsp?

Messaggio da prampa »

quindi funziona correttamente? non ho capito.....
Archimede Pitagorico
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 861
Iscrizione: domenica 22 aprile 2007, 19:51

Re: [Java] Prampa, ma come si visualizza una "list" in una pagina jsp?

Messaggio da Archimede Pitagorico »

Non funziona, c'è un solo errore che non riesco a risolvere, si trova nel file web.xml e precisamente in questo tag:


http://java.sun.com/jstl/fmt
/WEB-INF/fmt.tld
prampa
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 652
Iscrizione: lunedì 26 febbraio 2007, 14:04

Re: [Java] Prampa, ma come si visualizza una "list" in una pagina jsp?

Messaggio da prampa »

Archimede Pitagorico ha scritto: Non funziona, c'è un solo errore che non riesco a risolvere, si trova nel file web.xml e precisamente in questo tag:


http://java.sun.com/jstl/fmt
/WEB-INF/fmt.tld
bene, cancella queste righe, che tanto per l'esempio non ti servono. Per curiosità: ma che errore ti da?
Archimede Pitagorico
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 861
Iscrizione: domenica 22 aprile 2007, 19:51

Re: [Java] Prampa, ma come si visualizza una "list" in una pagina jsp?

Messaggio da Archimede Pitagorico »

Sono nel panico. Ho tolto quella riga ma non riesco ad avviarlo, mi dice che per il tuo progetto ci vuole tomcat 6.0 ed io ho il 5.5; posso abusare della tua enorme cortesia e chiederti come fare per renderlo compatibile per la 5.5?
Archimede Pitagorico
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 861
Iscrizione: domenica 22 aprile 2007, 19:51

Re: [Java] Prampa, ma come si visualizza una "list" in una pagina jsp?

Messaggio da Archimede Pitagorico »

L'errore è quello descritto al primo post (parlo dell'errore della mia applicazione ovviamente). ps grazie per il tempo che mi stai dando, anche a quest'ora tardissima.
prampa
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 652
Iscrizione: lunedì 26 febbraio 2007, 14:04

Re: [Java] Prampa, ma come si visualizza una "list" in una pagina jsp?

Messaggio da prampa »

appena posso scarico la versione 5.5 o qualcosa del genere e provo cosi' matrix.war su quella versione. Pero' credo sia solo un problema di incompatibilità di nomenclatura o di libreria jstl con jsp/servlet.
Pero' ribadisco il fatto che tu debba trovare un metodo di sviluppo, altrimenti vai di qua e di la: i manuali..boh...lasciano il tempo che trovano.
Lavorare con solo servlet o peggio solo jsp....passa a struts, che ti aiuta tanto (solo per la parte controller).
Devi capire i vari componenti di una applicazione web, come interagiscono tra loro e poi fatti un prototipo di applicazione usando anche le possibilità di java: non so quanto tu abbia utilizzato le tecniche di sviluppo ad oggetti, probabilmente stai utilizzando java proceduralmente, come tanti.
Il prototipo, anche molto semplice, con pochissime maschere, una ricezione chiave, una lista ed una maschera di dettaglio con le operazioni minimalistiche CRUD. Semplice ma un muletto per costruire sopra cose valide. Una volta che il muletto va, vedrai che è molto semplice creare nuove applicazioni (molto semplice mica tanto, pero' hai le idee chiare...). Pochi concetti ma chiari: 1) accesso DB da una parte che fornisce servizi a richiesta, 2) visualizzazione dati (jsp - tag struts - o xslt/xml anche con jstl se vuoi) solo per mostrare informazioni gia' confezionate e basta, 3) gestione di quello che l'utente smanetta con i vari pulsanti e campi html (usa struts). Cosi' impostate, quasi tutte le applicazioni gestionali sono uguali.
Chiaramente questa è una mia personalissima visione.....
ciao
Avatar utente
daemon_nio
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1012
Iscrizione: lunedì 15 gennaio 2007, 14:18
Sesso: Maschile
Località: London
Contatti:

Re: [Java] Prampa, ma come si visualizza una "list" in una pagina jsp?

Messaggio da daemon_nio »

Quello che ti posso consigliare è un testo:

JavaServer PagesTM, 2nd Edition di Hans Bergsten; editore: O'Reilly

E' stato il libro più bello e interessante che ho letto durante tutto il mio periodo di tirocinio, ti fa capire in maniera semplice e pulita cosa è il pattern Model-View-Controller (accennando solamente a Struts e Springs).
Model = Bean; (come dice Prampa programmazione a oggetti pura)
Controller = Servlet;
View = JSP e JSTL (per produrre non solo html ma anche wml o in generale xml)

Inoltre ti consolida quei meccanismi base (cookie, sessioni) che conosci sicuramente ma ti fa capire in pieno il loro funzionamento.

Tratta altri argomenti interessanti come connessioni a database o filter e listener.

Scegliere i testi di O'Reilly è una garanzia, anche se sono tutti in inglese.

Per quanto riguarda JSTL devono funzionare anche su tomcat 5.5
Se hai un errore in una pagina che contiene la direttiva per includere istruzioni JSTL significa che ci sono errori di installazione. Ne ho avuti anche io all'inizio ma ho risolto.
Il problema non è sicuramente nelle particolari istruzioni jstl che sono errate... dall'errore non hai proprio installato le JSTL.
Ultima modifica di daemon_nio il mercoledì 12 marzo 2008, 13:54, modificato 1 volta in totale.
Sempre costruendo qualcosa di nuovo: Matag: The Game
Avatar utente
daemon_nio
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1012
Iscrizione: lunedì 15 gennaio 2007, 14:18
Sesso: Maschile
Località: London
Contatti:

Re: [Java] Prampa, ma come si visualizza una "list" in una pagina jsp?

Messaggio da daemon_nio »

P.S.

Comunque riguardando il codice mi sembra di vedere un errore, anche se sono quasi sicuro che non è quello lanciato.

Nella pagina JSP scrivi:

Codice: Seleziona tutto

<c:forEach var="row" items="${lista}">
chiedendo di recuperare il vettore lista

Nella servlet che fa il dispatching alla pagina JSP scrivi

Codice: Seleziona tutto

request.setAttribute("list", acList);
dichiarando una variabile list e non lista.
Secondo me c'è da correggere.

P.P.S
Quando posti del codice perché non lo metti all'interno dell'opportuno BBtag CODE?
E' più facile per chi legge il POST interpretarlo e farlo costa esattamente 2 secondi.

grazie
Ultima modifica di daemon_nio il mercoledì 12 marzo 2008, 13:56, modificato 1 volta in totale.
Sempre costruendo qualcosa di nuovo: Matag: The Game
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti