在 JSP 中显示来自 Java Class 的 ArrayList
Showing ArrayList in JSP from a Java Class
我无法显示我在 JSP 上的 ArrayList 中输入的内容。列表中的项目取自 Java class 中的数据库,然后显示在 JSP 中。我试过使用 c:forEach 但我还是不太明白。我是 JSP 的新手,我尽量不使用 scriplet。这就是为什么我在 Java class 上做所有事情的原因。此外,为了让您了解它是如何工作的,管理员选择查看用户的整个数据库,因此它在选项单选按钮标签上选择,转到 JSP 页面,在那里它评估管理员想要什么查看并转发到必须显示 Arraylist 的其他页面。我在转发到显示数据库的 JSP 的 JSP 页面中调用列表的函数。我不知道那是否是正确的方法。谢谢!
这是JAVAclass
public List<administration> fullList() throws Exception{
List<administration> result = new ArrayList<administration>();
try{
Class.forName("com.mysql.jdbc.Driver");
connectMe = DriverManager.getConnection(url+dbName, userNameDB, passwordDB);
String query = "SELECT \n" +
" ControlAccess.UserName, \n" +
" ControlAccess.Pass, \n" +
" Users.First_Name,\n" +
" Users.Last_Name, \n" +
" UserInfo.Age, \n" +
" UserInfo.Country,\n" +
" UserInfo.Address,\n" +
" UserInfo.ZipCode,\n" +
" Sessions.Matrix1,\n" +
" Sessions.Matrix2,\n" +
" Sessions.Result,\n" +
" FilePath.LocationFiles\n" +
" FROM MatrixUsers.UserInfo \n" +
" INNER JOIN MatrixUsers.Users\n" +
" ON UserInfo.idUserInfo = Users.idUsers\n" +
" INNER JOIN MatrixUsers.ControlAccess \n" +
" ON ControlAccess.idControlAccess = UserInfo.idUserInfo\n" +
" INNER JOIN MatrixUsers.Sessions \n" +
" ON Sessions.idSessions = ControlAccess.idControlAccess\n" +
" INNER JOIN MatrixUsers.FilePath \n" +
" ON FilePath.idFilePath = Sessions.idSessions";
selectUsers = connectMe.prepareStatement(query);
selectUsers.executeQuery();
while(results.next()) {
administration admin = new administration();
admin.setUserName(results.getString("UserName"));
admin.setPassword(results.getString("Pass"));
admin.setFirstname(results.getString("First_Name"));
admin.setLastname(results.getString("Last_Name"));
admin.setAge(results.getInt("Age"));
admin.setCountry(results.getString("Country"));
admin.setAddress(results.getString("Address"));
admin.setZipcode(results.getInt("ZipCode"));
admin.setMatrix1(results.getString("Matrix1"));
admin.setMatrix2(results.getString("Matrix2"));
admin.setResult(results.getString("Result"));
admin.setLocation(results.getString("LocationFiles"));
result.add(admin);
}
results.close();
connectMe.close();
}catch(Exception e) {
e.printStackTrace();
}
return result;
}
这就是我试图在 JSP 中展示的方式:
<table>
<c:forEach var="admin" items="${admin.fullList()}">
<tr>
<td>${admin.username}" </td>
<td>${admin.password} </td>
<td>${admin.firstName} </td>
<td>${admin.lastName} </td>
<td>${admin.age} </td>
<td>${admin.country} </td>
<td>${admin.address} </td>
<td>${admin.zipcode} </td>
<td>${admin.Matrix1} </td>
<td>${admin.Matrix2} </td>
<td>${admin.Result} </td>
<td>${admin.location} </td>
</tr>
</c:forEach>
</table>
请这样尝试
<c:if test="${not empty result}">
<c:forEach var="e" items="${result}" >
<c:out value="${e.username}"/>
</c:forEach>
</c:if>
这里我使用 c:out 迭代列表和用户名。
我无法显示我在 JSP 上的 ArrayList 中输入的内容。列表中的项目取自 Java class 中的数据库,然后显示在 JSP 中。我试过使用 c:forEach 但我还是不太明白。我是 JSP 的新手,我尽量不使用 scriplet。这就是为什么我在 Java class 上做所有事情的原因。此外,为了让您了解它是如何工作的,管理员选择查看用户的整个数据库,因此它在选项单选按钮标签上选择,转到 JSP 页面,在那里它评估管理员想要什么查看并转发到必须显示 Arraylist 的其他页面。我在转发到显示数据库的 JSP 的 JSP 页面中调用列表的函数。我不知道那是否是正确的方法。谢谢!
这是JAVAclass
public List<administration> fullList() throws Exception{
List<administration> result = new ArrayList<administration>();
try{
Class.forName("com.mysql.jdbc.Driver");
connectMe = DriverManager.getConnection(url+dbName, userNameDB, passwordDB);
String query = "SELECT \n" +
" ControlAccess.UserName, \n" +
" ControlAccess.Pass, \n" +
" Users.First_Name,\n" +
" Users.Last_Name, \n" +
" UserInfo.Age, \n" +
" UserInfo.Country,\n" +
" UserInfo.Address,\n" +
" UserInfo.ZipCode,\n" +
" Sessions.Matrix1,\n" +
" Sessions.Matrix2,\n" +
" Sessions.Result,\n" +
" FilePath.LocationFiles\n" +
" FROM MatrixUsers.UserInfo \n" +
" INNER JOIN MatrixUsers.Users\n" +
" ON UserInfo.idUserInfo = Users.idUsers\n" +
" INNER JOIN MatrixUsers.ControlAccess \n" +
" ON ControlAccess.idControlAccess = UserInfo.idUserInfo\n" +
" INNER JOIN MatrixUsers.Sessions \n" +
" ON Sessions.idSessions = ControlAccess.idControlAccess\n" +
" INNER JOIN MatrixUsers.FilePath \n" +
" ON FilePath.idFilePath = Sessions.idSessions";
selectUsers = connectMe.prepareStatement(query);
selectUsers.executeQuery();
while(results.next()) {
administration admin = new administration();
admin.setUserName(results.getString("UserName"));
admin.setPassword(results.getString("Pass"));
admin.setFirstname(results.getString("First_Name"));
admin.setLastname(results.getString("Last_Name"));
admin.setAge(results.getInt("Age"));
admin.setCountry(results.getString("Country"));
admin.setAddress(results.getString("Address"));
admin.setZipcode(results.getInt("ZipCode"));
admin.setMatrix1(results.getString("Matrix1"));
admin.setMatrix2(results.getString("Matrix2"));
admin.setResult(results.getString("Result"));
admin.setLocation(results.getString("LocationFiles"));
result.add(admin);
}
results.close();
connectMe.close();
}catch(Exception e) {
e.printStackTrace();
}
return result;
}
这就是我试图在 JSP 中展示的方式:
<table>
<c:forEach var="admin" items="${admin.fullList()}">
<tr>
<td>${admin.username}" </td>
<td>${admin.password} </td>
<td>${admin.firstName} </td>
<td>${admin.lastName} </td>
<td>${admin.age} </td>
<td>${admin.country} </td>
<td>${admin.address} </td>
<td>${admin.zipcode} </td>
<td>${admin.Matrix1} </td>
<td>${admin.Matrix2} </td>
<td>${admin.Result} </td>
<td>${admin.location} </td>
</tr>
</c:forEach>
</table>
请这样尝试
<c:if test="${not empty result}">
<c:forEach var="e" items="${result}" >
<c:out value="${e.username}"/>
</c:forEach>
</c:if>
这里我使用 c:out 迭代列表和用户名。