书城系统

秉持法则
       前端靠模板,后端自己编。


一、代码打包至Git

Alt
添加自己的URL(推荐SSH)。

Alt

系统代码连接

前端模板连接




二、踩坑汇总

1、丢失样式

       请求转发会丢样式的原因是:转发后URL没变,还是后端的路径。如果前端引用的css文件写的是相对路径的话,就会相对于当前的URL寻找文件,很有可能找不到。
       解决手法:直接改为重定向或者将引入css文件的路径改为绝对路径。

2、JDBC执行修改函数的返回值问题

       原生的JDBC和Mybatis更改函数默认返回的都不是受影响的行数,而是与数据库表中匹配的行数。
如果想要返回受影响的行数,需要在URL中添加?useAffectedRows=true

3、input标签属性问题

readonly和disabled它们都能够做到使用户不能够更改表单域中的内容。
readonly接受值更改而且可以往后端回传数据,而disabled不回传数据(不管是get还是post)。


4、Ajax异步的表单验证

之前写了一个全局变量就妄想通过前端验证表单,吃饭前一想逻辑肯定不对啊。比如你中间的input都是错的,但是只有最后的input符合要求,讲道理也会成功提交到后台,但是 吃完饭后试了试,结果和我想的不一样,请求到达不了后端。下午思考了一会,觉得可能是Ajax异步的问题,之后改成同步的,果然那个一个全局变量的垃圾代码把请求数据提交到后台了。
所以,每一项都需要一个全局标记位,或者就是直接疯狂&&。

5、button按钮刷新问题

因为button标签(按钮)点击后会提交表单。要想点击button但是又不刷新,可以直接在中添加属性 type=“button”。

6、smartupload.jar包上传文件的数据乱码问题

用smartupload.jar包上传文件的表单数据提交到数据库,出现乱码—>反编译这个jar包,解决乱码。
本质是因为这个jar包的默认编码格式是GBK格式。

① 下载反编译工具jd

        Jd Download

② 打开要反编译的jar包

Alt
选中要反编译的字节码文件。Ctrl+S保存为java文件。

③ 在IDE里面建立上面圈出来的包,把刚刚的java代码放到该目录下面
④ 修改java代码,确保不报错

修改地方1:public void upload()函数里面替换为如下:
Alt
修改地方2:private String getDataHeader()函数里面替换为如下:
Alt

⑤ 将java代码编译成class字节码文件
⑥ 将新的class文件替换jar包解压后对应的class文件
⑦ 重新压成jar包

此处提供一个反编译修改后的smartupload.jar包

        smartupload.jar Download


7、smartupload插件new 对象问题

smartupload插件new 对象,实测是单例对象。
第i次上传需要指定 File file = new SmartUpload().getFiles().getFile(i);

8、数据库表名冲突问题

一小时的BUG,在dos窗口疯狂创建order的表。逐行排查,猜测可能是表名问题。
因为order是数据库的一个内置关键字所以我们在写查询语句的时候要注意加上`表名称,创建表的时候也要加上反引号,数字1旁边的符号。
Alt

9、Dos窗口的mysql显示的中文乱码

dos窗口的编码格式是操作系统默认的GBK2312而不是UTF-8。所以直接用Navicat看插入的数据编码格式正常就可以了。

10、HashMap问题

HashMap插入相同的key,会覆盖掉上一次的键值。





三、系统设计

1、数据库表的设计

Alt
用户(user)可添加多个收货地址(address),每个收货地址对应一份订单(order),每份订单对应一份付款记录单(pay),每份订单还对应一份评价表(evaluation)。一份订单对应多个购买物品明细表(item),以及多个购物车对象(cart),每个物品明细表或购物车都对应一张产品表(product),产品表隶属于分类表(category)。



2、管理员端功能明细

Alt

① 用户管理明细

新增用户,修改用户,单个删除、批量删除用户,关键字模糊查询,自定义分页查询,查询所有用户。

② 分类管理明细

新增分类,修改分类,单个删除分类,查询所有分类。

③ 图书管理

新增图书,修改图书,删除图书,查询所有图书。

④ 订单管理

关闭订单的功能,查询所有订单。

⑤ 评论管理

查询所有评论。

⑥改密

Ajax异步方式修改密码,改完后需要重新登陆。

⑦ 权限控制

管理员有关的界面都进行了权限控制,必须先登录才可访问。也可从管理员界面进入到用户界面。
Alt
点击进入后台,即可返回管理员界面。



3、用户端功能明细

Alt

① 查书

根据category分类表查询图书分类,选择对应类别的图书查询。

② 添加购物车or立即购买

添加购物车会新建购物车对象,立即购买直接跳转到购物车。
在购物车界面异步刷新数据库item表中购买的数量。

③ 确认订单

支付功能未实现,可以选择不同的支付方式和快递。可以选择期望的收货地址,也可以异步创建新的收货地址。

④ 评价商品

确认收货后即可评价商品。评价分数按♥的个数分为100,80,60,40,20,最低20(默认)。并且可以查看自己评价过的商品。

⑤ 用户个人信息修改

Alt

⑥改密

Alt
Alt
邮箱验证和直接改密码。邮箱验证(网易邮箱)不需要输入原密码。这个账号邮箱是瞎填的。。。

⑦ 推荐和浏览记录

规模为7的队列实现保存浏览记录。
书本详情界面的推荐是推荐同一大类下面的书籍,订单支付成功后那5秒钟的推荐是推荐同一小类下面的尚未购买过的书。



4、数据库连接池技术

采用DBCP连接池。数据库连接池是为了解决资源的频繁分配﹑释放所造成的问题。
数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。
我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。





四、现存问题

限于前端能力有限。。。
1、创建订单的时候选择的用户收货地址只能选第一个。
2、查看订单的评价也只能看第一条评价。

发布了33 篇原创文章 · 获赞 5 · 访问量 2294

猜你喜欢

转载自blog.csdn.net/cj1561435010/article/details/103881537