网上书城+源码

  经过一段时间的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>();
}

商品结算流程

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

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

管理员流程

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

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

时间: 2024-08-07 04:04:52

网上书城+源码的相关文章

Webbench-1.5开源软件工具源码深度剖析

Webbench是有名的网站压力测试工具. 其标准测试可以测试服务器的两项内容:每秒钟相应请求数和每秒钟传输数据量. Webbench不但能具有便准静态页面的测试能力,还能对动态页面(ASP,PHP,JAVA,CGI)进行测试的能力.还有就是他支持对含有SSL的安全网站例如电子商务网站进行静态或动态的性能测试. 网上下载好webbench-1.5的压缩安装包,拷贝到linux环境下解压安装. 我用的是VM虚拟机上安装ubuntu12.04 1. 网上下载源码压缩包拷贝到linux环境下 2. 解

Expectation Maximization-EM(期望最大化)-算法以及源码

在统计计算中,最大期望(EM)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量(Latent Variable).最大期望经常用在机器学习和计算机视觉的数据聚类(Data Clustering) 领域.最大期望算法经过两个步骤交替进行计算,第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值:第二步是最大化(M),最大 化在 E 步上求得的最大似然值来计算参数的值.M 步上找到的参数估计值被用于下一个 E 步计算

f2fs源码分析(一)mount 过程

许多文章会介绍F2FS,对于入门者来说能够了解个F2FS全貌,但是真正了解这个年轻的文件系统还是要看源码的.网上F2fs源码导读的文章,我到现在还是没看过,所以就用这几篇博客来介绍下f2fs,以期对f2fs有更加深入的认识,甚至对整个IO路径的认知有所启发. 下面 文件系统的包括文件系统在磁盘上的布局,也包括在驻留在内存中的文件系统的“驱动” mount过程主要是新建段管理器(segment manager),节点管理器(node manager).其中,段管理器是为了垃圾回收,因为垃圾回收算法

CentOS6.5下源码编译安装httpd2.4.23

1.安装环境为CentOS6.5,64位 [[email protected] app]# uname -r 2.6.32-504.30.3.el6.x86_64 [[email protected] app]# cat /etc/redhat-release  CentOS release 6.5 (Final) [[email protected] app]# 2.官网上下载源码包 wget http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/

ECO源码|GEC源码|挖矿源码|eco系统|gec程序

ECO源码|GEC源码|挖矿源码|eco系统|gec程序在最近一年的时间里,各种国产的资金盘疯狂的出现,其实看见有很多做的比较成功的,比如eco|gec都做得比较好 !在今年1月的时候,当时我也有冲动想尝试着做一个虚拟币的平台.与自己不是程序员所以对这个软件是一窍不通!但是就想要从网上买一个源码?在网上看了很多,一不小心就是两三万一个源码,也有几千块钱的源码!由于自己刚毕业所以就套了2000元在网上买了一个虚拟币的源码!在互站网里面买的,这是没过几天我在站长资源里面看见了一个十块钱的源码!当时抱

linux源码包安装软件

Linux源码安装和yum安装区别: 1.yum安装可以看成是在线安装的一种方式,你只需要yum install 软件名,系统就自动根据yum源配置文件中的镜像位置去下载安装包了,并可以自动分析所需的软件依赖关系,自动安装所需的依赖软件包.此方式适合初学者,简单方便,不用考虑依赖关系. 2.源码安装方式是需要自己到网上下载源码包,然后解压安装.此方式可以指定配置参数,更加灵活方便,兼容性更强. Linux源码安装好处: 1.软件根据用户需要定制2.用于二次开发 源码包及其编译安装: 1.源码包打

为什么下载源码包需要到官网上去下载?

1. 为什么下载源码包需要到官网上去下载? 答:官网提供的源码包更完整,无修改,无病毒,无后门. 2. 64位机器是否可以安装32位rpm包?64位机器是否可以安装32位的mysql二进制免编译包? 答:可以,但是不建议这样做,最好是安装对应版本的包,不容易出问题. 3. 编译安装apache时, 会有什么问题? 答:编译安装apache需要底层接口库apr的支持,如果不加--with-included-apr参数,会编译出错:Cannot use an external APR with th

开源Asp.Net MVC网上商城BrnShop正式发布,提供源码下载(非官方文章)

BrnShop网上商城是以Asp.Net mvc3为基础开发的网上商城,源代码完全开源(企业版的源代码目前还没有完全整理完成,一旦整理完成也全部开源). 源码下载地址: asp.net(c#)开源商店系统Brn shop 1.9(免费仿京东商城) asp.net(c#)开源商店系统Brn shop 2.1(免费仿京东商城) 项目结构图如下: 后台管理页面: 功能简介: 1 基本数据:品牌,分类,属性(有些属性用作sku,有些属性还要提供商品筛选功能). 2 商品属性:商品图库,商品属性列表,商品

重磅来袭,开源Asp.Net MVC网上商城BrnShop正式发布,提供源码下载

BrnShop网上商城是以Asp.Net mvc3为基础开发的网上商城,源代码完全开源(企业版的源代码目前还没有完全整理完成,一旦整理完成也全部开源). 啥话也不说了,直接上源码:下载源码(由于公司服务器在香港,所以如果下载速度过慢可来此下载网盘) 项目结构图如下: 后台管理页面: 一个完整的网上商城应该至少包含以下几个方面: 1 基本数据:品牌,分类,属性(有些属性用作sku,有些属性还要提供商品筛选功能). 2 商品属性:商品图库,商品属性列表,商品关键词列表,商品库存(有的需要按照仓库拆分