这是一个关于JavaWeb中简易购物车的做法以及我在做这个程序期间遇到的问题以及怎样解决的(其中包含了oracle数据库代码转化为mysql数据库代码的问题)
注:此代码根据李兴华老师代码改写
第一步 做法前提
电脑装有jdk,tomcat和editplus,mysql(具体安装过程不详写了)
第二步 做法过程
2.1 登录数据库
在装好tomcat 之后(装好就是在打开tomcat以后在网页能够打开localhost:8080),
打开mysql数据库,这是登录,密码为你下载时所设置的密码
然后把代码
/======================= 使用MLDN数据库 =====/
USE world ;
/===== 删除user数据表 =====/
DROP TABLE IF EXISTS user ;
/===== 创建user数据表 =====/
CREATE TABLE member(
mid VARCHAR(50) PRIMARY KEY ,
password VARCHAR(32) NOT NULL ,
name VARCHAR(30) NOT NULL ,
address VARCHAR(200) NOT NULL ,
telephone VARCHAR(100) NOT NULL ,
zipcode VARCHAR(6) NOT NULL
) ;
/===== 插入测试数据 =============/
INSERT INTO member(mid,password,name,address,telephone,zipcode) VALUES
(‘admin’,‘admin’,‘管理员’,‘北京魔乐科技软件学院(www.MLDNJAVA.cn)’,‘01051283346’,‘100088’) ;
INSERT INTO member(mid,password,name,address,telephone,zipcode) VALUES
(‘guest’,‘guest’,‘游客’,‘北京魔乐科技软件学院(www.MLDNJAVA.cn)’,‘01051283346’,‘100088’) ;
INSERT INTO member(mid,password,name,address,telephone,zipcode) VALUES
(‘lixinghua’,‘mldnjava’,‘李兴华’,‘北京魔乐科技软件学院(www.MLDNJAVA.cn)’,‘01051283346’,‘100088’) ;
– 事务提交
COMMIT ;
输入到数据库当中(使用的数据库名字为自己的数据库名字)当输入图中代码后会显示此图,则代表成功。
2.2 购物车数据库
同理
/============= 使用MLDN数据库 =====/
USE world ;
/===== 删除user数据表 =====/
DROP TABLE IF EXISTS user ;
/===== 创建user数据表 =====/
CREATE TABLE member(
mid VARCHAR(50) PRIMARY KEY ,
password VARCHAR(32) NOT NULL ,
name VARCHAR(30) NOT NULL ,
address VARCHAR(200) NOT NULL ,
telephone VARCHAR(100) NOT NULL ,
zipcode VARCHAR(6) NOT NULL
) ;
/===== 插入测试数据 =====/
INSERT INTO member(mid,password,name,address,telephone,zipcode) VALUES
(‘admin’,‘admin’,‘管理员’,‘北京魔乐科技软件学院(www.MLDNJAVA.cn)’,‘01051283346’,‘100088’) ;
INSERT INTO member(mid,password,name,address,telephone,zipcode) VALUES
(‘guest’,‘guest’,‘游客’,‘北京魔乐科技软件学院(www.MLDNJAVA.cn)’,‘01051283346’,‘100088’) ;
INSERT INTO member(mid,password,name,address,telephone,zipcode) VALUES
(‘lixinghua’,‘mldnjava’,‘李兴华’,‘北京魔乐科技软件学院(www.MLDNJAVA.cn)’,‘01051283346’,‘100088’) ;
– 事务提交
COMMIT ;
/===== 使用MLDN数据库 =====/
USE world ;
/===== 删除product数据表 =====/
DROP TABLE IF EXISTS product ;
/===== 创建product数据表 =======================/
CREATE TABLE product(
pid int PRIMARY KEY ,
name VARCHAR(50) NOT NULL ,
note VARCHAR(50) NOT NULL ,
price int NOT NULL ,
amount int
) ;
– 插入测试数据
INSERT INTO product(pid,name,note,price,amount) VALUES (1,‘Oracle数据库开发’,‘基本SQL、DBA入门’,69.8,30) ;
INSERT INTO product(pid,name,note,price,amount) VALUES (2,‘Java开发实战经典’,‘一本最好的Java入门书籍’,79.8,30) ;
INSERT INTO product(pid,name,note,price,amount) VALUES (3,‘Java WEB开发实战经典’,‘JSP、Servelt、AJAX、Struts’,99.8,20) ;
INSERT INTO product(pid,name,note,price,amount) VALUES (4,‘Spring开发手册’,‘Spring、MVC、标签’,57.9,20) ;
INSERT INTO product(pid,name,note,price,amount) VALUES (5,‘Hibernate实战精讲’,‘ORMapping’,87.3,10) ;
INSERT INTO product(pid,name,note,price,amount) VALUES (6,‘Struts 2.0权威开发’,‘WebWork、Struts 2.0’,70.3,23) ;
INSERT INTO product(pid,name,note,price,amount) VALUES (7,‘SQL Server指南’,‘SQL Server数据库’,29.8,11) ;
INSERT INTO product(pid,name,note,price,amount) VALUES (8,‘windows指南’,‘基本使用’,23.2,20) ;
INSERT INTO product(pid,name,note,price,amount) VALUES (9,‘linux操作系统’,‘原理、内核、基本命令’,37.9,10) ;
INSERT INTO product(pid,name,note,price,amount) VALUES (10,‘企业开发架构’,‘企业开发原理、成本、分析’,109.5,20) ;
INSERT INTO product(pid,name,note,price,amount) VALUES (11,‘分布式开发’,‘RMI、EJB、Web服务’,200.8,10) ;
INSERT INTO product(pid,name,note,price,amount) VALUES (12,‘SEAM(JSF + EJB 3.0)’,‘JSF、SEAM、EJB 3.0’,80.2,15) ;
– 事务提交
COMMIT ;
2.3 登录界面
在mysql8.0版本里需要把
public static final String DBDRIVER = “oracle.jdbc.driver.OracleDriver” ;
public static final String DBURL = “jdbc:oracle:thin:@localhost:1521:MLDN” ;
的代码换成
public static final String DBDRIVER = “com.mysql.cj.jdbc.Driver” ;
public static final String DBURL = “jdbc:mysql://localhost:3306/world?characterEncoding=utf8&useSSL=false&serverTimezone=UTC” ;
则可以连接了
因为tomcat没有装虚拟目录,所以可以在tomcat下打开webapps中新建一个tt的文件夹
把代码以及数据库文件放进该文件夹中,这样就可以在网页中打开了 localhost:8080/tt/文件名。
登录进去为如图所示
2.4
登录进去后商品的连接如登录相同
只不过因为代码中的数据库来源于oracle数据库,所以我们需要将oracle数据库转化为mysql数据库
原本代码为
String sql = “SELECT COUNT(pid) FROM product " +
" WHERE name LIKE ? OR note LIKE ? OR price LIKE ? OR amount LIKE ? " ;
pstmt = conn.prepareStatement(sql) ;
pstmt.setString(1,”%"+keyWord+"%") ;
pstmt.setString(2,"%"+keyWord+"%") ;
pstmt.setString(3,"%"+keyWord+"%") ;
pstmt.setString(4,"%"+keyWord+"%") ;
rs = pstmt.executeQuery() ;
改写为
String sql = “SELECT COUNT(pid) FROM product " +
" WHERE pid LIKE ? OR name LIKE ? OR note LIKE ? OR price LIKE ? OR amount LIKE ? " ;
pstmt = conn.prepareStatement(sql) ;
pstmt.setString(1,”%"+keyWord+"%") ;
pstmt.setString(2,"%"+keyWord+"%") ;
pstmt.setString(3,"%"+keyWord+"%") ;
pstmt.setString(4,"%"+keyWord+"%") ;
pstmt.setString(5,"%"+keyWord+"%") ;
rs = pstmt.executeQuery() ;
第二处原本代码为
sql = “SELECT * FROM ( " +
" SELECT pid,name,note,price,amount,ROWNUM rn " +
" FROM product WHERE (name LIKE ? OR note LIKE ? OR price LIKE ? OR amount LIKE ? ) AND " +
" ROWNUM<=? ORDER BY pid) temp " +
" WHERE temp.rn>? " ;
pstmt = conn.prepareStatement(sql) ;
pstmt.setString(1,”%"+keyWord+"%") ;
pstmt.setString(2,"%"+keyWord+"%") ;
pstmt.setString(3,"%"+keyWord+"%") ;
pstmt.setString(4,"%"+keyWord+"%") ;
pstmt.setInt(5,currentPage * lineSize) ;
pstmt.setInt(6,(currentPage-1) * lineSize) ;
rs = pstmt.executeQuery() ;
改写为
sql = “SELECT * FROM product WHERE pid LIKE ? OR name LIKE ?OR note LIKE ? OR price LIKE ? OR amount LIKE ? ORDER BY pid LIMIT ? , ? " ;
pstmt = conn.prepareStatement(sql) ;
pstmt.setString(1,”%"+keyWord+"%") ;
pstmt.setString(2,"%"+keyWord+"%") ;
pstmt.setString(3,"%"+keyWord+"%") ;
pstmt.setString(4,"%"+keyWord+"%") ;
pstmt.setInt(5,currentPage * lineSize) ;
pstmt.setInt(6,(currentPage-1) * lineSize) ;
pstmt.setInt(7,lineSize) ;
rs = pstmt.executeQuery() ;
其余就类似,最终效果如图