Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Riportare contenuto di una servlet in una jsp

    Ciao a tutti, mi sono appena iscritto in questo Forum. Avrei bisogno di un'informazione...


    Supponiamo che io abbia una servlet che mi legge un file di testo

    Codice PHP:
    FileReader letturaFile = new FileReader("fileTesto.txt");
    BufferedReader letturaPostaDefinitiva = new BufferedReader(letturaFile);
    String letturaDellaPosta letturaPostaDefinitiva.readLine(); 
    con questo codice leggo tutto alla perfezione. Adesso vorrei riportare ciò che leggo all'interno di una jsp, pertanto ho pensato di associare alla stringa di lettura una sessione, indi:


    sessionPosta.setAttribute(letturaDellaPosta, "leggi_posta");


    adesso come faccio a recuperare la sessione nella jsp e pertanto far stampare il contenuto del file? Avevo pensato a una cosa del genere:

    JSP:

    Codice PHP:
    <%
    String nome = (String) session.getAttribute("leggi_posta");
    %> 
    soltanto che quando magari vado ad ottenere il valore di nome mi va in eccezione, nullpointer...

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Beh, ti va in errore perchè hai invertito i parametri nella setAttribute(). Nella servlet:

    codice:
    sessionPosta.setAttribute("leggi_posta", letturaDellaPosta);
                                    ^               ^
    Nome attributo------------------+               |
    Valore attributo--------------------------------+

    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

  3. #3

    Contenuto

    Ok, così effettivamente funge, però soltanto se vi è un'unica riga nel file di testo, supponiamo che il file di testo abbia più righe, allora per leggerlo faccio:


    String path = "testo.txt";
    char[] in = new char[1000];
    int size = 0;
    File file = new File(path);
    FileReader fr = new FileReader(file);
    BufferedReader br = new BufferedReader(fr);
    size = br.read(in);

    System.out.print(in);
    br.close();
    Tutto funge, però voglio riportare il contenuto del testo e quindi farlo salvare a video nella jsp, questo non posso farlo:

    session.setAttribute("nome_sessione", in);
    perchè poi andando nella jsp e mettendo:

    <%
    Character nome = (Character) session.getAttribute("leggi_posta");
    %>
    mi dice :

    org.apache.jasper.JasperException: java.lang.ClassCastException: [C cannot be cast to java.lang.Character

    non capisco cosa sia C...

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Ovvio che se il file di testo ha più righe, dovrai prima leggerle tutte e poi portarle nella JSP.

    La cosa più semplice e banale è creare un ArrayList con tutte le righe e, nella JSP, scorrerlo, stampandole.

    Nella servlet:
    codice:
    ArrayList righe = new ArrayList();
    BufferedReader br = new BufferedReader( ... );
    String linea = "";
    while((linea = br.readLine()) != null) {
       // Metto la riga letta nell'ArrayList
       righe.add( linea );
    }
    br.close();
    
    // Metto l'ArrayList in sessione:
    tuaSessione.setAttribute("righe", righe);
    Nella JSP (senza utilizzare JSTL):
    codice:
    <%
    ArrayList righe = (ArrayList) session.getAttribute("righe");
    for(int i=0; i<righe.size(); i++) {
       out.print((String) righe.get(i) + "
    ");
    }
    %>
    Nella JSP (utilizzando JSTL):
    codice:
    <c:forEach items="${righe}" var="riga">
       ${riga}
    
    </c:forEach>

    Il problema del ClassCastException ce l'hai per un ovvio motivo: stai cercando di convertire un array di char ( char[] ) in un oggetto Charater, che sono due cose notevolmente diverse. Il primo è un oggetto che rappresenta una serie di caratteri, il secondo è un oggetto che rappresenta un wrapper per un singolo carattere...


    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.