J'essaie d'afficher ma table utilisateur sur une table de ma page JSP. Mais les données ne sont pas affichées lorsque j'exécute la page JSP.
J'ai un schéma mySQL appelé "eyetracker" et une table appelée "utilisateur". Appréciez votre aide. Si possible, je veux récupérer les données mySQL en utilisant servlet et les afficher dans une page 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>`
mettre à jour votre petit code comme suit,
%>
<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>
<%
Dans JSP, si vous souhaitez ajouter du contenu dynamique au DOM HTML, vous devez le faire.
<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>
Notez le =
dans le code ci-dessus.
Cela manque dans votre code, par conséquent, le code extrait simplement les valeurs mais ne les insère pas dans le 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>
si vous n'avez pas le pilote jdbc dans le chemin d'accès aux classes, l'erreur se retrouve dans la sortie du serveur d'applications car vous avez une ligne avec e.printStackTrace();
. Essayer de changer:
catch(Exception e) {
e.printStackTrace();
}
Avec:
catch(Exception e) {
e.printStackTrace();
out.println("<h1> error: "+ e.getMessage()+"</h1>");
}
pour voir si vous avez un problème avec le pilote jdbc
Non seulement les balises Expression sont converties en Java, mais le fichier JSP complet est converti en Servlet. Utilisez donc une balise Expression ou Scriptlet.
La balise d’expression sera utilisée pour afficher la valeur dans la page JSP. Balise d'expression convertie en instruction Java. Mais vous utilisez des balises Scriptlet vous permettant d’incorporer n’importe quel code source Java valide dans les pages du serveur JSP.
Le résultat provient de la base de données, elle sera ensuite affichée correctement.
<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>
Excellente solution, essayé la même chose sur ma table mais
<tr><td><%=rs.getString("column1") %></td
<td><%=rs.getInt("column2") %></td></tr>
affiche uniquement la première valeur de la première colonne, puis la boucle s'arrête. Cela fonctionne parfaitement pour les colonnes de type varchar uniquement, mais pas avec les colonnes de type int.