frianH
frianH

Reputation: 7563

Java Servlet MVC, Show Database Query Result to JSP Table

Please help me about MVC java servlet. I found problem when show database query result on multiple rows and multiple columns (load all data, let say I get 10 rows after query), I want load all list student in JSP table.

How to setAttribute in the servlet and getAttribute in the JSP?

I'm set query result into a array list, this my code:

Bean Class

package com.mvc.bean;

public class StudentBean {
    private String name;
    private String id;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }
} 

DAO Class

package com.mvc.dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;

import com.mvc.bean.StudentBean;
import com.mvc.util.DBConnection;

public class StudentDao {
    public ArrayList<StudentBean> getStudent() {
        ArrayList<StudentBean> list_student = new ArrayList<StudentBean>();
        Connection con = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {
            con = DBConnection.createConnection();
            statement = con.createStatement();
            resultSet = statement.executeQuery("SELECT * FROM tbl_student");
            while(resultSet.next()){
                StudentBean studentBean = new StudentBean();
                studentBean.setId(resultSet.getString("id"));
                studentBean.setName(resultSet.getString("name"));
                list_student.add(studentBean);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return list_student;
    }
}

Servlet Class

package com.mvc.controller;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.mvc.bean.StudentBean;
import com.mvc.dao.StudentDao;

public class StudentServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public StudentServlet() {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        StudentDao studentDao = new StudentDao();
        ArrayList<StudentBean> studentList = studentDao.getStudent();

        //I have get value studentBean as array list
        //Here, how to request.setAttribute ? i want passing to jsp table
        request.getRequestDispatcher("/Student.jsp").forward(request, response);
    }
}

JSP

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Student</title>
    </head>
    <body>
        <table>
        <tr>
            <th>Id</th>
            <th>Name</th>
        </tr>
        <tr>
            //Here i want get array value from servlet, how to ?
            <td><%=request.getAttribute("?") %></td>
            <td<%=request.getAttribute("?") %>></td>
        </tr>
        </table>
    </body>
</html>

Or otherwise ?

Upvotes: 0

Views: 2363

Answers (2)

frianH
frianH

Reputation: 7563

Solved, in the Servlet Class added request.setAttribute.

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    StudentDao studentDao = new StudentDao();
    ArrayList<StudentBean> studentList = studentDao.getStudent();

    //added here
    request.setAttribute("studentList", studentList);

    request.getRequestDispatcher("/Student.jsp").forward(request, response);
}

And get the studentList in the JSP.

Add @taglib prefix="c" in the top line:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>

In the table use forEach to extract <tr> tag.

.getID() and .getName() refer to Bean Class method:

<table>
    <tr>
        <th>Id</th>
        <th>Name</th>
    </tr>
    <c:forEach var="studentBean" items="${studentList}">
        <tr>  
            <td>${studentBean.getID()}</td>
            <td>${studentBean.getName()}</td>
        </tr>
    </c:forEach>
</table>

Upvotes: 0

Mustapha Boukratem
Mustapha Boukratem

Reputation: 11

From java code you can use : request.setAttribute("mylist", studentBean);

in you JSP you need to use request.getAttribute("mylist") you will get your list.

For table you need to make loop for extracting information from your list.

Upvotes: 1

Related Questions