web-dev-qa-db-fra.com

Comment afficher une table de base de données dans la page JSP

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>`
5
linnndaaa

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>

<%

2
Brijesh Dobariya

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>
2
Shrinivas Shukla

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

0
Giovanni

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.

0
Brijesh Dobariya

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>
0
Puneet Chawla

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. 

0
Efthimis Avgeris