zoukankan      html  css  js  c++  java
  • 网上书城+源码

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

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

    整体架构

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

    代码流程梳理

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

    src源码包说明:

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

    WebContent文件说明:

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

      工程整体大致就是这些,下面分模块大致梳理一下流程。

    数据表

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

    会员注册

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

    会员登录

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

      会员成功登陆后,服务端会生成对应的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查看源码。

    参考连接

      1、https://github.com/luoxn28

      2、Java Web之会话技术

      3、Java Web之Servlet技术

  • 相关阅读:
    【小程序】onLaunch异步,首页onLoad先执行
    【Dart】生成固定长度随机数
    从单片机到系统之--uboot启动arm linux
    (四)添加yaffs2文件系统支持
    (三)修改内核大小,适配目标板Nand flash分区配置
    (二)linux内核准备及编译
    (一)arm交叉编译工具链准备
    socket 接收和发送缓冲区
    多线程及多进程部分概念汇总
    嵌入式开发环境搭建(一) 虚拟机实现桥接Ethernet网口 并且通过WIFI进行NAT联网
  • 原文地址:https://www.cnblogs.com/luoxn28/p/5526801.html
Copyright © 2011-2022 走看看