Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - JSP-JAVA-XML
Forum - Java - JSP-JAVA-XML

Avatar
newraziel (Normal User)
Newbie


Messaggi: 17
Iscritto: 08/12/2008

Segnala al moderatore
Postato alle 19:05
Lunedì, 08/12/2008
Questo topic è stato chiuso dal moderatore

Ciao ragazzi ho imparato + O - a scrivere sul file xml con il java e utilizzando la pagina in jsp in cui è presente il form di registrazione chiamata index.jsp inserisco i dati e riesce benisimmo a creare il file xml. Ma non so se ho fatto bene. Però il punto sta nel fatto che mi serve VERAMENTE una mano per impostare al meglio il codice in modo tale da non sovrascrivere l'utente precedente scritto ma da aggiungerne altri ad ogni nuova registrazione. Premetto che uso net beans e tomcat per provarlo!

Codice index.jsp:
Codice sorgente - presumibilmente Java

  1. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  3. "http://www.w3.org/TR/html4/loose.dtd">
  4.  
  5. <html>
  6.     <body >
  7.         <center>
  8.            
  9.             <h1>REGISTRAZIONE UTENTE</h1>
  10.             <%@ include file="/menu1.jsp" %>
  11.             <form action="registrazione.jsp" method=post>
  12.                 <center>
  13.                     <table cellpadding=2 cellspacing=1 border="1">
  14.                         <th colspan=2>
  15.                             <font size=5>Registrazione utente
  16.                             </font>
  17.                             <br>
  18.                             <font size=2 color="red"><sup>*</sup>Campi Obbligatori<br><br></font>
  19.                         </th>
  20.                         <tr>
  21.                             <td  valign=top>
  22.        
  23.                                 <center>
  24.                                     <b><strong>Informazioni dell'Utente</strong></b><br><br>
  25.                                
  26.                                    <b><sup>*</sup>Nome:</b><br><input type="text" name="nome" value=""><br>        
  27.                                    <b><sup>*</sup>Cognome:</b><br><input type="text" name="cognome" value=""><br>
  28.                                    <b><sup>*</sup>Città:</b><br><input type="text" name="citta" value=""><br>
  29.                                    <b><sup>*</sup>Provincia:</b><br><input type="text" name="provincia" value=""> <br>
  30.                                    <b><sup>*</sup>CAP:</b><br><input type="text" name="codice_postale" value=""><br>
  31.                                    <b><sup>*</sup>E-mail:</b><br><input type="text" name="email" value=""><br><br>
  32.                                    <b>Vuoi ricevere novità per E-mail?</b><br>
  33.                                    <input type="radio" name="notifica" value="si" checked>Si
  34.                                    <input type="radio" name="notifica" value="no" >No
  35.                                    </center>
  36.                                
  37.                            </td>
  38.                            <td  valign=top>
  39.                                <center>
  40.                                    <b><strong>Informazioni di Login dell'Utente</strong></b><br><br>
  41.                                     <b><sup>*</sup>Username:</b><br><input type="text" name="utente" size=20 value=""><br>
  42.                                     <b><sup>*</sup>Password:</b><br><input type="password" name="password1" size=20 value=""><br>
  43.                                     <b><sup>*</sup>Conferma:</b><br><input type="password" name="password2" size=20 value=""><br><br>
  44.                                     <input type="submit" value="Registrati"><input type="reset" value="Pulisci">    
  45.                                 </center>
  46.                             </td>
  47.                            
  48.                         </tr>
  49.                        
  50.                     </table>
  51.                 </center>
  52.             </form>
  53.         </center>
  54.     </body>
  55. </html>



registrazione.jsp che viene richiamata da index.jsp:

Codice sorgente - presumibilmente Java

  1. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  2. <%@page import="java.io.*, java.*"%>
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  4. "http://www.w3.org/TR/html4/loose.dtd">
  5.  
  6. <%!
  7.     public static FileOutputStream Output;
  8.     public static PrintStream file;
  9.     int errore;
  10.  
  11. %>
  12. <html>
  13.     <head>
  14.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  15.         <title>JSP Page</title>
  16.     </head>
  17.     <body>
  18.         <%@ include file="menu1.jsp" %>
  19.         <h1>REGISTRAZIONE AVVENUTA CON SUCCESSO! SELEZIONA "Login" DAL MENU!!</h1>
  20.         <form action="index.jsp" method=post>
  21.             <%
  22.  
  23.         if (request.getParameter("nome") == "") {
  24.             errore = 1;
  25.             %>
  26.             <font color="#FF0000">Errore : </font>Non hai inserito nessun nome.<br>
  27.             <%
  28.         }
  29.         if (request.getParameter("cognome") == "") {
  30.             errore = 1;
  31.             %>
  32.             <font color="#FF0000">Errore : </font>Non hai inserito nessun cognome.<br>
  33.             <%
  34.         }
  35.         if (request.getParameter("citta") == "") {
  36.             errore = 1;
  37.             %>
  38.             <font color="#FF0000">Errore : </font>Non hai inserito nessuna città.<br>
  39.             <%
  40.         }
  41.         if (request.getParameter("provincia") == "") {
  42.             errore = 1;
  43.             %>
  44.             <font color="#FF0000">Errore : </font>Non hai inserito nessuna provincia.<br>
  45.             <%
  46.         }
  47.         if (request.getParameter("codice_postale") == "") {
  48.             errore = 1;
  49.             %>
  50.             <font color="#FF0000">Errore : </font>Non hai inserito nessun CAP.<br>
  51.             <%
  52.         }
  53.         if (request.getParameter("email") == "") {
  54.             errore = 1;
  55.             %>
  56.             <font color="#FF0000">Errore : </font>Non hai inserito nessun indirizzo e-mail.<br>
  57.             <%
  58.         }
  59.         if (request.getParameter("utente") == "") {
  60.             errore = 1;
  61.             %>
  62.             <font color="#FF0000">Errore : </font>Non hai inserito nessun nome utente.<br>
  63.             <%
  64.         }
  65.         if (request.getParameter("password1") == "") {
  66.             errore = 1;
  67.             %>
  68.             <font color="#FF0000">Errore : </font>Non hai inserito nessuna password.<br>
  69.             <%
  70.         }
  71.         if (request.getParameter("password2") == "") {
  72.             errore = 1;
  73.             %>
  74.             <font color="#FF0000">Errore : </font> Non hai inserito nessuna password di conferma.
  75.             <%
  76.         }
  77.         if (errore == 1) {
  78.             %>
  79.             <br><br><input type="submit" value="Torna indietro">
  80.             <%            }
  81.             %>
  82.         </form>
  83.  
  84.         <%
  85.  
  86.         if (errore == 0) {
  87.  
  88.             try {
  89.                
  90.                 Output = new FileOutputStream("C:/Users/CrisLoveStefy/Desktop/Dati xml/utente.xml");
  91.                 file = new PrintStream(Output);
  92.             } catch (Exception e) {
  93.                 out.println("Impossibile caricare il file utente.xml!");
  94.             }
  95.  
  96.             file.println("<?xml version=\"1.0\"?>");
  97.  
  98.             file.println("<Utenti>");
  99.  
  100.             file.println("<Record>");
  101.  
  102.             file.println("<Nome>" + request.getParameter("nome") + "</Nome>");
  103.  
  104.             file.println("<Cognome>" + request.getParameter("cognome") + "</Cognome>");
  105.  
  106.             file.println("<Paese>" + request.getParameter("citta") + "</Paese>");
  107.  
  108.             file.println("<Provincia>" + request.getParameter("provincia") + "</Provincia>");
  109.  
  110.             file.println("<Codicepostale>" + request.getParameter("codice_postale") + "</Codicepostale>");
  111.  
  112.             file.println("<Email>" + request.getParameter("email") + "</Email>");
  113.  
  114.             if (request.getParameter("notifica").contentEquals("si")) {
  115.                 file.println("<Notifica_mail>" + "Abilitata" + "</Notifica_mail>");
  116.             } else {
  117.                 file.println("<Notifica_mail>" + "Disabilitata" + "</Notifica_mail>");
  118.             }
  119.  
  120.             file.println("<Username>" + request.getParameter("utente") + "</Username>");
  121.  
  122.             file.println("<Password>" + request.getParameter("password1") + "</Password>");
  123.  
  124.             file.println("</Record>");
  125.  
  126.             file.println("</Utenti>");
  127.  
  128.             file.close();
  129.            
  130.         }
  131.  
  132.         %>
  133.     </body>
  134. </html>



Quello che mi viene creato è il file utente.xml che è organizzato in questo modo:

<?xml version="1.0"?>
<Utenti>
<Record>
<Nome>xxxxx</Nome>
<Cognome>xxxxx</Cognome>
<Paese>xxx</Paese>
<Provincia>xxx</Provincia>
<Codicepostale>xxx</Codicepostale>
<Email>xxx@xxx.it</Email>
<Notifica_mail>Abilitata</Notifica_mail>
<Username>xxxx</Username>
<Password>xxxx</Password>
</Record>
</Utenti>

Dove xxxx sono i dati "rubati" dal form :rotfl: !

Ecco io vorrei che da così diventasse ad ogni registrazione ad esempio alla 2° registazione deve diventare così:

<?xml version="1.0"?>
<Utenti>
<Record>
<Nome>xxxxx</Nome>
<Cognome>xxxxx</Cognome>
<Paese>xxx</Paese>
<Provincia>xxx</Provincia>
<Codicepostale>xxx</Codicepostale>
<Email>xxx@xxx.it</Email>
<Notifica_mail>Abilitata</Notifica_mail>
<Username>xxxx</Username>
<Password>xxxx</Password>
</Record>
<Record>
<Nome>yyyyyy</Nome>
<Cognome>yyyyy</Cognome>
<Paese>yyy</Paese>
<Provincia>yyy</Provincia>
<Codicepostale>yyy</Codicepostale>
<Email>yyy@yyy.it</Email>
<Notifica_mail>Abilitata</Notifica_mail>
<Username>yyy</Username>
<Password>yyy</Password>
</Record>
</Utenti>

dove x e y sono i dati rubati dal form....e così via aggiungere sempre di più un figlio ad ogni registrazione!!!
Come :grr: si fa? Ho cercato di tutto ma nulla e ringrazio gli altri forum per avermi fatto aspettare settimane e settimane e zero risposta...spero e prego che in questo forum ci sia qualcuno a darmi risposte.....

PM
Avatar
VaLeRiO (Ex-Member)
Pro


Messaggi: 114
Iscritto: 28/06/2008

Segnala al moderatore
Postato alle 17:23
Martedì, 09/12/2008
Apri il file in append invece che riscriverlo ogni volta. Quando apri lo stream, mi pare l' OutputStream, puoi passare al costruttore una variabile booleana che indica se aggiungi al file o se sovrascrivi.

Occhio soltanto a non riscrivere ogni volta l'intestazione del file. Potresti controllare se il file c'è già e in tal caso aggiungi e basta, altrimenti prima di aggiungere metti l'intestazione del file xml.

Spero di averti aiutato.

ps. Cmq il codice è abbastanza orripilante (non mi odiare). Hai messo tanta di quella roba tutta ammassata. Impare a usare il paradigma MVC. Pensa  se nel tuo sito hai 30 pagine e sono tutte come quella xD.

Fammi sapere, ciao :D.

PM
Avatar
newraziel (Normal User)
Newbie


Messaggi: 17
Iscritto: 08/12/2008

Segnala al moderatore
Postato alle 10:44
Mercoledì, 10/12/2008
Ciao ehm :rotfl: ho migliorato il codice e me lo sono studiato da un sito molto utile che ci sono molte risorse e spiegazioni. Ecco il codice l'ho fatto schifo questo è vero e hai ragione. Comunque ho fatto un file java che ogni volta fa l'append di un nuovo utente. Ma ora come allora come faccio a richiamare la funzione da una form in jsp il seguente miniprogramma che modificherò inserendo i parametri ricevuti con reques.getParameter("campo del form");?
Ecco il mio nuovo codice:

Codice sorgente - presumibilmente Java

  1. import java.io.*;
  2. import org.w3c.dom.*;
  3. import javax.xml.parsers.*;
  4. import javax.xml.transform.*;
  5. import javax.xml.transform.dom.*;
  6. import javax.xml.transform.stream.*;
  7.  
  8.  
  9.  
  10. public class Utenti_Crea {
  11.  
  12.     public static void main(String[] args) throws Exception {
  13.         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  14.         Document doc = factory.newDocumentBuilder().parse(new File("Utenti.xml"));
  15.         new Utenti_Crea().Utenti_Crea(doc, "Nome","Cognome","Citta", "Provincia","CAP","Email", "Notifica", "Username", "Password");
  16.     }
  17.  
  18.     public void Utenti_Crea(Document doc, String Nome, String Cognome, String Citta, String Provincia, String Cap, String Email, String Notifica, String Username, String Password)
  19.            throws Exception {
  20.  
  21.                 // leggo il nodo capo dell'xml che in questo caso è utenti
  22.                 Element root = doc.getDocumentElement();  
  23.                
  24.                 //Creo il nuovo elemento record
  25.         Element person = doc.createElement("Record");
  26.                
  27.                 //Creo elemento che contiene il  nome
  28.                 Element Nodo_nome = doc.createElement("Nome");
  29.         person.appendChild(Nodo_nome);
  30.         Text nome_testo = doc.createTextNode(Nome);
  31.         Nodo_nome.appendChild(nome_testo);
  32.                
  33.                 //Creo elemento che contiene il cognome
  34.                 Element Nodo_cognome = doc.createElement("Cognome");
  35.         person.appendChild(Nodo_cognome);
  36.         Text cognome_testo = doc.createTextNode(Cognome);
  37.         Nodo_cognome.appendChild(cognome_testo);
  38.                
  39.                 //Creo elemento che contiene la citta
  40.                 Element Nodo_citta = doc.createElement("Citta");
  41.         person.appendChild(Nodo_citta);
  42.         Text citta_testo = doc.createTextNode(Citta);
  43.         Nodo_citta.appendChild(citta_testo);
  44.                
  45.                 //Creo elemento che contiene la provincia
  46.                 Element Nodo_provincia = doc.createElement("Provincia");
  47.         person.appendChild(Nodo_provincia);
  48.         Text provincia_testo = doc.createTextNode(Provincia);
  49.         Nodo_provincia.appendChild(provincia_testo);
  50.                
  51.                 //Creo elemento che contiene il cap
  52.                 Element Nodo_cap = doc.createElement("Cap");
  53.         person.appendChild(Nodo_cap);
  54.         Text cap_testo = doc.createTextNode(Cap);
  55.         Nodo_cap.appendChild(cap_testo);
  56.                
  57.                 //Creo elemento che contiene l'email per contattare utente
  58.                 Element Nodo_email = doc.createElement("Email");
  59.         person.appendChild(Nodo_email);
  60.         Text email_testo = doc.createTextNode(Email);
  61.         Nodo_email.appendChild(email_testo);
  62.                
  63.                 //Creo elemento che contiene la notifica email (forse opzionale)
  64.                 Element Nodo_notifica = doc.createElement("Notifica");
  65.         person.appendChild(Nodo_notifica);
  66.         Text notifica_testo = doc.createTextNode(Notifica);
  67.         Nodo_notifica.appendChild(notifica_testo);
  68.                
  69.                 //Creo elemento che contiene il nome utente
  70.         Element Nodo_username = doc.createElement("Username");
  71.         person.appendChild(Nodo_username);
  72.         Text username_testo = doc.createTextNode(Username);
  73.         Nodo_username.appendChild(username_testo);
  74.                
  75.                 //Creo elemento che contiene la password
  76.                 Element Nodo_password = doc.createElement("Password");
  77.         person.appendChild(Nodo_password);
  78.         Text password_testo = doc.createTextNode(Password);
  79.         Nodo_password.appendChild(password_testo);
  80.                
  81.                 //Attacco il tutto al nodo padre
  82.         Node firstNode = root.getFirstChild();
  83.         root.insertBefore(person, firstNode);
  84.  
  85.         TransformerFactory factory = TransformerFactory.newInstance();
  86.         Transformer transformer = factory.newTransformer();
  87.  
  88.         transformer.setOutputProperty(OutputKeys.INDENT, "yes");
  89.  
  90.         // Creo una stringa speciale dal documento-albero xml
  91.         StringWriter sw = new StringWriter();
  92.         StreamResult result = new StreamResult(sw);
  93.         DOMSource source = new DOMSource(doc);
  94.         transformer.transform(source, result);
  95.         String xmlString = sw.toString();
  96.  
  97.                 //Scrittura sul file XML
  98.                 FileWriter fstream = new FileWriter("Utenti.xml");
  99.         BufferedWriter out = new BufferedWriter(fstream);
  100.                 out.write(xmlString)
  101.                 out.close();
  102.  
  103.     }
  104. }



Ecco questo è il codice da migliorare ma come faccio a richiamare con netbeans questo programmino in java fatto apposta per salvare i nuovi utenti senza che lo integro nel jsp?
Grazie del possibile aiuto

PM
Avatar
VaLeRiO (Ex-Member)
Pro


Messaggi: 114
Iscritto: 28/06/2008

Segnala al moderatore
Postato alle 16:44
Mercoledì, 10/12/2008
Per usare una classe Java dentro una pagina JSP, devi importarla. Prima di tutto, devi però assicurarti, in base al web server che usi che i compilati siano nella appropriata cartella.

Ad es. in Tomcat i file compilati vanno in build/classes/. Poi dalla pagina JSP faccio
Codice sorgente - presumibilmente Plain Text

  1. <%@page import="ClasseImportata" %>
  2. // Mi pare fosse così la import.



Infine, invece che avere il main dentro la tua classe dichiaraci un metodo:
Codice sorgente - presumibilmente Java

  1. public static void metodo(..,..,..) { // }



Così che dal JSP farai:
Codice sorgente - presumibilmente Plain Text

  1. <% TuaClasse.metodo(..,..,..); %>



Dimmi se non mi sono spiegato in qualche parte.
Ciao :P

PM
Avatar
newraziel (Normal User)
Newbie


Messaggi: 17
Iscritto: 08/12/2008

Segnala al moderatore
Postato alle 9:37
Giovedì, 11/12/2008
No non ho capito il metodo con cui lo devo usare. Ti dico che funziona da dos....l'ho compilato ma il problema era solo importarla ma il main è strettamente necessario?
Io ho la seeguente pagina in jsp. Dove metto l'import dato che il rpfoessore non sa spiegare un beep!
Codice sorgente - presumibilmente Java

  1. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  2. <!DOCTYPE HTML public "-//W3C//DTD HTML 4.01 Transitional//EN"
  3. "http://www.w3.org/TR/html4/loose.dtd">
  4.  
  5. <html>
  6.     <body >
  7.         <center>
  8.              
  9.             <h1>REGISTRAZIONE UTENTE</h1>
  10.             <%@ include file="/menu1.jsp" %>
  11.             <form action="registrazione.jsp" method=post>
  12.                 <center>
  13.                     <table cellpadding=2 cellspacing=1 border="1">
  14.                         <th colspan=2>
  15.                             <font size=5>Registrazione utente
  16.                             </font>
  17.                             <br>
  18.                             <font size=2 color="red"><sup>*</sup>Campi Obbligatori<br><br></font>
  19.                         </th>
  20.                         <tr>
  21.                             <td  valign=top>
  22.          
  23.                                 <center>
  24.                                     <b><strong>Informazioni dell'Utente</strong></b><br><br>
  25.                                
  26.                                    <b><sup>*</sup>Nome:</b><br><input type="text" name="nome" value=""><br>        
  27.                                    <b><sup>*</sup>Cognome:</b><br><input type="text" name="cognome" value=""><br>
  28.                                    <b><sup>*</sup>Città:</b><br><input type="text" name="citta" value=""><br>
  29.                                    <b><sup>*</sup>Provincia:</b><br><input type="text" name="provincia" value=""> <br>
  30.                                    <b><sup>*</sup>CAP:</b><br><input type="text" name="codice_postale" value=""><br>
  31.                                    <b><sup>*</sup>E-mail:</b><br><input type="text" name="email" value=""><br><br>
  32.                                    <b>Vuoi ricevere novità per E-mail?</b><br>
  33.                                    <input type="radio" name="notifica" value="si" checked>Si
  34.                                    <input type="radio" name="notifica" value="no" >No
  35.                                    </center>
  36.                                
  37.                            </td>
  38.                            <td  valign=top>
  39.                                <center>
  40.                                    <b><strong>Informazioni di Login dell'Utente</strong></b><br><br>
  41.                                     <b><sup>*</sup>Username:</b><br><input type="text" name="utente" size=20 value=""><br>
  42.                                     <b><sup>*</sup>Password:</b><br><input type="password" name="password1" size=20 value=""><br>
  43.                                     <b><sup>*</sup>Conferma:</b><br><input type="password" name="password2" size=20 value=""><br><br>
  44.                                     <input type="submit" value="Registrati"><input type="reset" value="Pulisci">    
  45.                                 </center>
  46.                             </td>
  47.                              
  48.                         </tr>
  49.                          
  50.                     </table>
  51.                 </center>
  52.             </form>
  53.         </center>
  54.     </body>
  55. </html>



E come posso adattarlo in modo da renderlo funzionante? Però il file me lo crea localmente vero?
Ah dimenticavo come posso fare per dirgli crea un file se non esiste e sparaci subito i tag root?
Grazie ancora!!!

PM
Avatar
newraziel (Normal User)
Newbie


Messaggi: 17
Iscritto: 08/12/2008

Segnala al moderatore
Postato alle 12:37
Giovedì, 11/12/2008
ehm un'esempio avendo questi miei codici sorgenti allegati per ultimo? come faresti? grazie per l'aiuto se puoi. Mi potresti mettere in modo che trasferico i parametri inputtati nelle textbox alla funzione che poi li prende come input? Grazie

PM
Avatar
newraziel (Normal User)
Newbie


Messaggi: 17
Iscritto: 08/12/2008

Segnala al moderatore
Postato alle 14:46
Giovedì, 11/12/2008
Ecco ti mando quello che ho fatto. In pratica un utente si registra se è andato tutto ok che non ha lasciato campi vuoi ok...altrimenti "romperà i maroni all'utente fino a che non ha fatto il suo dovere!" quando è andata a buon fine volevo che registrasse tutti i dati nel file con il mio file Registrazione.java di cui il codice sorgente mè mostrato in java precedentemente dove mi consigli di metterlo? Grazie


newraziel ha allegato un file: WebApplication1.zip (35180 bytes)
Clicca qui per scaricare il file
PM
Avatar
newraziel (Normal User)
Newbie


Messaggi: 17
Iscritto: 08/12/2008

Segnala al moderatore
Postato alle 10:11
Mercoledì, 17/12/2008
sesmbrx che il mio topic è morto vero? Tutto qui Vero? Azz pensavo che qualcun'altro mi desse umx mano ho xspettato fin troppo per cui xxxxxx xxxx x xxxx xxxxx io ci sono giá stato :grr:

Ultima modifica effettuata da newraziel il 10/01/2009 alle 2:34
PM
Avatar
newraziel (Normal User)
Newbie


Messaggi: 17
Iscritto: 08/12/2008

Segnala al moderatore
Postato alle 2:37
Sabato, 10/01/2009
Il topic non e chiuso e xxxxxxx x xxxxxxxx finché non tirate fuorx xx esempio grazie xxxxx dx xx xxxxxx dx xxxxxxxxx a meno dx chx mx ha risoposto anche se con poca efficenza.....

PM