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
.
中访问
我试图通过服务器搜索方法将我的数据库的 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
.