2015-07-03 16 views
5

Sto tentando di visualizzare la mia tabella utente su una tabella nella mia pagina JSP. Ma i dati non vengono visualizzati quando eseguo la pagina JSP.Come visualizzare una tabella di database nella pagina JSP

Ho uno schema mySQL chiamato "eyetracker" e una tabella chiamata "utente". Apprezzare il vostro aiuto .. Se possibile, voglio recuperare i dati MySQL utilizzando servlet e visualizzarlo in una pagina JSP ...

<%@ page import="java.sql.ResultSet" %> 
<%@ page import="java.sql.Statement" %> 
<%@ page import="java.sql.Connection" %> 
<%@ page import="java.sql.DriverManager" %> 

<form method="post"> 

<table border="2"> 
    <tr> 
     <td>user ID</td> 
     <td>Birthday</td> 
     <td>Gender</td> 
     <td>First Name</td> 
     <td>Last Name</td> 
    </tr> 
    <% 
    try 
    { 
     Class.forName("com.mysql.jdbc.Driver"); 
     String url="jdbc:mysql://localhost:3306/eyetracker"; 
     String username="root"; 
     String password="root"; 
     String query="select * from eyetracker"; 
     Connection conn=DriverManager.getConnection(url, username, password); 
     Statement stmt=conn.createStatement(); 
     ResultSet rs=stmt.executeQuery(query); 
     while(rs.next()) 
     { 
    %> 
      <tr><td><%rs.getInt("userID"); %></td></tr> 
      <tr><td><%rs.getDate("dob"); %></td></tr> 
      <tr><td><%rs.getString("gender"); %></td></tr> 
      <tr><td><%rs.getString("firstName"); %></td></tr> 
      <tr><td><%rs.getString("lastName"); %></td></tr> 

    <% 
     } 
    %> 
    </table> 
    <% 
     rs.close(); 
     stmt.close(); 
     conn.close(); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
    %> 
</form>` 
+0

Hai controllato se il tuo 'ResultSet rs' ha delle righe? Cioè, stai anche entrando nel ciclo while? –

+0

Modifica la tua query a 'select * from user' e assicurati di aver inserito mysql jar in' WEB-INF/lib'. – Naman

risposta

2

aggiornamento il vostro piccolo codice come segue,

%>

 <tr><td><%out.println(rs.getInt("userID")); %></td></tr> 
     <tr><td><%out.println(rs.getDate("dob")); %></td></tr> 
     <tr><td><%out.println(rs.getString("gender")); %></td></tr> 
     <tr><td><%out.println(rs.getString("firstName")); %></td></tr> 
     <tr><td><%out.println(rs.getString("lastName")); %></td></tr> 
 <tr><td><%=rs.getInt("userID"); %></td></tr> 
     <tr><td><%=rs.getDate("dob"); %></td></tr> 
     <tr><td><%=rs.getString("gender"); %></td></tr> 
     <tr><td><%=rs.getString("firstName"); %></td></tr> 
     <tr><td><%=rs.getString("lastName"); %></td></tr> 

<%

+0

Si potrebbe voler aggiungere perché e cosa è cambiato. Questo lo renderebbe più chiaro. – jAC

2

In JSP, se si desidera aggiungere contenuti dinamici al DOM HTML, è è necessario effettuare questa operazione

<tr><td><%=rs.getInt("userID"); %></td></tr> 
<tr><td><%=rs.getDate("dob"); %></td></tr> 
<tr><td><%=rs.getString("gender"); %></td></tr> 
<tr><td><%=rs.getString("firstName"); %></td></tr> 
<tr><td><%=rs.getString("lastName"); %></td></tr> 

Notare = nel codice precedente.

Questo manca nel codice, quindi il codice sta semplicemente estraendo i valori ma non li inserisce nel DOM HTML.

<%@ page import="java.sql.ResultSet" %> 
<%@ page import="java.sql.Statement" %> 
<%@ page import="java.sql.Connection" %> 
<%@ page import="java.sql.DriverManager" %> 

<form method="post"> 

<table border="2"> 
<tr> 
<td>user ID</td> 
<td>Birthday</td> 
<td>Gender</td> 
<td>First Name</td> 
<td>Last Name</td> 
</tr> 
<% 
try 
{ 
Class.forName("com.mysql.jdbc.Driver"); 
String url="jdbc:mysql://localhost:3306/eyetracker"; 
String username="root"; 
String password="root"; 
String query="select * from user"; 
Connection conn=DriverManager.getConnection(url, username, password); 
Statement stmt=conn.createStatement(); 
ResultSet rs=stmt.executeQuery(query); 
while(rs.next()) 
{ 

%> 
<tr><td><%=rs.getInt("userID") %></td></tr> 
<tr><td><%=rs.getDate("dob") %></td></tr> 
<tr><td><%=rs.getString("gender") %></td></tr> 
<tr><td><%=rs.getString("firstName") %></td></tr> 
<tr><td><%=rs.getString("lastName") %></td></tr> 

<% 

} 
%> 
</table> 
<% 
rs.close(); 
stmt.close(); 
conn.close(); 
} 
catch(Exception e) 
{ 
e.printStackTrace(); 
} 
%> 
</form> 
0

Il tag di espressione verrà utilizzato per la visualizzazione del valore nella pagina JSP. Il tag di espressione viene convertito in istruzione Java. Ma stai usando i tag Scriptlet ti permettono di incorporare qualsiasi codice sorgente Java valido nelle pagine del server JSP.

Il risultato proviene dal database, quindi verrà visualizzato correttamente.

<tr><td><%=rs.getInt("userID"); %></td></tr> 
<tr><td><%=rs.getDate("dob"); %></td></tr> 
<tr><td><%=rs.getString("gender"); %></td></tr> 
<tr><td><%=rs.getString("firstName"); %></td></tr> 
<tr><td><%=rs.getString("lastName"); %></td></tr> 
0

se non si dispone del driver JDBC nel percorso di classe l'errore va in uscita server di applicazione in quanto si dispone di una linea con e.printStackTrace();. provare a cambiare:

catch(Exception e) { 
    e.printStackTrace(); 
} 

Con:

catch(Exception e) { 
    e.printStackTrace(); 
    out.println("<h1> error: "+ e.getMessage()+"</h1>"); 
} 

per vedere se hai qualche problema con il driver JDBC

0

Non solo tag Expression convertire in Java, ma il file completa JSP convertire in Servlet, in modo da utilizzare qualsiasi espressione o di tag scriptlet.

0

grande soluzione, ha cercato lo stesso sul mio tavolo, ma

<tr><td><%=rs.getString("column1") %></td 
<td><%=rs.getInt("column2") %></td></tr> 

stampa solo il primo valore della prima colonna e poi il ciclo si ferma. Funziona perfettamente solo per colonne di tipo varchar ma non con colonne di tipo int.

Problemi correlati