java.io.NotSerializableException:src.Item:如何摆脱对表有相同的重复结果?

时间:2015-04-09 03:51:44

标签: java mysql jsp servlets

我试图通过servet搜索方法将我的db表加载到jsp表。

我的servelt 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>

我还为Item表创建了一个类。就是这样。

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;

}

现在我有了

  

警告:无法为会话9D5E8A2E292E5B711AA327FA51DE1D94序列化会话属性arraylist java.io.NotSerializableException:src.Item

在tomcat日志中

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

编辑01:

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

enter image description here

1 个答案:

答案 0 :(得分:1)

最好是在请求中保存列表而不是在会话中,这样列表只会在请求时间内持续存在,并避免从会话中重用的问题。并且您需要确保每次执行列出它的页面时都会执行从数据库获取该数据的代码。而不是使用request.sendRedirect以这种方式使用request.getRequestDispatcher("index.jsp").forward(request, response);,可以在jsp中访问请求时插入的列表。