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

    Inviare mail e scrivere su pdf con jsp

    Ciao a tutti, innanzitutto buon anno

    Sto implementando per un esame all'uni un mini sito di registrazione ad un corso di master..tra le tante funzioni che deve avere, due di queste sono l'invio automatico di una mail dopo la registrazione con tutti i dati personali, e la possibilità di scriver su un file pdf tutti questi dati...il tutto eseguito con tecologie servlet, jsp, jstl, un minestrone insomma...Di seguito posto il codice che ho fatto io:

    Mail.java (classe java)
    codice:
    import java.util.*;
    import javax.mail.*;
    import javax.mail.internet.*;
    
    public class Mail {
        
        
        public Mail(String mittente, String destinatario, String testo) {
            
            try {
                Properties props = System.getProperties();
                props.put( "mail.smtp.host", "localhost");
                props.put( "mail.debug", "true" );
                Session session = Session.getDefaultInstance( props );
                Message message = new MimeMessage( session );
                InternetAddress from = new InternetAddress( mittente );
                InternetAddress to[] = InternetAddress.parse(destinatario);
                message.setFrom( from );
                message.setRecipients( Message.RecipientType.TO, to );
                message.setSubject("Registrazione confermata a Sito Master");
                message.setSentDate( new Date() );
                message.setText(testo);
                Transport.send(message);
            }
            
            catch(MessagingException e)  {
                e.printStackTrace();
            }
        }
    }
    Mail.jsp
    codice:
    <%@page language="java" import="POSTA.*" %>
    
     <%
            
            String testo = "Ciao brutto gay di un nuovo iscritto.\nusername: "+
                    request.getParameter("usr")+"\npassword: "+
                    request.getParameter("pwd")+".\nGAY.";
            String mittente = "SitoMaster@gmail.com";
            String destinatario = request.getParameter("mail");
            
            try {
                new Mail(mittente, destinatario, testo);// l'ho modificata in modo che prenda questi tre parametri dall'esterno
                out.println("Mail inviata correttamente a " + destinatario);
            } catch(Exception e) {
                out.println("Errore: " + e.toString());
            }    
            
            %>
    Il problema qui è che funziona tutto ma a intervalli (una volta si e 10 no)..nel senso che la classe singolarmente funziona, il jsp (che contiene anche lettura e scrittura su db) funziona, però appunto a intervalli molto irregolari..ho un dubbio su quell'impostazione "localhost", dato che mi hanno detto di metterla ma non so di preciso a cosa serva (premetto che il tutto deve funzionare da netbeans e sul locale pc, non da server remoti ecc)..

    Pdf.java
    codice:
    import java.io.*;
    import com.lowagie.text.*;
    import com.lowagie.text.pdf.PdfWriter;
    
    
    public class Pdf {
        
        /** Creates a new instance of PdfWriter */
        public Pdf() {
            
            // step 1: creation of a document-object
            Document document = new Document();
            try {
    // step 2:
    // we create a writer that listens to the document
                PdfWriter.getInstance(document, new FileOutputStream("Registrazione.pdf"));
    // step 3: we open the document
                document.open();
    // step 4:
                Paragraph p1 = new Paragraph(new Chunk( "This is my first paragraph. ",
                        FontFactory.getFont(FontFactory.HELVETICA, 10)));
                p1.add("The leading of this paragraph is calculated automagically. ");
                p1.add("The default leading is 1.5 times the fontsize. ");
                p1.add(new Chunk("You can add chunks "));
                p1.add(new Phrase("or you can add phrases. "));
                p1.add(new Phrase("Unless you change the leading with the method setLeading, the leading doesn't change if" +
                        "you add text with another leading. This can lead to some problems.",
                        FontFactory.getFont(FontFactory.HELVETICA, 18)));
                
                document.add(p1);
                
                Paragraph p2 = new Paragraph(new Phrase(
                        "This is my second paragraph. ", FontFactory.getFont(
                        FontFactory.HELVETICA, 12)));
                p2.add("As you can see, it started on a new line.");
                document.add(p2);
                Paragraph p3 = new Paragraph("This is my third paragraph.",
                        FontFactory.getFont(FontFactory.HELVETICA, 12));
                document.add(p3);
            } catch (DocumentException de) {
                System.err.println(de.getMessage());
            } catch (IOException ioe) {
                System.err.println(ioe.getMessage());
            }
    // step 5: we close the document
            document.close();
        }
    }
    idem, la classe partendo da sola me lo scrive il pdf, ma se la relaziono con il codice jsp non mi scrive niente..

    Pdf.jsp
    codice:
    <%@page contentType="text/html"%>
    <%@page pageEncoding="UTF-8"%>
    <%@page language="java" import="PDF.*" %>
    
    <%           
                    try {     
                    new Pdf(); 
                    } catch(Exception e) { 
                out.println("Errore: " + e.toString()); 
                }    
                
                out.println("Dati registrazione salvati in Registrazione.pdf");
            
             %>
    Mi potete aiutare?

    Grazie..ciao ciao :quote:

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649

    Re: Inviare mail e scrivere su pdf con jsp

    Originariamente inviato da VforVENDETTA
    il tutto eseguito con tecologie servlet, jsp, jstl, un minestrone insomma...
    minestrone che poco ha a che vedere con linguaggi lato client e javascript in special modo,
    sposto in java, sperando sia forum piu' consono

  3. #3
    Ciao a tutti, ho quasi completato il suddetto progetto mettendo a posto tutto, solo che mi rimane un problema nella scrittura del PDF; probabilmente mi perdo in un bicche d'acqua ma proprio non so più
    dove sbattere la testa.

    Di seguito posto la classe java che ha il compito di creare e popolare il file Pdf con tutte le informazioni che mi servono:

    codice:
    package PDF;
    
    import java.io.*;
    import com.lowagie.text.*;
    import com.lowagie.text.pdf.PdfWriter;
    
    
    public class Pdf {
        
        
        public Pdf(String username,String pwd,String nome,String cogn,String datanasc,String naz,
                   String indirizzo,String città,int cap,String provincia,String doc,String n_doc,int tel,String email,
                   String qualif, String esp, String ins, String motivi, String tipo_dipl, String data_dipl,
                   int voto_dipl,String data_immat) {
            
            // step 1: creation of a document-object
            Document document = new Document();
            
            try {
    // step 2:
    // we create a writer that listens to the document
                PdfWriter.getInstance(document, new FileOutputStream("Registrazione.pdf"));
    // step 3: we open the document
                document.open();
    // step 4:
                Paragraph p1 = new Paragraph(new Phrase("INFORMAZIONI PERSONALI", FontFactory.getFont(
                        FontFactory.HELVETICA, 16)));
                p1.add("\n");
                Paragraph p2 = new Paragraph("",FontFactory.getFont(FontFactory.HELVETICA, 10));
                p2.add("USERNAME: " + username + "\n");
                p2.add("PASSWORD: " + pwd + "\n");
                p2.add("NOME: " + nome + "\n");
                p2.add("COGNOME: " + cogn + "\n");
                p2.add("DATA DI NASCITA: " + datanasc + "\n");
                p2.add("NAZIONE: " + naz + "\n");
                p2.add("INDIRIZZO: " + indirizzo + "\n");
                p2.add("CITTA': " + città + "\n");
                p2.add("CAP: " + cap + "\n");
                p2.add("PROVINCIA: " + provincia + "\n");
                p2.add("DOCUMENTO IDENTITA': " + doc + "\n");
                p2.add("N° DOCUMENTO: " + n_doc + "\n");
                p2.add("TELEFONO: " + tel + "\n");
                p2.add("EMAIL: " + email + "\n");
                p2.add("\n\n");
                document.add(p1);
                document.add(p2);
                
                Paragraph p3 = new Paragraph(new Phrase("CURRICULUM VITAE", FontFactory.getFont(
                        FontFactory.HELVETICA, 16)));
                p3.add("\n");
                Paragraph p4 = new Paragraph("",FontFactory.getFont(FontFactory.HELVETICA, 10));
                p4.add("QUALIFICHE: " + qualif + "\n");
                p4.add("ESPERIENZE: " + esp + "\n");
                p4.add("INSEGNAMENTI: " + ins + "\n");
                p4.add("MOTIVAZIONI: " + motivi + "\n"); 
                p4.add("\n\n");
                document.add(p3);
                document.add(p4);
                
                Paragraph p5 = new Paragraph("INFORMAZIONI ACCADEMICHE",FontFactory.getFont(
                        FontFactory.HELVETICA, 16));
                p5.add("\n");
                Paragraph p6 = new Paragraph("",FontFactory.getFont(FontFactory.HELVETICA, 10));
                p6.add("TIPO DIPLOMA: " + tipo_dipl + "\n");
                p6.add("DATA DIPLOMA: " + data_dipl + "\n");
                p6.add("VOTO DIPLOMA: " + voto_dipl + "\n");
                p6.add("DATA IMMATRICOLAZIONE: " + data_immat + "\n"); 
                p6.add("\n\n");
                document.add(p5);
                document.add(p6);
                
            } catch (DocumentException de) {
                System.err.println(de.getMessage());
            } catch (IOException ioe) {
                System.err.println(ioe.getMessage());
            }
    // step 5: we close the document
            document.close();
        }
        
       public static void main(String a []){
        
            Pdf pdf = new Pdf("si","si","si","si","si","si","si","si",10,"si","si","si",14,"si",
                    "si","si","si","si","si","si",15,"si");
            /*pdf.Pdf_Writer("si","si","si","si","si","si","si","si",10,"si","si","si",14,"si",
                    "si","si","si","si","si","si",15,"si");*/
        
        }
        
        
    }
    IL Metodo main in fondo serve esclusivamente a provarela il funzionamento della classe singolarmente, nienetea che vedere con l'interfacciamento in jsp.

    Poi devo creare un jsp che viene chiamato alla pressione di un pulsante su una jsp precedente, che deve contenere il costruttore Pdf con tutti i parametri passati per poterli scrivere su pdf..e qui nasce il problema:

    Non riesco a trovare un modo per catturare i dati dal DB e passarli come parametro al costruttore in questione; in un primo momento sono riuscito a creare una connessione al DB tramite sintassi jsp e quindi richiamare il costruttore sempre all'interno dello stesso tag jsp..però dato che la query sql deve essere una cosa del tipo Select usr, pwd,ecc FROM utenti WHERE usr='<%=session.getAttribute("user")', quest'iltima parte della session scritta così non me la riconosce nel jsp, cioè, quando scrivo il terminatore "%>" mi termina tutta la parte jsp quando invece dopo quella riga c'è ancora codsice e di conseguenza non me lo riconosce più..una cosa di questo tipo:

    codice:
     <%@ page language="java" import="java.sql.*" %>
    <%
       Class.forName("org.hsqldb.jdbcDriver");
       
    Connection dbconn = null;
    
    
    
    dbconn = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/xdb","sa",""); 
    
    Statement statement = dbconn.createStatement(); 
    
    ResultSet rs = statement.executeQuery("SELECT usr FROM utenti WHERE usr = '<%= session.getAttribute("user")%>' " );
    
    while (rs.next()){
    //ottiene il dato
    String usr = rs.getString("usr");
    //stampa a video
    out.println(usr);
    }//while
    
    
    dbconn.close();
    %>
    QAualcuno sa dirmi come posso fare per tirare fuori i dati dal DB e passarli come parametri al costruttore della clase in jsp?

    grazie ciao

  4. #4
    Codice scorretto:

    ResultSet rs = statement.executeQuery("SELECT usr FROM utenti WHERE usr = '<%= session.getAttribute("user")%>' " );

    Codice corretto:

    ResultSet rs = statement.executeQuery("SELECT usr FROM utenti WHERE usr = '" + session.getAttribute("user") + "'");


    p.s. quando sei all'interno del codice java non devi utilizzare <%=, serve solo all'interno del codice html della jsp

  5. #5
    Grazie mille problema risolto..ciao

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.