I am trying to display database data using JSTL like this:
My dao;
public ArrayList getStudentFirstName(){
ArrayList v = new ArrayList();
Connection conn;
try{
conn = db.getDbConnection();
String sql = "select STU_FIRST_NAME, STU_MIDDLE_NAME, LAST_NAME from college_students_master";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while(rs.next()){
String firstname = rs.getString("STU_FIRST_NAME");
String middlename = rs.getString("STU_MIDDLE_NAME");
String lastname = rs.getString("LAST_NAME");
v.add(firstname);
v.add(middlename);
v.add(lastname);
}
}catch(Exception asd){
System.out.println(asd.getMessage());
}
return v;
}
My servlet:
public class displayservlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
DetailsDao dd = new DetailsDao();
request.setAttribute("firstname", dd.getStudentFirstName());
RequestDispatcher view = request.getRequestDispatcher("DemoJSP.jsp");
view.forward(request, response);
}
}
My JSP:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
</head>
<body>
<b>The Demo Object Names Are:-
<br>
<table>
<c:forEach items="${firstname}" var="firstname">
<tr>
<td>${firstname}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
My Display:
Both The first Name and the MiddleName are on the same Column. What is the best way to display a dynamic table using Jstl. an Example would also be Appreciated.
EDIT: My expected Output Is: I have added an extra One column:
Try this,
create a new Bean class named as Name
public class Name
{
private String firstName;
private String middleName;
private String lastName;
// relavent getter setter
}
change your method getStudentFirstName()
public ArrayList getStudentFirstName(){
ArrayList<Name> v = new ArrayList<Name>();
Connection conn;
try{
conn = db.getDbConnection();
String sql = "select STU_FIRST_NAME, STU_MIDDLE_NAME from college_students_master";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
Name name = null;
while(rs.next()){
name = new Name();
name.setFirstName(rs.getString("STU_FIRST_NAME")); //set your firstName
name.setMiddleName(rs.getString("STU_MIDDLE_NAME")); //set your MiddleName
name.setLastName(rs.getString("LAST_NAME")); //set your LastName
v.add(name);
}
}catch(Exception asd){
System.out.println(asd.getMessage());
}
return v;
}
change your c:forEach
Loop
<table border="1">
<thead>
<td>
<th>First Name</th>
<th>Middle Name</th>
<th>Last Name</th>
</td>
</thead>
<tbody>
<c:forEach items="${firstname}" var="name">
<tr>
<td>${name.firstName}</td>
<td>${name.middleName}</td>
<td>${name.lastName}</td>
</tr>
</c:forEach>
</tbody>
</table>