我在 DAO 中创建了 Arraylist,并在 servlet 中使用了该列表。 jsp页面中显示数组列表的结果。
DAO
package com.dao;
import com.database.DBConnection;
import com.mysql.jdbc.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
public class ListDAO {
String status=null;
Connection con= null;
PreparedStatement pst=null;
ResultSet rs = null;
private DBConnection conn;
public ListDAO() {
con = DBConnection.getConnection();
}
public ArrayList<String> getAllUser() throws SQLException {
ArrayList<String> allUser = new ArrayList<String>();
try {
con = DBConnection.getConnection();
String queryList = "SELECT name, last_name, zip, phone_no, start_time, end_time, quantity," +
"type, order, logo FROM Database.user_info";
pst = con.prepareStatement(queryList);
rs = pst.executeQuery();
while (rs.next()) {
allUser .add(rs.getString("name"));
allUser .add(rs.getString("last_name"));
allUser .add(rs.getString("zip"));
allUser .add(rs.getString("phone_no"));
allUser .add(rs.getString("start_time"));
allUser .add(rs.getString("end_time"));
allUser .add(rs.getString("quantity"));
allUser .add(rs.getString("type"));
allUser .add(rs.getString("order"));
allUser .add(rs.getString("logo"));
}
}
catch (SQLException e) {
e.printStackTrace();
}
finally {
if(rs!=null) {
try {
rs.close();
} catch(SQLException logOrIgnore) {}
}
if(pst!=null) {
try {
pst.close();
} catch (SQLException logOrIgnore) {}
}
if(con!=null) {
try {
con.close();
} catch(SQLException logOrIgnore) {}
}
}
return allUser;
}
}
这个数组列表传入下面给出的 servlet:
Servlet
package com.servlet;
import com.dao.ListDAO;
import com.database.DBConnection;
import com.mysql.jdbc.Connection;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/checkLogin")
public class LoginServlet extends HttpServlet {
Connection con= null;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ListDAO Vendors = new ListDAO();
if(!userValidate.equals("FALSE")) {
//Login verified user
try {
con = DBConnection.getConnection();
ArrayList<String> allUser = Vendors.getAllUser();
request.setAttribute("allUser", allUser); // Will be available as ${allUser} in JSP
System.out.println(allUser);
request.getRequestDispatcher("userProfile.jsp").forward(request, response);
}
catch (SQLException ex) {
throw new ServletException("Cannot obtain allUser from Database", ex);
}
}
else {
response.sendRedirect("login.jsp");
}
}
}
以及我想在其中显示 ArrayList 的 userProfile.jsp 页面,如下所示:
<c:forEach var="user" items="${allUser}">
<div class="col-md-5">
<img src="Resources/images/logo/logo1.jpg" alt="Logo1">
<h2>${user.name} ${user.last_name}</h2>
<p>${user.zip}, ${user.phone_no}, ${user.start_time}, ${user.end_time}</p>
<p>${user.quantity}, ${user.type}, ${user.order}, ${user.logo}</p>
</div>
</c:forEach>
问题是整个数组列表都在单个数组中,这就是为什么在jsp页面中显示数组时出现问题。我想分别显示每个用户的个人记录(每个用户有 10 条要显示的内容)。谁能告诉我哪里做错了。
谢谢!
最佳答案
在您的 JSP 中,您正在使用
${user.name} ${user.last_name}
因此,这意味着 JSP 期望列表中的每个元素都是具有以下方法的对象:
public String getName() {
return this.name;
}
public String getLast_name() {
return this.lastName;
}
但这不是列表所包含的内容。该列表是 List<String>
。它应该是 List<User>
。顺便说一句,您还应该尊重 Java 命名约定。因此,将您的代码更改为
while (rs.next()) {
User user = new User();
user.setName(rs.getString("name"));
user.setLastName(rs.getString("last_name"));
...
allUser.add(user);
}
这样,结果集的每一行都成为一个 User 对象。
关于java - 使用servlet和DAO时ArrayList不显示在jsp页面中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35811043/