Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法将ArrayList从Servlet显示到JSP_Java_Jsp_Ms Access_Servlets_Intellij Idea - Fatal编程技术网

Java 无法将ArrayList从Servlet显示到JSP

Java 无法将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() {

我使用servlet和jsp来显示Access数据库

MainDatabase.java

    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。