GitHub地址:https://github.com/mdxiaohu/onlineBookCity
项目介绍
本项目讲述了基于B/S模式的思源线上书城系统的设计与实现。所谓的网上书店系统是通过网站推广互联企业的商品和服务,并使客户随时可以了解企业和企业的商品,为客户提供在线服务和订单处理功能。
从长期的战略目标来说,思源线上书城系统不仅是图书品和服务的推广,而是通过Internet、企业内部网和企业外部网,将买家与卖家、厂商和合作伙伴紧密结合在了一起,因而消除了时间与空间带来的障碍。
思源线上书城系统提供了多种检索途径,可以从分类、新品、特价等途径进行检索,快捷准确。与传统销售方式相比,在线销售能够提供海量商品信息。书城系统最突出的优点是:不再限制消费者的购买时段,扩大和巩固了客户群,从而增加了商品企业的核心竞争力,节省实际开店时需要投入的成本和租用费用。
项目说明
1.项目模块
1)用户管理模块(3天)user
用户登录,用户注册,邮箱的验证
2)产品浏览模块(2天)main
产品主界面,分类浏览界面
3)购物车模块(1.5天)cart
购买,删除,恢复,更新数量等
4)订单模块(1.5天)order
订单确认,填写送货地址,订单生成
2.技术架构
主要采用Ajax+Struts2+JDBC开发技术.
基于MVC模式分层设计.
表现层:JSP,Ajax,jQuery
控制层:Struts2 Filter控制器+Action
业务层:Sevice组件(业务复杂)
数据访问层:DAO组件,基于JDBC技术
===============用户管理模块===============
一.用户注册
1.了解需求
1)当用户点击"注册"按钮后,执行客户端js检查
邮箱地址:非空,格式,唯一性
昵称:非空,长度4-20(中文字符算2个)
密码:非空,长度6-20(只允用字母和数字)
确认密码:非空,与密码一致
验证码:非空,正确性
2)通过客户端检查,完成以下处理
将表单数据写入到d_user表
生成验证码(采用uuid当做验证码)
给用户邮箱发送验证码(uuid-userId)
3)操作成功后进入邮箱验证页面
2.相关的数据表结构
了解d_user表结构
3.编写程序
1)先编写服务器端实现
a.编写Action组件
根据请求页面定义input属性
根据响应页面定义output属性
定义业务方法execute,编写服务器处理.
以Action为主线,需要entity,dao,util,
编写相应实现
b.在模块配置文件中,配置Action组件
二.邮箱验证
1.在邮箱验证页面,点击"完成"按钮,先执行js检查
非空检查
2.通过js检查,服务器端主要逻辑如下
1)将用户输入的uuid-userId验证码解析,
解析出userId和uuid
2)去d_user表中检查uuid和userId正确性
3)如果验证码正确,将d_user的
is_email_verify设置成"Y",
页面跳转到register_ok.jsp
4)如果验证码不正确,页面返回verify_form.jsp
提示错误信息.
三.登录
1.用户输入email和密码后,点击"登录"执行js检查
Email:非空,格式
密码:非空
2.通过js检查后,服务器端处理如下:
1)验证email和密码的正确性,不正确返回登录
页面,显示错误信息
2)如果email和密码正确,检查邮箱是否通过验证
,如果未通过验证跳转到verify_form.jsp
3)如果邮箱通过验证,更新d_user表的
last_login_time和last_login_ip信息.
进入/main/main.jsp
4)将user信息写入session
四.main.jsp页眉,登录状态显示
如果用户登录,显示用户昵称和登出按钮
如果未登录,只显示登录和注册按钮
==================================
发送一个action请求,将返回的信息填充到标签所在位置
<s:action name="findnew" namespace="/main"
executeResult="true">
</s:action>
===============产品浏览模块需求===================
一.主界面main.jsp
1.编辑推荐区域的显示
采用ajax方式加载recommend.jsp
该区域显示两个图书信息.这两个图书信息随机从数据库获取.
2.热销图书区域的显示
采用ajax方式加载hot.jsp
该区域显示8个图书信息.这8个图书信息从
d_item订单销量表中统计获取销量最多的前8个.
3.新书热卖榜
将main.jsp右侧排行榜信息提取成一个jsp,
采用ajax方式加载.
该区域显示热销图书的排行.将热销图书区域的数据显示.
二.分类浏览页面
1.左侧类别显示
根据父类别ID查询出子类别信息并统计出所包含的产品数量.
2.右侧产品信息显示
根据当前类别ID查询出所包含的产品信息.
===============购物车+订单模块================
购物车与shoppingcart工程实现相同.代码结构稍改动下
1.Cart业务组件方法的API进一步简化
2.编写个CartFactory,用于获取与session相关的Cart对象
3.购买采用Ajax请求处理,其他的采用原有方式,页面整体刷新
订单模块
1.确认订单页面:
将Cart对象中取出确认购买的商品和金额,显示到页面
2.填写送货地址
当用户输入地址后,单击"下一步"按钮,创建一个订单,
将订单信息写入数据库.步骤如下:
1)将表单信息写入d_order表,其他字段从session等范围获取
2)获取order_id,将确认订单列表信息向d_item写入若干条记录.
--追加功能,当用户在选择地址下拉单,选择"填写新地址"时,
将表单记录向d_receive_address表写入一条记录
如果选择以前地址,不需要操作
3)清空购物车中的商品信息.清除session和cookie保存的购物车信息
完成以上功能后,实现选择地址下拉单的处理.
1)页面加载完毕后,采用Ajax将d_receive_address表中
当前用户使用过的地址取出,以json返回,形成Option给下拉单.
2)当用户改变下拉单选项后,发送Ajax请求,去d_receive_address
表中获取地址信息,以json返回,填充到表单输入框中
==============登录检查问题===================
编写一个登录检查的拦截器.参考以前课上案例
可以添加在购物车"结算"请求处理的<action>配置中
这样点"结算"时执行登录检查
注册页面
在注册页面填写个人信息,输入验证码进行注册。
邮箱验证
在后台生成一串字符串进行验证。
注册成功
验证完成后就注册成功
浏览分类
对应的分类里可以查看当前分类里的所有商品
购物车
购买后的商品直接加入到购物车,在购物车里展示所有已添加的商品
确认地址
填写收件人姓名,收件人地址,邮政编号以及电话
生成订单
在购物车里点击下一步,生成订单。跳转到订单页面
网上书店系统采用了比较流行的B/S模式,使用当前较流行的技术框架和拥有较高安全性与稳定性的数据库MySQL数据库来完成系统的设计与开发。系统充分考虑了用户的需求,最终达到了预期效果,并添加了一些附加功能,使系统更加人性化。操作者可以随时对所有的信息进行查询,并且每个模块都提供信息浏览的功能。
系统实现了图书企业通过互联网向消费者推销自己的图书和服务,在网上书店系统网站消费的顾客可以通过计算机网络搜索到自己需要的信息,购买自己需要的图书,在线下达订单。然后由网上书店系统后台来处理相关的订单信息、网站维护等信息。
由于我在知识、经验方面都存在着不足,在整个开发的过程中时间也比较仓促,因此该系统必然会存在一些缺陷和不足。系统在图书信息管理等方面还有不足之处,由于对其具体功能分析的不够透彻,以至于在实现功能上不够细化,不够详尽,所以有待以后将其更加完善。
致 谢
在指导老师的指导和同学帮助之下,我顺利地完成了本次项目实训。在项目实训这段时间里,我认识到了自己的不足并努力的争取完成项目,最终收获很多,学到了以前很多没有学到的知识,同时也巩固了所学过的知识。
首先,感谢我的指导老师。作为我的导师,无论是在理论还是实践方面都给我提了很多宝贵的意见,使我的实训项目在有条不紊的环境下进行,逐步趋于完善,得以顺利完成。
其次,我也很感谢在项目检查时老师给我提出宝贵意见,还有其他老师在此期间的关怀和帮助,以及学院为我提供良好的实训环境。
最后,感谢在实训项目中为我提供帮助的学院的老师和同学,总之感谢在实训项目期间给予我帮助的所有老师和同学,感谢你们对我的支持。