Java 无法将ArrayList从Servlet显示到JSP
我使用servlet和jsp来显示Access数据库 MainDatabase.javaJava 无法将ArrayList从Servlet显示到JSP,java,jsp,ms-access,servlets,intellij-idea,Java,Jsp,Ms Access,Servlets,Intellij Idea,我使用servlet和jsp来显示Access数据库 MainDatabase.java public class MainDatabase { private int proId; private String proName; private String proQuantity; private String proPrice; public MainDatabase() {
public class MainDatabase
{
private int proId;
private String proName;
private String proQuantity;
private String proPrice;
public MainDatabase()
{
this.proId = 0;
this.proName = "";
this.proQuantity = "";
this.proPrice = "";
}
public int getProId() {
return proId;
}
public void setProId(int proId) {
this.proId = proId;
}
public String getProName() {
return proName;
}
public void setProName(String proName) {
this.proName = proName;
}
public String getProQuantity() {
return proQuantity;
}
public void setProQuantity(String proQuantity) {
this.proQuantity = proQuantity;
}
public String getProPrice() {
return proPrice;
}
public void setProPrice(String proPrice) {
this.proPrice = proPrice;
}
}
maindabaseutil.java
import org.hsqldb.Database;
import java.io.*;
import java.sql.*;
import java.util.*;
import java.util.ArrayList;
import java.util.List;
import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
public class MainDatabaseUtil
{
public static List<MainDatabase> getMainDB() throws Exception
{
List<MainDatabase> mainDatabases = null;
JSONArray payload = null;
try
{
Connection conn = DriverManager.getConnection("jdbc:ucanaccess://D:\\study_materials\\Java\\Resources\\Database\\smsDemo.accdb");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * from Database");
stmt.close();
conn.close();
mainDatabases = new ArrayList<>();
//payload = new JSONArray();
if(rs != null)
{
while(rs.next())
{
MainDatabase proDB = new MainDatabase();
proDB.setProId(rs.getInt("ID"));
proDB.setProName(rs.getString("ProName"));
proDB.setProQuantity(rs.getString("Quantity"));
proDB.setProPrice(rs.getString("Price"));
mainDatabases.add(proDB);
}
}
return mainDatabases;
//return payload;
}
catch(Exception el)
{
return mainDatabases;
}
}
}
导入org.hsqldb.Database;
导入java.io.*;
导入java.sql.*;
导入java.util.*;
导入java.util.ArrayList;
导入java.util.List;
导入org.json.simple.JSONObject;
导入org.json.simple.JSONArray;
公共类MainDatabaseUtil
{
公共静态列表getMainDB()引发异常
{
List main数据库=null;
JSONArray有效负载=null;
尝试
{
Connection conn=DriverManager.getConnection(“jdbc:ucanaccess://D:\\study\u materials\\Java\\Resources\\Database\\smsDemo.accdb”);
语句stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(“从数据库中选择*);
stmt.close();
康涅狄格州关闭();
mainDatabases=新的ArrayList();
//有效负载=新的JSONArray();
如果(rs!=null)
{
while(rs.next())
{
MainDatabase proDB=新的MainDatabase();
proDB.setProId(rs.getInt(“ID”));
proDB.setProName(rs.getString(“ProName”));
proDB.setProQuantity(rs.getString(“数量”);
产品定价(rs.getString(“价格”));
添加(proDB);
}
}
返回主数据库;
//返回有效载荷;
}
捕获(异常el)
{
返回主数据库;
}
}
}
MainDatabaseServlet.java
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.List;
import javax.servlet.RequestDispatcher;
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 org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import javax.servlet.*;
@WebServlet("/MainDatabaseServlet")
public class MainDatabaseServlet extends HttpServlet
{
private static final long serialVersionUID = 1L;
public MainDatabaseServlet()
{
super();
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
try
{
List<MainDatabase> mainDatabases = MainDatabaseUtil.getMainDB();
request.setAttribute("main_list", mainDatabases);
RequestDispatcher dispatcher = request.getRequestDispatcher("/MainDatabaseView.jsp");
dispatcher.forward(request, response);
}
catch (Exception el)
{
el.printStackTrace();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doGet(request, response);
}
}
import java.io.IOException;
导入java.io.PrintWriter;
导入java.sql.SQLException;
导入java.util.List;
导入javax.servlet.RequestDispatcher;
导入javax.servlet.ServletException;
导入javax.servlet.annotation.WebServlet;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入org.json.simple.JSONObject;
导入org.json.simple.JSONArray;
导入javax.servlet.*;
@WebServlet(“/MainDatabaseServlet”)
公共类MainDatabaseServlet扩展了HttpServlet
{
私有静态最终长serialVersionUID=1L;
公共主数据库servlet()
{
超级();
}
public void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException
{
尝试
{
List maindabases=maindabaseutil.getMainDB();
setAttribute(“main_列表”,main数据库);
RequestDispatcher=request.getRequestDispatcher(“/maindabaseview.jsp”);
转发(请求、响应);
}
捕获(异常el)
{
el.printStackTrace();
}
}
public void doPost(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException
{
doGet(请求、响应);
}
}
maindabaseview.jsp
<%--
Created by IntelliJ IDEA.
User: Xenon
Date: 11/15/2018
Time: 9:15 PM
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import ="java.util.ArrayList"%>
<%@ page import ="java.util.List"%>
<html>
<head>
<title>Main Database</title>
</head>
<body>
<h2>Student Table Demo</h2><br>
<hr>
<br>
<table border="1">
<tr>
<th>ID</th>
<th>NAME</th>
<th>QUANTITY</th>
<th>PRICE</th>
</tr>
<c:forEach var="tempData" items="${main_list}">
<tr>
<td>${tempData.proId}</td>
<td>${tempData.proName}</td>
<td>${tempData.proQuantity}</td>
<td>${tempData.proPrice}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
主数据库
学生桌演示
身份证件
名称
量
价格
${tempData.proId}
${tempData.proName}
${tempData.proQuantity}
${tempData.proPrice}
我正在使用IntelliJ Idea。这表明在maindabaseview.jsp中,它无法解析变量main_list
当前输出:显示表列名,但其中没有数据
当程序运行时,预期输出应该在表视图中显示数据库值
请帮忙。谢谢。呼叫stmt.close()代码>和连接关闭()从ResultSet
使用完语句后,请调用方法语句.close以立即释放它正在使用的资源。调用此方法时,其ResultSet对象将关闭
如果在检索结果集之前关闭该语句,结果集将不再有任何数据引用。谢谢。更新后,它仍然没有给出预期的输出。您能显示它显示的内容吗?我想我被“它显示的是表列名,但其中包含数据”弄糊涂了。我已经对输出图像提出了疑问,请检查。Mihir,检查我的答案,让我们知道您到底要如何使用jsp?您是直接访问它还是通过servlet访问它?我是从servlet访问jsp。我正在MainDatabaseServlet.java文件中使用RequestDispatcher。