使用jsp实现对商品的浏览与保存浏览过的商品记录

首先是创建数据库的连接池,代码如下

	private static final String driver = "com.mysql.jdbc.Driver";
	private static final String url = "jdbc:mysql://127.0.0.1:3306/java6?useUnicode=true&characterEncoding=utf-8&useSSL=false";
	private static final String user = "user01";
	private static final String password = "User01User01!";
	private static Connection conn = null;

	static {
		try {
			Class.forName(driver);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static Connection getConn() {

		try {
			if (conn == null) {
				conn = DriverManager.getConnection(url, user, password);
				return conn;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return conn;
	}

然后是创建数据库实体类

private int id; //商品编号
	private String name; //名称
	private String city; //产地
	private int price; //价格
	private int number; //数量
	private String picture; //图片

接着便是获得数据库所有商品的查询代码

//获得所有商品
	public ArrayList<Items> getAllItems() {

		ArrayList<Items> itemsList = new ArrayList<Items>();
		conn = JDBCPool.getConn();

		try {
			pstmt = conn.prepareStatement("select * from items");
			rs = pstmt.executeQuery();
			while (rs.next()) {
				Items items = new Items();
				items.setId(rs.getInt("id"));
				items.setName(rs.getString("name"));
				items.setCity(rs.getString("city"));
				items.setNumber(rs.getInt("number"));
				items.setPrice(rs.getInt("price"));
				items.setPicture(rs.getString("picture"));
				itemsList.add(items);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				if (rs != null) {
					rs.close();
					rs = null;
				}
				if(pstmt != null) {
					pstmt.close();
					pstmt = null;
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		return itemsList;
	}

接着是根据指定Id获得指定商品的代码

	//通过商品id获得商品
	public Items getItemsById(int id) {
		
		conn = JDBCPool.getConn();
		try {
			pstmt = conn.prepareStatement("select * from items where id=?");
			pstmt.setInt(1, id);
			rs = pstmt.executeQuery();
			if(rs.next()) {
				Items item = new Items();
				item.setId(rs.getInt("id"));
				item.setName(rs.getString("name"));
				item.setCity(rs.getString("city"));
				item.setPrice(rs.getInt("price"));
				item.setNumber(rs.getInt("number"));
				item.setPicture(rs.getString("picture"));
				return item;
			} else {
				return null;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		} finally {
			try {
				if(rs != null) {
					rs.close();
					rs = null;
				}
				if(pstmt != null) {
					pstmt.close();
					pstmt = null;
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}

然后就是将客户端保存的商品Id的cookie值传入方法中,得到浏览过的商品,只显示前五个

	//通过客户端保存的cookik获得前五条记录
	public ArrayList<Items> getViewList(String list) {
		int iCount = 5;
		ArrayList<Items> itemsList = new ArrayList<Items>();
		String[] arr = list.split(",");
		if(arr != null && arr.length > 0) {
			if(arr.length >= 5) {
				for(int i = arr.length - 1; i >= arr.length - iCount; i--) {
					itemsList.add(getItemsById(Integer.parseInt(arr[i])));
				}
			} else {
				for(int i = arr.length - 1; i >= 0; i--) {
					itemsList.add(getItemsById(Integer.parseInt(arr[i])));
				}
			}
			return itemsList;
		} else {
			return null;
		}
	}

然后就是展示所有商品的jsp页面

<h1>商品展示</h1>
	<hr />
	<center>
	<table border="0" cellpadding="0" cellspacing="0" width="700">
		<tr>
			<td>
			<%
				ItemsDAO itemsDAO = new ItemsDAO();
				ArrayList<Items> itemsList = itemsDAO.getAllItems();
				for(Items items : itemsList) {
			%>
				<div>
					<dl>
						<dt>
							<a href="details.jsp?id=<%=items.getId()%>"><img alt="商品" src="pic/<%=items.getPicture() %>" width="120" height="90" border="1"/></a>	
						</dt>
						<dd class="dd_name"><%=items.getName() %></dd>
						<dd class="dd_city">产地:<%=items.getCity() %>  价格:<span id="redPrice"><%=items.getPrice() %></span></dd>
					</dl>
				</div>
				<%
				}
				%>
			</td>
		</tr>
	</table>
	</center>

css样式代码如下

<style type="text/css">
	   div {
	      float:left;
	      margin: 10px;
	   }
	   div dd {
	      margin:0px;
	      font-size:10px;
	   }
	   div dd.dd_name {
	      color:blue;
	   }
	   div dd.dd_city {
	      color:#000;
	   }
	   #redPrice {
	   	  color:red;
	   }
	</style>
后面便是商品详情页

<h1>商品详情</h1>
	<hr />
	<table border="0" cellpadding="0" cellspacing="0" width="700" height="60">
		<tr>
		<%
			ItemsDAO itemsDAO = new ItemsDAO();
			Items items = itemsDAO.getItemsById(Integer.parseInt(request.getParameter("id")));
			if(items != null) {
		%>
		 <td width="70%" valign="top">
             <table>
               <tr>
                 <td rowspan="4"><img src="pic/<%=items.getPicture() %>" width="200" height="160"/></td>
               </tr>
               <tr>
                 <td><B><%=items.getName() %></B></td> 
               </tr>
               <tr>
                 <td>产地:<%=items.getCity() %></td>
               </tr>
               <tr>
                 <td>价格:<%=items.getPrice() %>¥</td>

               </tr> 
             </table>
          </td>
          <%
			}
          %>
          <%
          	String list = "";
          	Cookie[] cookies = request.getCookies();
          	if(cookies != null && cookies.length > 0) {
          		for(Cookie cookie : cookies) {
          			if(("ListViewCookie").equals(cookie.getName())) {
          				list = cookie.getValue();
          			}
          		}
          		
          	}
          	
          	list += request.getParameter("id") + ",";
          	
          	String[] arr = list.split(",");
          	if(arr != null && arr.length > 0) {
          		if(arr.length >= 1000) {
          			list = "";
          		}
          	}
          		
          	Cookie cookie = new Cookie("ListViewCookie",list);
          	response.addCookie(cookie);

          %>
           <td width="30%" bgcolor="#EEE" align="center">
             <br>
             <b>您浏览过的商品</b><br>
			<%
				ArrayList<Items> itemsList = itemsDAO.getViewList(list);
				if(itemsList != null && itemsList.size() > 0) {
					for(Items i : itemsList) {

			%>
             <div>
             <dl>
               <dt>
                 <a href="details.jsp?id=<%=i.getId()%>"><img src="pic/<%=i.getPicture() %>" width="120" height="90" border="1"/></a>
               </dt>
               <dd class="dd_name"><%=i.getName() %></dd> 
               <dd class="dd_city">产地:<%=i.getCity() %>  价格:<%=i.getPrice() %>¥ </dd> 
             </dl>
             </div>
             <%
				
				}
			}
             %>
          </td>
		</tr>
	</table>

商品详情页中有两部分内容,一个是指定商品的展示,还有一部分是5条浏览记录的展示,其中比较重要的便是cookie的创建,而cookie的值便是商品的id值,cookie部分代码如下

          <%
          	String list = "";
          	Cookie[] cookies = request.getCookies();
          	if(cookies != null && cookies.length > 0) {
          		for(Cookie cookie : cookies) {
          			if(("ListViewCookie").equals(cookie.getName())) {
          				list = cookie.getValue();
          			}
          		}
          		
          	}
          	
          	list += request.getParameter("id") + ",";
          	
          	String[] arr = list.split(",");
          	if(arr != null && arr.length > 0) {
          		if(arr.length >= 1000) {
          			list = "";
          		}
          	}
          		
          	Cookie cookie = new Cookie("ListViewCookie",list);
          	response.addCookie(cookie);

          %>

最后,上图





最后的最后,再为慕课网打下广告吧,我的这些知识都是在慕课网学的,个人感觉网站还不错,不仅有教程,还有免费素材和源代码可以下载,有时间的小伙伴可以去看看上面有什么资源适合你学的.大笑




  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值