• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

极客购-基于SSM框架的网上商城设计与开发(完整源码可线上部署)

项目实战 Geekerstar 4周前 (02-21) 74次浏览 未收录 0个评论 扫描二维码
文章目录[隐藏]

项目持续开发中:当前版本V2.0,详情见更新说明

项目总体介绍

功能点

1、用户注册(注册表单验证)

2、用户登录

3、忘记密码(提交问题答案,重置密码)

4、修改用户账户信息

5、商品分类查看

6、商品搜索

7、商品动态排序(依据价格)

8、商品列表及详情查看

9、后台图片上传及富文本编辑

10、商品上下架管理

11、增删改商品,分类管理商品

12、购物车中加入/移除商品

13、购物车单价总价计算,全选反选商品,提交订单

14、增删改收货地址

15、提交订单

16、支付宝扫码支付,订单结果回调,跳转成功页面

17、订单列表详情查看,管理订单详情、订单搜索

18、通过Maven结合Git从GitHub拉去最新代码实时线上部署

19、线上Nginx做负载均衡,Tomcat集群结合Redis分布式

项目预览

演示视频

Bilibili 优酷

线上体验

临时域名:www.verynavi.com(如失效请看视频演示)

项目截图

更新说明

  • 当前版本V2.0:线上部署版本,已集成Tomcat集群与Redis分布式解决方案

未来更新方向

  • 新增卖家后台
  • 采用ElasticSearch搜索引擎
  • 引入消息队列
  • 项目采用Springboot重构
  • 拆分为微服务架构
  • ……

技术点

  • 前后端分离
  • Nginx负载均衡策略配置
  • 搭建Tomcat+Nginx集群环境
  • 搭建Redis分布式环境
  • Redis+Cookie+Jackson+Filter原生的方式解决集群session共享的问题
  • 项目集成Redis客户端jedis
  • jackson封装JsonUtil
  • Cookie封装
  • SessionExpireFilter重置session有效期
  • 封装Shard Redis API
  • Spring Session框架集成零侵入实现单点登录
  • SpringMVC 全局异常处理
  • SpringMVC 拦截器实现权限统一校验
  • 使用部分RESTful接口
  • 利用蚂蚁金服开放平台沙箱集成支付宝完成真实支付
  • Spring Schedule实现定时关单

项目笔记摘要

Nginx

重启:安装路径下的/nginx/sbin/nginx -s reload

查看进程:ps -ef | grep nginx

平滑重启:kill -HUP [nginx主进程号(上一步查到的PID)]

增加防火墙访问权限:

1.sudo vim /etc/sysconfig/iptables

2.-A INPUT -p tcp -m state —state NEW -m tcp —dport 80 -j ACCEPT

3.保存退出

4.重启防火墙 sudo service iptables restart

mysql安装

1.执行yum -y install mysql-server

> 注:rpm -qa|grep mysql-server 检查是否已经安装MYSQL

默认配置文件在/etc/my.cnf

2.字符集配置

(1)vim /etc/my.cnf

(2)添加配置,在[mysqld]节点下添加:

Default-character-set=utf8 
Character-set-server=utf8 

注:关于中文乱码的问题,在5.1版本时,为了解决中文乱码问题,my.ini内[mysql]和[mysqld]中都写:default-character-set=utf8,在5.5版本,[mysql]内可以这么写,[mysqld]内不能这么写了,而是写:character-set-server=utf8

3.自动配置

(1)执行chkconfig mysqld on

(2)执行chkconfig —list mysqld查看(如果2~5位启用on状态即OK)

4.防火墙配置

(1)sudo vim /etc/sysconfig/iptables

(2)-A INPUT -p tcp -m tcp —dport 3306 -j ACCEPT,将以上配置添加到防火墙中

(3):wq 保存退出

(4)sudo service iptables restart 执行命令重启防火墙

5.启动mysqld服务:

service mysqld start/etc/rc.d/init.d/mysqld start

1

mysql初始化环境设置,因为还未设置密码,执行mysql -u root登录MYSQL服务器

6.mysql配置

(1)查看当前MYSQL用户 select user,host,password from mysql.user

(2)修改root密码:

Set password for root@localhost=password(‘password’)

Tomcat集群引入的问题

  • session登录信息存储及读取的问题
  • 服务器定时任务并发的问题

解决方案

采用Nginx ip hash policy

  • 优点:可以不改变现有的技术架构,直接实现横向扩展
  • 缺点:1、导致服务器请求(负载)不平均(完全依赖于IP hash的结果)

2、在IP变换的情况下无法服务

NGINX负载均衡配置、常用策略、场景及特点

  • 轮询(默认)
  • 权重
  • Ip hash
  • Url hash(第三方)
  • Fair(第三方)

轮询(默认)

  • 优点:实现简单
  • 缺点:不考虑每台服务器的处理能力
Upstream www.verynavi.com{
    Server www.verynavi.com:8080;
    Server www.verynavi.com:9080;
}

权重

  • 优点:考虑了每台服务器处理能力的不同
Upstream www.verynavi.com{
    Server www.verynavi.com:8080 weight=15;
    Server www.verynavi.com:9080 weight=10;
}

Ip hash

  • 优点:能实现同一个用户访问同一个服务器
  • 缺点:根据IP hash不一定平均
Upstream www.verynavi.com{
    Ip_hash;
    Server www.verynavi.com:8080;
    Server www.verynavi.com:9080;
}

Url hash(第三方)

  • 优点:能实现同一个服务访问同一个服务器
  • 缺点:根据url hash分配请求会不平均,请求频繁的url会请求到同一个服务器上
Upstream www.verynavi.com{
    Server www.verynavi.com:8080;
    Server www.verynavi.com:9080;
    Hash $request_uri;
}

Fair(第三方)

  • 特点:按后端服务器的响应时间来分配请求,响应时间端的优先分配
Upstream www.verynavi.com{
    Server www.verynavi.com:8080;
    Server www.verynavi.com:9080;
    Fair;
}

参考资料

支付宝对接

沙箱登录:https://openhome.alipay.com/platform/appDaily.htm

沙箱环境使用说明:https://doc.open.alipay.com/doc2/detail.htm?treeId=200&articleId=105311&docType=1

如何使用沙箱环境:https://support.open.alipay.com/support/hotProblemDetail.htm?spm=a219a.7386793.0.0.uS5uZ6&id=251932&tagId=100248

当面付产品介绍:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.hV5Clx&treeId=193&articleId=105072&docType=1

扫码支付接入指引:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.Ia6Wqy&treeId=193&articleId=106078&docType=1

当面付快速接入:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.bROnXf&treeId=193&articleId=105170&docType=1

当面付接入必读:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.hV5Clx&treeId=193&articleId=105322&docType=1

当面付进阶功能:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.YFmkxI&treeId=193&articleId=105190&docType=1

当面付异步通知-仅用于扫码支付:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.BykVSR&treeId=193&articleId=103296&docType=1

当面付SDK&DEMO:https://support.open.alipay.com/docs/doc.htm?spm=a219a.7386797.0.0.k0rwWc&treeId=193&articleId=105201&docType=1

服务端SDK:https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1

生成RSA密钥:https://doc.open.alipay.com/docs/doc.htm?treeId=291&articleId=105971&docType=1

线上创建应用说明:https://doc.open.alipay.com/doc2/detail.htm?treeId=200&articleId=105310&docType=1#s0

参考资料

Spring MVC+Spring+Mybatis实现支付宝支付功能(图文详解)

基于SSM框架的Tomcat集群与Redis分布式电商系统平台的设计与开发(一)

基于SSM框架的Tomcat集群与Redis分布式电商系统平台的设计与开发(二)


丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:极客购-基于SSM框架的网上商城设计与开发(完整源码可线上部署)
喜欢 (0)
[247507792@qq.com]
分享 (0)
Geekerstar
关于作者:
本站技术支持

您必须 登录 才能发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00