Java Servlet MVC,向JSP表显示数据库查询结果

时间:2018-05-24 09:55:39

标签: java html

请帮我讲一下MVC java servlet。我在多行和多列显示数据库查询结果时发现问题(加载所有数据,假设我在查询后得到10行),我想在JSP表中加载所有列表学生,如何在JSP中使用setAttribute和在JSP中使用getAttribute,i& #39; m将查询结果设置为数组列表,这是我的代码:

Bean类

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课程

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() {
        StudentBean studentBean = new StudentBean();
        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.setId(resultSet.getString("id"));
                studentBean.setName(resultSet.getString("name"));
                list_student.add(studentBean);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return list_student;
    }
}

Servlet类

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;

    StudentDao studentDao = new StudentDao();

    public StudentServlet() {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ArrayList<StudentBean> studentBean = 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>

或者其他?

2 个答案:

答案 0 :(得分:0)

您可以使用Java代码:request.setAttribute("mylist", studentBean);

在您的JSP中,您需要使用request.getAttribute("mylist") 你会得到你的清单。

对于表格,您需要循环以从列表中提取信息。

答案 1 :(得分:0)

已解决,在 Servlet类中添加了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);
}

并在 JSP 中获得studentList

在顶行添加@taglib prefix="c"

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

在表格中,使用forEach提取<tr>标签。

.getID().getName()指的是 Bean类方法:

<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>