JavaWeb购物平台小项目
最近也快到期末了,web程序设计的课程也迎来了第一次大作业,内容是要做一个购物平台,用户能够添加购物车,购买商品,留言,反馈等,而管理员可以添加商品,浏览反馈,查看账务等,花了一周时间终于做好了。
首先是数据库的设计
项目整体的架构如下,没有用到特殊复杂的技术,只是简单的使用了JavaBean,Servlet等基础内容,毕竟还没有学到JEE和Spring,目前还只自己多去了解。
整个项目的功能如下:
在数据库的连接上采用了单例模式,将构造函数设为私有,只能在类内部实例化一个类对象,其他类想要获取一个实例时,只能通过get方法获取。
public class ConnectDB {
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/goods";
static final String USER = "root";
static final String PASS = "LZSF2239";
Connection con;
Statement stm;
ResultSet resSet;
private static ConnectDB db;
private ConnectDB() throws SQLException{
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("驱动注册成功");
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("驱动注册失败");
}
try {
con = DriverManager.getConnection(DB_URL,USER,PASS);
System.out.println("数据库连接成功");
stm = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
}
catch (Exception e){
System.out.println("数据库连接失败");
}
}
public static ConnectDB getDb() throws SQLException {
if (db == null){
db = new ConnectDB();
}
return db;
}
public ResultSet query(String sql) throws SQLException{
resSet = stm.executeQuery(sql);
return resSet;
}
public int update(String sql) throws SQLException{
int rows = stm.executeUpdate(sql);
return rows;
}
public void close() throws SQLException{
if (resSet != null)resSet.close();
if (stm != null)stm.close();
if (con != null)con.close();
}
}
另外在结算时,对商品库存的更新采用乐观锁的方式,乐观锁即乐观的认为数据一般不会冲突,只有需要提交数据时才对数据进行检测。
String sqlminus = String .format("update goods set count=count-%s where goods_id='%s' and count-%s>=0",
shoppingcarBean.getCount(),shoppingcarBean.getGoods_id(),shoppingcarBean.getCount()
);
其余没有用到什么特别的东西。整体上感觉项目还有很多不完善的地方,例如类之间的耦合过高,没有对数据库传入的数据进行过滤不能避免SQL注入等,后续的练习中还需要多加学习。
项目运行结果如下: