java.io.NotSerializableException: src.Item : 如何摆脱与 table 相同的重复结果?

java.io.NotSerializableException: src.Item : How to get rid of having same repeated results to table?

我试图通过服务器搜索方法将我的数据库的 table 加载到 jsp table。

我的servert serch查询是这样的。

PreparedStatement state = null;
ResultSet rs = null;


rs = state.executeQuery(search_sql);

HttpSession session = request.getSession();
session.setAttribute("arraylist", arList);

request.setAttribute("list", arList);
System.out.println("one");

response.sendRedirect("index.jsp");

请考虑这不是全部代码。

这是 jsp 页面代码。

    <tbody>
        <%
            List<Item> l = (ArrayList<Item>) session.getAttribute("arraylist");
            if (l != null) {
                for (Item it : l) {
        %>

        <tr>
            <td><%=it.getItem_id()%></td>
            <td><%=it.getName()%></td>
            <td><%=it.getUnit_price()%></td>
            <td><%=it.getQty()%></td>

        </tr>
        <%}
        %> 
    </tbody>

我还为项目 table 做了一个 class。就是这个。

package src;

import java.math.BigDecimal;

public class Item {
  private int item_id;

public int getItem_id() {
    return item_id;
}

public void setItem_id(int item_id) {
    this.item_id = item_id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public BigDecimal getUnit_price() {
    return unit_price;
}

public void setUnit_price(BigDecimal unit_price) {
    this.unit_price = unit_price;
}

public int getQty() {
    return qty;
}

public void setQty(int qty) {
    this.qty = qty;
}
private String name;
private BigDecimal unit_price;
private int qty;

}

现在我有

WARNING: Cannot serialize session attribute arraylist for session 9D5E8A2E292E5B711AA327FA51DE1D94 java.io.NotSerializableException: src.Item

在 tomcat 日志中。我的 jsp 的输出也只显示一个结果。请帮我。我的处境非常复杂。 :( 和截止日期。希望你能理解这个问题。谢谢。

编辑 01:

我通过实现 serializeble 接口摆脱了这个错误。现在我仍然有同样的错误。我只得到上次保存的项目详细信息的结果。

将您的列表保存在请求中比保存在 session 中更好,这样列表只在请求时有效并避免被 重新利用的问题 来自 session。并且您需要确保每次执行列出它的页面时,都会执行从数据库中获取该数据的代码。而不是使用 request.sendRedirect,而是使用 request.getRequestDispatcher("index.jsp").forward(request, response);,这样根据请求插入的列表将可以在 jsp.

中访问