使用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 getAllItems() {

		ArrayList itemsList = new ArrayList();
		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 getViewList(String list) {
		int iCount = 5;
		ArrayList itemsList = new ArrayList();
		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页面

商品展示


<% ItemsDAO itemsDAO = new ItemsDAO(); ArrayList itemsList = itemsDAO.getAllItems(); for(Items items : itemsList) { %>
商品
<%=items.getName() %>
产地:<%=items.getCity() %>  价格:<%=items.getPrice() %>
<% } %>

css样式代码如下

后面便是商品详情页

商品详情


<% ItemsDAO itemsDAO = new ItemsDAO(); Items items = itemsDAO.getItemsById(Integer.parseInt(request.getParameter("id"))); if(items != null) { %> <% } %> <% 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); %>
<%=items.getName() %>
产地:<%=items.getCity() %>
价格:<%=items.getPrice() %>¥

您浏览过的商品
<% ArrayList itemsList = itemsDAO.getViewList(list); if(itemsList != null && itemsList.size() > 0) { for(Items i : itemsList) { %>
<%=i.getName() %>
产地:<%=i.getCity() %>  价格:<%=i.getPrice() %>¥
<% } } %>

商品详情页中有两部分内容,一个是指定商品的展示,还有一部分是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);

          %>

最后,上图

使用jsp实现对商品的浏览与保存浏览过的商品记录_第1张图片

使用jsp实现对商品的浏览与保存浏览过的商品记录_第2张图片

使用jsp实现对商品的浏览与保存浏览过的商品记录_第3张图片

使用jsp实现对商品的浏览与保存浏览过的商品记录_第4张图片

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




你可能感兴趣的:(使用jsp实现对商品的浏览与保存浏览过的商品记录)