物车的逻辑业务的实现(MyCartBO.java),能够满足用户的添加,删除,修改,清空,查看购物车的信息!
ConnDB.java(这只是一个得到数据库连接和类)
01 //连接数据库
02 package cn.fqfx.model;
03
04 import java.sql.*;
05
06 public class ConnDB
07 {
08 //定义一个连接
09 private Connection ct = null;
10
11 //得到连接
12 public Connection getConn()
13 {
14 try {
15 //加载驱动
16 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
17 //得到连接
18 ct = DriverManager.getConnection
19 ("jdbc:microsoft:sqlserver://localhost:1433;databaseName=whdb2","sa","sa");
20 } catch (Exception e) {
21 e.printStackTrace();
22 // TODO: handle exception
23 }
24 return ct;
25 }
26 }
GoodsBean.java(这个文件主要用来保存从数据库的goods表中取得的信息)
01 //这是一个与Goods表对应的java bean
02 //表的信息可以保存在这里面
03 package cn.fqfx.model;
04
05 public class GoodsBean
06 {
07 //分别与goods表的各个字段相对应
08 private int goodsId = 0;
09 private String goodsName = "";
10 private String goodsInfo = "";
11 private String goodsPlace = "";
12
13
14 public int getGoodsId() {
15 return goodsId;
16 }
17 public void setGoodsId(int goodsId) {
18 this.goodsId = goodsId;
19 }
20
21
22 public String getGoodsName() {
23 return goodsName;
24 }
25 public void setGoodsName(String goodsName) {
26 this.goodsName = goodsName;
27 }
28
29
30 public String getGoodsInfo() {
31 return goodsInfo;
32 }
33 public void setGoodsInfo(String goodsInfo) {
34 this.goodsInfo = goodsInfo;
35 }
36
37
38 public String getGoodsPlace() {
39 return goodsPlace;
40 }
41 public void setGoodsPlace(String goodsPlace) {
42 this.goodsPlace = goodsPlace;
43 }
44 }
MyCartBO.java(这个就是购物车,主要以HashMap实现存放用户想买的商品id,商品数量.然后,通过方法的调用把购物车中的信息返回到界面让用户看)
001 //这是一个业务对象,相当于一个购物车!!
002 //-->使用说明:这个购物车最好是在session中使用,因为一个用户一辆购物车,这样东西才不会一直丢
003 package cn.fqfx.model;
004
005 import java.sql.*;
006 import java.util.*;
007
008 public class MyCartBO
009 {
010 //定义几个数据库的连接
011 private Connection ct = null;
012 private PreparedStatement ps = null;
013 private ResultSet rs = null;
014
015 //定义一个HashMap充当购物车,第一个用来存放goodsId,值就是goods的数量
016 HashMap hm = new HashMap();
017
018 //当用户想购买的时候,就加入 购物车里面
019 public void addGoods(String goodsId, String goodsNumber)
020 {
021 hm.put(goodsId, goodsNumber);
022 }
023
024 //当用户不想要东西的时候,就把它删除
025 public void delGoods(String goodsId)
026 {
027 hm.remove(goodsId);
028 }
029
030 //当用户什么也不想要的时候,就清空它
031 public void clearGoods()
032 {
033 hm.clear();
034 }
035
036 //当用户想更换物品的数量的时候,就更新一下
037 public void upGoods(String goodsId, String newNumber)
038 {
039 //还是用加入物品的方法,因为会自动替换掉它,如果货物名字想换,那说明用户想删除了
040 hm.put(goodsId, newNumber);
041 }
042
043 //得到单个物品的数量,要用的话把它转成int型再使用
044 public String getGoodsNumberByGoodsId(String goodsId)
045 {
046 return hm.get(goodsId);
047 }
048
049 //把购物车的东西全部取出来,放入ArrayList里面
050 public ArrayList getAllGoods()
051 {
052 //要知道这个ArrayList是用来放GoodsBean,因为GoodsBean与表相对应,所以可以保存物品的信息
053 ArrayList al = new ArrayList();
054 try {
055 //得到连接
056 ct = new ConnDB().getConn();
057
058 //想一个sql语句,主要是取得goodsId,就可以全部取出来给外面的使用
059 String sql = "select * from goods where goodsId in (";
060 Iterator it = hm.keySet().iterator();
061 while(it.hasNext())
062 {
063 //把goodsId取出来
064 String goodsId = it.next();
065 if(it.hasNext()){
066 sql += goodsId+",";
067 }else{
068 sql += goodsId+")";
069 }
070 }
071
072 //创建ps,上面把sql语句组织好
073 ps = ct.prepareStatement(sql);
074
075 //执行
076 rs = ps.executeQuery();
077
078 //取出来,放在GoodsBean,再把GoodsBean一个个放入ArrayList中,显示的页面就可以调用了
079 while(rs.next())
080 {
081 GoodsBean gb = new GoodsBean();
082 gb.setGoodsId(rs.getInt(1));
083 gb.setGoodsName(rs.getString(2));
084 gb.setGoodsInfo(rs.getString(3));
085 gb.setGoodsPlace(rs.getString(4));
086
087 //把gb放入al,相当于保存了从数据库中获得的数据
088 al.add(gb);
089 }
090 } catch (Exception e) {
091 e.printStackTrace();
092 // TODO: handle exception
093 }finally{
094 this.closeDBResource();
095 }
096 return al;
097 }
098
099 //关闭数据库资源
100 public void closeDBResource()
101 {
102 try {
103 if(rs != null){
104 rs.close();
105 rs = null;
106 }
107 } catch (Exception e2) {
108 e2.printStackTrace();
109 // TODO: handle exception
110 }
111 try {
112 if(ps != null){
113 ps.close();
114 ps = null;
115 }
116 } catch (Exception e2) {
117 e2.printStackTrace();
118 // TODO: handle exception
119 }
120 try {
121 if(ct != null){
122 ct.close();
123 ct= null;
124 }
125 } catch (Exception e2) {
126 e2.printStackTrace();
127 // TODO: handle exception
128 }
129 }
130 }