Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: [JSP] path class

  1. #1
    Utente di HTML.it L'avatar di Alex80b
    Registrato dal
    Feb 2004
    Messaggi
    154

    [JSP] path class

    Ciao,
    mi sto avvicinando al mondo JSP e avrei una domanda relativ i bean.
    Ho creato una classe java molto semplice:

    public class Counter {
    private int progressivo = 0;

    public int getNumber() {
    return progressivo++;
    }
    }

    prima domanda: dove deve essere salvato il file Counter.class?

    nel file JSP ho poi richiamato la classe utlizzando la sintassi
    <jsp:useBean id="count" scope="application" class="Counter" />
    come c'era scritto nella dispensa.
    Il risultato di tutto questo è un bell'errore che dice:

    The value for the useBean class attribute Counter is invalid.

    Ho provato a spostare il file Counter.class in diverse cartelle ma senza risultati.
    Mi riuscite a spiegare come devo fare?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JSP] path class

    Originariamente inviato da Alex80b
    prima domanda: dove deve essere salvato il file Counter.class?
    Conosci la struttura delle directory, ben precisa, che deve avere una web application?? Le classi devono stare sotto WEB-INF/classes (riflettendo eventualmente anche i nomi dei package, se presenti) o sotto WEB-INF/lib se contenute in file .jar.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di Alex80b
    Registrato dal
    Feb 2004
    Messaggi
    154
    non avendo inserito nessun package devo inserlo nella directory
    ...\ROOT\WEB-INF\classes\Counter.class mentre il file jsp nella ...\ROOT\Counter.jsp
    è corretto?
    L'errore persiste ancora cosa potrebbe essere?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Alex80b
    L'errore persiste ancora cosa potrebbe essere?
    Una questione concettuale sui package in relazione alla servlet generata dal container relativa alla pagina JSP.

    Una pagina JSP alla fin fine diventa nient'altro che una servlet ..... ma la classe di questa servlet il container la definisce in un package che è specifico e dipende dal container. Chi scrive una pagina JSP in pratica non sa (e non dovrebbe importargli particolarmente) in quale package il container mette la corrispondente servlet!!

    Ma se la tua classe Counter non ha un package ... allora è nel package "unnamed" ... senza nome. Se è senza nome ..... non puoi importarla!! E nemmeno referenziarla.

    Morale della favola: se da una pagina JSP hai bisogno di referenziare delle classi (in qualunque modo ... scriptlet, standard action come <jsp:useBean> ecc...) allora queste classi devono avere un package!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di Alex80b
    Registrato dal
    Feb 2004
    Messaggi
    154
    grazie della risposta e ti chiedo scusa per le domande idiote... purtoppo devo romperti ancora...
    ho aggiunto la riga package datapackage; nella classe java, ho cambiato il codice jsp modificando la chiamata al bean: <jsp:useBean id="bean" class="datapackage.Counter" />
    ma il risultato non cambia

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Alex80b
    ho aggiunto la riga package datapackage; nella classe java, ho cambiato il codice jsp modificando la chiamata al bean: <jsp:useBean id="bean" class="datapackage.Counter" />
    ma il risultato non cambia
    Non basta. Non conosci la regola fondamentale dei package. I nomi e la struttura dei package si devono sempre "riflettere" nella struttura delle directory.
    Se hai una classe Prova nel package com.esempio, allora il file Prova.class deve stare sotto un percorso com/esempio. In una web application dovrebbe stare sotto:

    ....../WEB-INF/classes/com/esempio/Prova.class
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it L'avatar di Alex80b
    Registrato dal
    Feb 2004
    Messaggi
    154
    scusa la dimenticanza nel messaggio di prima, non ti avevo riportato il fatto dell'aver cambiato anche il path...

    infatti l'attuale è proprio:

    ....../WEB-INF/classes/datapackage/Counter.class

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,327
    Riporta anche la modifica effettuata nella JSP, per completezza.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Utente di HTML.it L'avatar di Alex80b
    Registrato dal
    Feb 2004
    Messaggi
    154
    riporto tutto il codice di quell'esempio trovato in rete (ed equivalente a tanti altri) che sto cercando di freplicare senza successo...ringrazio fin da subito tutti coloro che mi daranno una mano!

    l'errore è sempre "The value for the useBean class attribute dati.DatiUtente is invalid."

    ...\Tomcat 5.5\webapps\ROOT\dati\DatiUtente.jsp
    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Utilizzo di un bean per i dati dell'utente</title>
    </head>
    <body>
    
    <jsp:useBean id="beanUtente" class="dati.DatiUtente" />
    <jsp:setProperty name="beanUtente" property="nome" value="Franco" />
    <jsp:setProperty name="beanUtente" property="cognome" value="Rossi" />
    
    <h3>Benvenuto!</h3>
    
    
    
    Salve, 
    <jsp:getProperty name="beanUtente" property="nome" />
    <jsp:getProperty name="beanUtente" property="cognome" />
     il tuo nome è stato inserito in un Java Bean!.</p>
    </body>
    </html>
    ...\Tomcat 5.5\webapps\ROOT\WEB-INF\classes\dati\DatiUtente.class
    codice:
    package dati;
    
    import java.io.*;
    
    public class DatiUtente implements Serializable {
    	private static final long serialVersionUID = -4494204860444161325L;
    	private String nome;
    	private String cognome;
    
    	public DatiUtente() {
    	}
    
    	public void setNome(String valoreNome) {
    		this.nome=valoreNome;
    	}
    
    	public void setCognome(String valoreCognome) {
    		this.cognome=valoreCognome;
    	}
    
    	public String getNome() {
    		return this.nome;
    	}
    
    	public String getCognome() {
    		return this.cognome;
    	}
    
    }

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,327
    A prima vista sembra tutto ok... ora resta da capire come richiami la JSP.

    Supponendo che tu abbia un server Tomcat installato e funzionante, che sia in ascolto localmente sulla porta 8080 e supponendo che la tua WebApp si chiami "esempio", questo indirizzo dovrebbe farti comparire il risultato della JSP:

    codice:
    http://localhost:8080/esempio/dati/DatiUtente.jsp

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.