网上书城+源码

  通过一段时间的Java Web基础知识的学习,为了将整个知识点串联起来,本身写了一个简单的网上书城小项目。整个项目架构比较简单,适合像我这种Java Web初学者来学习参考,项目名称web_bookstore,是基于servlet/jsp和html/css/js实现的。css

  整个工程代码已push到Git,详见地址:web_bookstore html

总体架构

  该网上书城项目分为前台和后台两大部分,前台部分包括会员注册、会员登陆、购买书籍、添加购物车、结算等功能,后台部分包括查看会员、查看商品、添加商品等功能。有些功能模块还未添加,后续须要的话能够再添加上去。总体架构框图以下所示:git

代码流程梳理

  经过看总体架构框图可知,整个项目各个模块之间关系仍是挺清晰的,下面先来一张web_bookstore工程总体图:github

src源码包说明:web

  • admin包:主要是一些管理员有关的Servlet控制逻辑
  • dao包:数据表类和数据表操做类
  • demo包:本身写的一些测试用例
  • service包:会员相关的一些Servlet控制逻辑
  • util包:一些脚手架程序
  • web.filter:一些拦截器,好比控制网页编码等

WebContent文件说明:sql

  • admin:管理员相关jsp页面
  • client:会员相关jsp页面
  • css:全局css文件
  • img/picture:存放一些图片
  • js:一些js程序
  • util:存放一些页头什么的

  工程总体大体就是这些,下面分模块大体梳理一下流程。数据库

数据表

  通常项目首先会设计数据表,那我们就先说说数据表建立^_^。整个项目使用了5个数据表,分别是用户表、商品表、订单表、订单项表(订单中单个商品项信息)、消息表。具体的表结构和建立表SQL语句见源码中的db.sql文件。下面是整个个数据库的图示:cookie

会员注册

  会员须要先注册后才能使用网上书城添加购物车和结算等功能,注意:会员注册后须要管理员激活该会员后才能登陆。注册界面以下所示:session

会员登陆

  会员注册成功后,就能够直接登录到网上书城了,登陆界面以下所示。注意,若是是管理员登陆的话,会跳转到后台管理员主页;若是是普通会员的话就会跳到会员主页。架构

  会员成功登录后,服务端会生成对应的Cookie,并写入请求响应中,Cookie格式为user=user_id形式,user_id为用户注册后生成的一个对应id。

  接着就会跳转到商品主页上去,商品主页页面以下所示,目前商品表中只有2件商品:(

购物车流程

  在商品下面点击加入购物车后就会将该商品添加到购物车中。

  注意:购物车是以Session形式保存在服务端的,由于网上书城是多用户登陆的,如何保证多个用户的Session不冲突呢,也就是购物车是如何实现的呢?一个用户的购物车在服务端对应一个Session,该Session对应的属性名字为cart+user_id,user_id也就是用户登陆成功写入到Cookie的那个user值,由于cart+user_id是和用户一一对应的,因此这样就保证了全部用户的Session不会冲突,对应的源码在AddCarServlet逻辑中,以下所示:

// 先判断用户是否登陆
Cookie cookie = ServletUtils.getCookie(request, "user");
if (cookie == null) {
    response.getWriter().println("抱歉,你当前还未登陆,2秒后调到登陆页面");
    response.addHeader("refresh", "2;url=" + request.getContextPath() + "/client/login.jsp");
    return;
}

// 获取购物车对象
HttpSession session = request.getSession();
Map<Product, Integer> cart = (Map<Product, Integer>) session.getAttribute("cart" + cookie.getValue());
if (cart == null) {
    cart = new HashMap<Product, Integer>();
}

商品结算流程

  在购物车页面点击如今结帐后,就会跳转到提交订单页面中了。

  填写收货地址、收货人、电话等信息后,点击提交订单,就到了计算页面了,而后输入支付宝帐号和密码后,商品购买流程就结束了。

 

管理员流程

  在管理员页面若是填写的是管理员帐号的话,就直接到管理员管理页面了,整图页面以下所示:

  目前管理员功能有限,只有添加商品、查看全部商品、查看全部用户等功能,后续能够添加上去,这里对照着源码大体就明白了,就不具体说明了。

  到此,总体项目流程已经梳理完毕,具体请点击web_bookstore查看源码。

参考链接

  一、https://github.com/luoxn28

  二、Java Web之会话技术

  三、Java Web之Servlet技术

相关文章
相关标签/搜索