Salve a tutti.
Sono inesperto di java, quindi kiedo il vostro aiuto.
Devo passare due array di stringhe da una servlet ad una pagina jsp; nella servlet eseguo le due query per riempire i due array, i cui contenuti devo visualizzarli in una tabella nella pagina jsp. Per ogni valore dell'indice dei due array, sarà inserita una nuova riga nella tabella contente i due risultati dei due array. Però nn funziona.
Ecco il codice:
Servlet (VisualizzaTuttiCv.java)
In pratica, prima faccio una query per trovare la lunghezza degli array (i), poi faccio le due query per riempire i due array ke devo passare (Id[] e User[] ). Poi setto gli attributi (setAttribute). Gli array vengono effettivamente riempiti, infatti i vari out.println mi danno i risultati corretti.codice:public class VisualizzaTuttiCV extends HttpServlet { String Url = "jdbc:mysql://localhost:3306/gestionedati"; String ex="vuoto"; //questa variabile sarà modificata se viene lanciata qualche eccezione String UsernameDB ="root"; String PasswordDB ="bari"; int i=0; int cont=0; int NumeroUser; public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); String ID = (String)session.getAttribute("login"); try { Class.forName("com.mysql.jdbc.Driver"); } catch(ClassNotFoundException e) { System.out.println("Error loading driver"); } catch (Exception e) { e.printStackTrace(); ex = e.toString(); } try { java.sql.Connection conn = DriverManager.getConnection(Url, UsernameDB, PasswordDB); java.sql.Statement st3 = conn.createStatement(); ResultSet risultato3=st3.executeQuery("SELECT Count(IdUtente) AS i FROM utente WHERE IdUtente != '1'"); if (risultato3.next()) { i = risultato3.getInt("i"); } /*request.setInt("i",i);*/ //questo nn funziona... String Id[] = new String[i]; String User[] = new String[i]; java.sql.Statement st1 = conn.createStatement(); System.out.println("--------VISUALIZZAZIONE DI TUTTI I CV-----------"); String querySQL = "SELECT IdUtente FROM utente WHERE IdUtente != '1'"; ResultSet risultato1=st1.executeQuery(querySQL); if (risultato1 != null){ while (risultato1.next()) { Id[cont] = risultato1.getString("IdUtente"); request.setAttribute("Id[cont]", Id[cont]); java.sql.Statement st2 = conn.createStatement(); String querySQL2 = "SELECT UserName FROM utente WHERE IdUtente = '"+Id[cont]+"'"; ResultSet risultato2=st2.executeQuery(querySQL2); risultato2.next(); User[cont] = risultato2.getString("UserName"); request.setAttribute("User[cont]", User[cont]); System.out.println("Numero id "+Id[cont]); System.out.println("User "+User[cont]); System.out.println("indice array = "+cont); cont=cont+1; } System.out.println("Numero di utenti trovati = " +cont); System.out.println("Numero di utenti trovati = " +i); String jspPage = "/VisualizzaAdmin.jsp"; request.getRequestDispatcher(jspPage).forward(request,response); } else { String jspPage = "/NoCVTrovati.jsp"; request.getRequestDispatcher(jspPage).forward(request,response); } } catch( SQLException e ) { e.printStackTrace(); ex = e.toString(); } if (ex == "vuoto") { System.out.println("Visualizzazione tutti i CV terminata"); } else { System.out.println("Visualizzazione tutti i CV non effettuata"); System.out.println("eccezione: "+ex); response.setContentType("text/html"); PrintWriter pw = response.getWriter(); pw.println("Visualizzazione non effettuata Ritorna alla <a href=\"../../ejob/BenvenutoAdmin.html\">Home Page</a></p>"); pw.close(); } } }
Il problema è nella pagina jsp.
PAGINA JSP (VisualizzaAdmin.jsp)
Ho messo nel cilo for j<4 perkè ho riempito il mio database mysql in modo tale ke gli array avessero lunghezza 4; infatti, altro problema, nn riesco a passare la lunghezza dei due array alla pagina jsp (forse è questa la causa dell'errore? devo fare setInt nella servlet e poi getInt nella jsp?).codice:<html> <head> <title>Visualizzazione di tutti gli utenti registrati</title> </head> <body background="/ejob/images/prato.gif"> <table bgcolor="white" border="2" cellpadding="10" align="center" width="500"> <caption> Ecco tutti gli utenti registrati </caption> <tr><td><p align="center"> Id Utente </p></TD> <TD><p align="center"> Username </p></td></tr> <%for (int j=0; j<4; j=j+1) {%> <%out.print("<tr><td><p align=center>");%> <%out.print(request.getAttribute("Id[j]").toString());%> <%out.print("</td></p><td><p align=center>");%> <%out.print(request.getAttribute("User[j]").toString());%> <%out.print("</td></p></tr>"); }%> %> </table> <a href="../../ejob/BenvenutoAdmin.html">Home </body> </html>
L'errore ke mi dà il server tomcat è NullPointerExeption.
Spero di essere stato kiaro.

Rispondi quotando