【问题标题】:Retrieving data from database using ArrayList and displaying it in JSP [duplicate]使用 ArrayList 从数据库中检索数据并在 JSP 中显示
【发布时间】:2015-11-22 08:22:40
【问题描述】:

使用的 MySQL 数据库服务器。数据库名:library,表名:book。 表包含具有给定类型和顺序的以下列:

title(varchar), author(varchar), book_id(int)- primary key, count (int), favs (int).

我想在servletJSP 中使用ArrayList 查看该表的所有记录。 这是我的代码: ViewBook (servlet)

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
import p1.*;
public class ViewBook extends HttpServlet
{
    public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException,IOException
{
    PrintWriter out=res.getWriter();    
    try
    {
    Class.forName("com.mysql.jdbc.Driver");
    Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3307/library", "root", "admin");
    PreparedStatement ps=con.prepareStatement("select * from book");
    ResultSet rs=ps.executeQuery();
    ArrayList<Book> books=new ArrayList<Book>();
    while(rs.next())
    {
        Book b= new Book();
        b.bookID=rs.getInt(3);
        b.bookTitle=rs.getString(1);
        b.bookAuthor=rs.getString(2);
        b.bookCopies=rs.getInt(4);
        b.bookFavs=rs.getInt(5);
        books.add(b);
    }
    req.setAttribute("bookslist",books);
    con.close();

    RequestDispatcher rd=req.getRequestDispatcher("/view_book.jsp");
    rd.forward(req,res);

    }
    catch(Exception e)
    {
        out.println(e);
    }
}

}

包 p1 包含以下类:

Book.java

package p1;

public class Book
{
    public int bookFavs,bookID, bookCopies;
    public String bookTitle;
    public String bookAuthor;

}

请求被分派到的JSP-view_book.jsp:

<html>
    <body>
    <head>
    <title>
    View Books
    </title>
    </head>
    <body>
    <table border=2>
    <tr>
        <th>Book ID</th>
        <th>Title</th>
        <th>Author</th>
        <th>No. of copies  AVAILABLE</th>
        <th>Number of favourites</th>
    </tr>

    <%
        ArrayList<Book> dbooks=(ArrayList)request.getAttribute("bookslist");
        Iterator it=dbooks.iterator();
        while(it.hasNext())
        {
            Book b=(Book)it.next();
    %>
    <tr>
        <td><%=b.bookID%></td>
        <td><%=b.bookTitle%></td>
        <td><%=b.bookAuthor%></td>
        <td><%=b.bookCopies%></td>
        <td><%=b.bookFavs%></td>    
    </tr>
    <%
        }
    %>
    </table>

    </body>
</html>

servlet 和 JSP 不工作。我知道这是一个模糊的问题。请指出所犯的错误。如果可能的话还有解决方案!

【问题讨论】:

  • 什么是“不工作”?服务器日志中是否有错误?显示错误?输出错误?
  • 我们需要知道您正在处理的确切错误,以便我们提供帮助。您是否连接到数据库但提取了错误的信息?
  • java.lang.ClassNotFoundException:org.apache.jsp.view_005fbook_jsp 异常:org.apache.jasper.JasperException:java.lang.ClassNotFoundException:org.apache.jsp.view_005fbook_jsp org.apache.jasper。 servlet.JspServletWrapper.getServlet(JspServletWrapper.java:176) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)跨度>
  • 首先,我需要知道代码在逻辑上是否正确。 Servlet 正在编译。 jsp不是。

标签: java mysql jsp servlets arraylist


【解决方案1】:

JSP 文件无法编译,因为 ArrayList 需要导入指令:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import="java.util.*" %>

【讨论】:

    【解决方案2】:

    您必须在您的JSP 中导入您的BookArrayListIterator。否则您的JSP 文件将无法编译。

    您可以使用 , 来导入多个类,而不是像 java.util 中的 ;。如果您指定;,那么您JSP 将抛出异常。

    <%@ page import="java.util.ArrayList,java.util.Iterator, p1.Book" %>
    

    【讨论】:

      【解决方案3】:

      Import java.util.*;在jsp中导入ArrayList类。然后,还导入所需的类,例如Book 类也是。它应该可以工作。

      【讨论】:

        【解决方案4】:

        问题很简单:您不会随时执行 servlet。您必须从另一个 .jsp 调用 servlet,然后在该 servlet 中调用另一个 jsp。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-08-03
          • 1970-01-01
          • 1970-01-01
          • 2012-03-09
          • 2016-02-21
          • 2015-11-23
          • 2019-02-04
          • 2014-09-22
          相关资源
          最近更新 更多