Java 无法使用servlet将数据从mysql传递到jsp/html表

Java 无法使用servlet将数据从mysql传递到jsp/html表,java,jsp,servlets,jakarta-ee,Java,Jsp,Servlets,Jakarta Ee,我试图在eclipse中使用Tomcat8服务器创建Java web应用程序。 我已经创建了servlet,它将请求转发到jsp页面,并使用来自两个表的数据初始化页面内的表。我一直在网上关注几个关于如何用MySQL数据库中的代码填充html表的例子,但是失败了。我使用MainServlet的doGet方法将本地数据库中的数据获取到列表中,并将其设置为请求中的属性。但当我启动servlet时,jsp表中并没有记录。Servlet连接到db并从中接收记录,我已经调试了这个应用程序。那么我的代码有什么

我试图在eclipse中使用Tomcat8服务器创建Java web应用程序。 我已经创建了servlet,它将请求转发到jsp页面,并使用来自两个表的数据初始化页面内的表。我一直在网上关注几个关于如何用MySQL数据库中的代码填充html表的例子,但是失败了。我使用MainServlet的doGet方法将本地数据库中的数据获取到列表中,并将其设置为请求中的属性。但当我启动servlet时,jsp表中并没有记录。Servlet连接到db并从中接收记录,我已经调试了这个应用程序。那么我的代码有什么问题?我不熟悉html和css、servlet和jsp技术。也许问题在于我使用的css框架是物化css。 以下是我的MainServlet.java代码:

package redirect;

import java.io.IOException;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

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 java.sql.Connection;

import util.Book;


@WebServlet(name="Libbook",urlPatterns={"/libbook"})
public class MainServlet extends HttpServlet 
{
    private static final long serialVersionUID = 1L;

    private static String url = "jdbc:mysql://localhost:3306/Test";
    private static String  user = "user",password = "password";


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {
        List<Book> books = new ArrayList<>();
        Connection connection = null;
        try 
        {
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection(url,user,password);
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery(
                    "SELECT IDBook,Title,AddDate,ISBN,Name,Sirname "
                    + "FROM Book INNER JOIN Author "
                    + "ON Book.IDAuthor = Author.IDAuthor;");
            while (resultSet.next()) 
            {
                Book b = new Book();
                b.setId(resultSet.getInt(1));
                b.setTitle(resultSet.getString(2));
                b.setIsbn(resultSet.getLong(4));
                b.setDate(resultSet.getDate(3).toString());
                b.setName(resultSet.getString(5));
                b.setSirname(resultSet.getString(6));
                books.add(b);
            }
        }
        catch (SQLException | ClassNotFoundException e) 
        {
            e.printStackTrace();
        }
        finally {
            try {if(connection != null)connection.close();}catch (SQLException e) {e.printStackTrace();}
        }
        request.setAttribute("books", books);
        request.getRequestDispatcher("pages/libbook.jsp").forward(request, response);
    }

}

Java在bean类中寻找getter方法来读取数据。 正如您所看到的,bean类书getter方法名称类似于getISBN、getTitle、getAName等。您应该使用类似于jsp的代码

<td><c:out value="${book.iSBN}"/></td>
<td><c:out value="${book.title}"/></td>
<td><c:out value="${book.aName}"/></td>

找到了解决办法。问题出在jsp文件中,我没有包括与c标记scriplet相关的导入:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>

并且没有将jstl-1.2.jar库添加到我的项目中

发布Book类的代码。JavaBean属性以小写字母开头。如果您有一个getter getTitle,JSP中的代码应该是${book.title}。我稍微重建了代码生成的book类JavaBean类,但它仍然没有帮助我
<td><c:out value="${book.iSBN}"/></td>
<td><c:out value="${book.title}"/></td>
<td><c:out value="${book.aName}"/></td>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>