<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="com.bean.Item" %>
<%@ page import="com.dao.ItemsDao" %>
<%@ page import="java.util.List" %>
<html>
<head>
<title>商品列表</title>
<style type="text/css">
div{
float:left;
margin: 10px;
}
div dd{
margin:0px;
font-size:10pt;
}
div dd.dd_name
{
color:blue;
}
div dd.dd_city
{
color:#000;
}
</style>
</head>
<body>
<h1>商品展示</h1>
<hr>
<center>
<table width="750" height="60" cellpadding="0" cellspacing="0" border="0">
<tr>
<td>
<!-- 商品循环开始 -->
<%
ItemsDao itemsDao = new ItemsDao();
List<Item> items = itemsDao.getItems();
Item item = null;
if (items!=null&&items.size()>0) {
for (int i =0;i<items.size();i++){
item = items.get(i);
%>
<div>
<dl>
<dt>
<a href="details.jsp?id=<%=item.getId()%>"><img src="images/<%=item.getPicture()%>" width="120" height="90" border="1"/></a>
</dt>
<dd class="dd_name"><%=item.getName() %></dd>
<dd class="dd_city">产地:<%=item.getCity() %> 价格:¥ <%=item.getPrice() %></dd>
</dl>
</div>
<!-- 商品循环结束 -->
<%
}
}
%>
</td>
</tr>
</table>
</center>
</body>
</html>public class Item {
private int id; // 商品编号
private String name; // 商品名称
private String city; // 产地
private int price; // 价格
private int number; // 库存
private String picture; // 商品图片
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getPicture() {
return picture;
}
public void setPicture(String picture) {
this.picture = picture;
}
}public class ItemsDao {
public List<Item> getItems() {
Connection conn = null;
Item item = null;
ResultSet rs =null;
List<Item> items = new ArrayList<Item>();
conn = DBHelper.getConn();
String sql = " select * from items ";
PreparedStatement ps = null;
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()){
item.setId(rs.getInt("id"));
item.setName(rs.getString("name"));
item.setCity(rs.getString("city"));
item.setNumber(rs.getInt("number"));
item.setPicture(rs.getString("picture"));
item.setPrice(rs.getInt("price"));
items.add(item);
item = null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}finally {
// 释放数据集对象
if (rs != null) {
try {
rs.close();
rs = null;
} catch (Exception ex) {
ex.printStackTrace();
}
}
// 释放语句对象
if (ps != null) {
try {
ps.close();
ps = null;
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
return items;
}
public Item getItem( int id) {
Connection conn = null;
Item item = null;
ResultSet rs =null;
conn = DBHelper.getConn();
String sql = " select * from items WHERE id = ? ";
PreparedStatement ps = null;
try {
ps = conn.prepareStatement(sql);
ps.setInt(1,id);
rs = ps.executeQuery();
if(rs.next()){
item.setId(rs.getInt("id"));
item.setName(rs.getString("name"));
item.setCity(rs.getString("city"));
item.setNumber(rs.getInt("number"));
item.setPicture(rs.getString("picture"));
item.setPrice(rs.getInt("price"));
return item;
}else
return null;
} catch (Exception e) {
e.printStackTrace();
return null;
}finally {
// 释放数据集对象
if (rs != null) {
try {
rs.close();
rs = null;
} catch (Exception ex) {
ex.printStackTrace();
}
}
// 释放语句对象
if (ps != null) {
try {
ps.close();
ps = null;
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
}public class DBHelper {
private static Connection conn;
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConn(){
if (conn==null)
try {
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/imooc",
"root", "2503391049");
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void main(String[] args) {
Connection connection = getConn();
if (connection!=null)
System.out.println("连接成功");
else
System.out.println("连接失败");
}
}你的 ItemsDao类中的 getItems()方法中的 item你创建的时候写的是:“Item item = null;”这样你给 item实例 的属性赋值调用 Item类 的方法的时候,系统认不出来这个 item引用 是 Item类型 的,所以无法赋值会直接报错,导致程序并没有执行,所以你的 items数组 中其实什么也没加进去是空的;
所以你的创建item是应该调用 Item类的构造方法:“Item item = new Item();”,这样系统才可以认出这个 item引用 是 Item类型 的引用;
另外while循环中最后一行,你把item引用置为空了而且又没有新创建一个 Item类型的实例,这样你第二次执行循环会出同样的错,而 ArrayList的add 存的只是对象的引用,并不是把对象内容重新copy一份再把新引用存进去,如果引用所指向的实例内容发生变化的话,ArrayList中引用指向的实例内容也随之发生变化。
所以 你应该把 item实例 的创建写进循环内部,每次循环都创建一个 item新实例,再进行赋值并添加到 items数组 中;
如果不是每次循环每次新建的话,你最后 items数组 中存的其实是同一个item的引用,也就是说虽然有十条绳子,但是牵的是一条狗。最终会导致 items数组 中的内容都一样,页面里显示的是同一个商品,只不过显示了十个。
你index.jsp中 item的创建 写的也是 Item item = null;
你 index.jsp 第一行的写法和文件导入的写法,不清楚你写的对不对,可以参考看下老师的:
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%@ page import="entity.Items"%>
<%@ page import="dao.ItemsDAO"%>
你数据库里有数据么?