项目概述

这是一个基于 SSM(Spring + SpringMVC + MyBatis) 框架构建的农产品销售平台,采用传统的 JSP 作为前端视图技术。项目实现了完整的农产品电商业务流程,包括用户管理、商家管理、商品管理、购物车、订单处理、物流配送等核心功能模块。

技术栈

分类 技术 版本
后端框架 Spring 4.2.x
Web框架 SpringMVC 4.2.x
ORM框架 MyBatis 3.x
数据库 MySQL 5.7+
连接池 HikariCP -
前端技术 JSP + jQuery + Bootstrap -
JSON处理 Jackson 2.x
日志框架 Log4j 1.x

项目结构

bishe/
├── src/com/spring/
│   ├── controller/                       # 控制器层
│   │   ├── AdminsController.java        # 管理员控制器
│   │   ├── YonghuController.java        # 用户控制器
│   │   ├── ShangjiaController.java      # 商家控制器
│   │   ├── ShangpinxinxiController.java # 商品信息控制器
│   │   ├── GouwucheController.java      # 购物车控制器
│   │   ├── DingdanController.java       # 订单控制器
│   │   ├── FahuoController.java         # 发货控制器
│   │   ├── QianshouController.java      # 签收控制器
│   │   └── ...
│   ├── service/                          # 服务层
│   │   └── impl/                         # 服务实现
│   ├── dao/                              # 数据访问层
│   ├── entity/                           # 实体类
│   ├── interceptor/                      # 拦截器
│   │   └── AuthInterceptor.java          # 权限拦截器
│   ├── util/                             # 工具类
│   └── config/                           # 配置类
├── resources/
│   ├── applicationContext.xml            # Spring配置文件
│   ├── mybatis-config.xml                # MyBatis配置
│   ├── jdbc.properties                   # 数据库配置
│   ├── log4j.properties                  # 日志配置
│   └── sqlmap/                           # MyBatis映射文件
│       ├── ShangpinxinxiMapper.xml
│       ├── YonghuMapper.xml
│       └── ...
└── web/
    ├── images/                           # 图片资源
    ├── css/                              # 样式文件
    ├── js/                               # JavaScript文件
    └── upload/                           # 上传文件目录

核心功能模块

1. 用户角色体系

项目实现了三端用户体系:

角色 说明 主要功能
管理员 系统最高权限 用户管理、商家审核、商品审核、订单管理、数据统计
商家 农产品销售方 商品发布、库存管理、订单处理、发货管理
用户 消费者 商品浏览、购物车、下单购买、订单跟踪、收货确认

2. 商品管理模块(Shangpinxinxi)

功能特性:

  • 商品信息的增删改查
  • 商品分类管理(水果/蔬菜/粮食等)
  • 商品图片上传
  • 库存与销量统计
  • 商品搜索与筛选

核心实体类:

public class Shangpinxinxi implements Serializable {
    private Integer id;                    // 商品ID
    private String shangpinbianhao;        // 商品编号
    private String shangpinmingcheng;      // 商品名称
    private String tupian;                 // 商品图片
    private String leixing;                // 商品类型
    private Integer kucun;                 // 库存
    private Integer xiaoliang;             // 销量
    private Double jiage;                  // 价格
    private String chanpinmiaoshu;         // 产品描述
    private String shangjia;               // 商家
}

3. 购物车模块(Gouwuche)

功能特性:

  • 添加商品到购物车
  • 修改购买数量
  • 删除购物车商品
  • 购物车批量结算

4. 订单管理模块

订单状态流转:

待支付 → 已支付 → 待发货 → 已发货 → 已签收
   ↓
  已取消

订单表结构:

CREATE TABLE dingdan (
  id INT PRIMARY KEY AUTO_INCREMENT,
  dingdanbianhao VARCHAR(50) NOT NULL,      -- 订单编号
  dingdanxinxi TEXT NOT NULL,               -- 订单信息(HTML格式)
  dingdanjine DECIMAL(10,2) NOT NULL,       -- 订单金额
  dingdanzhuangtai VARCHAR(50) NOT NULL,    -- 订单状态
  shangjia VARCHAR(64) NOT NULL,            -- 商家
  dizhi INT NOT NULL,                       -- 地址ID
  xingming VARCHAR(50) NOT NULL,            -- 姓名
  lianxidianhua VARCHAR(50) NOT NULL,       -- 联系电话
  xiangxidizhi VARCHAR(255) NOT NULL,       -- 详细地址
  xiadanren VARCHAR(64) NOT NULL,           -- 下单人
  iszf VARCHAR(10) DEFAULT '否'             -- 是否支付
);

5. 物流管理模块

发货模块(Fahuo):

  • 商家发货处理
  • 物流信息录入

签收模块(Qianshou):

  • 用户确认收货
  • 订单完成处理

取消订单模块(Quxiaodingdan):

  • 用户取消订单
  • 库存回滚处理

6. 地址管理模块(Shouhuodizhi)

  • 用户收货地址的增删改查
  • 默认地址设置

7. 反馈与回复模块

在线反馈(Zaixianfankui):

  • 用户提交反馈意见

反馈回复(Fankuihuifu):

  • 管理员回复用户反馈

8. 轮播图模块(Lunbotu)

  • 首页轮播图管理
  • 支持图片上传与排序

关键技术实现

1. Spring配置

数据源配置(HikariCP):

<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource">
    <property name="driverClassName" value="${jdbc.driver}" />
    <property name="jdbcUrl" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    <property name="minimumIdle" value="20"/>
    <property name="maximumPoolSize" value="100"/>
    <property name="connectionTestQuery" value="select 1"/>
</bean>

MyBatis集成:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="mapperLocations" value="classpath:sqlmap/*Mapper.xml"/>
    <property name="typeAliasesPackage" value="com.spring.entity"/>
    <property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>

2. 权限拦截器

通过 AuthInterceptor 实现登录验证:

public class AuthInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, 
                            HttpServletResponse response, 
                            Object handler) throws Exception {
        if (request.getSession().getAttribute("username") == null || 
            "".equals(request.getSession().getAttribute("username"))) {
            response.sendRedirect("./login.do");
            return false;
        }
        return true;
    }
}

拦截器配置:

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/main.do"/>
        <mvc:mapping path="/*_*.do"/>
        <bean class="com.spring.interceptor.AuthInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>

3. 控制器基类

所有控制器继承 BaseController,提供通用方法:

@Controller
public class ShangpinxinxiController extends BaseController {
    
    @Autowired
    private ShangpinxinxiMapper dao;
    
    @Autowired
    private ShangpinxinxiService service;
    
    @RequestMapping("/shangpinxinxi_list")
    public String list() {
        if (!checkLogin()) {
            return showError("尚未登录", "./login.do");
        }
        // 业务逻辑...
        return "shangpinxinxi_list";
    }
}

4. 分页查询

使用自定义的 SelectExample 实现分页:

SelectExample example = new SelectExample();
String where = " 1=1 ";
where += getWhere();  // 获取搜索条件
example.setWhere(where);
example.setOrder(order + " " + sort);

int page = request.getParameter("page") == null ? 1 : 
           Integer.valueOf(request.getParameter("page"));
List<Shangpinxinxi> list = service.selectPage(example, page, 12);

5. 文件上传

使用自定义的 Uploader 工具类处理文件上传:

@RequestMapping("/upload")
public void upload() {
    String file = Uploader.upload(request);
    if (file != null) {
        renderText(file);
    } else {
        renderText("上传失败");
    }
}

数据库设计

核心表清单

表名 中文名 用途
admins 管理员表 后台管理员登录
yonghu 用户表 前端用户信息
shangjia 商家表 商家信息
shangpinxinxi 商品信息表 商品数据存储
shangpinleixing 商品类型表 商品分类
gouwuche 购物车表 购物车数据
dingdan 订单表 订单主表
dingdandingdanxinxi 订单详情表 订单商品明细
shouhuodizhi 收货地址表 用户地址
fahuo 发货表 发货记录
qianshou 签收表 签收记录
quxiaodingdan 取消订单表 取消订单记录
zaixianfankui 在线反馈表 用户反馈
fankuihuifu 反馈回复表 反馈回复
lunbotu 轮播图表 首页轮播

表关系设计

admins(管理员)
    ↓
yonghu(用户)  ←→  shouhuodizhi(收货地址)
    ↓
    ├── gouwuche(购物车)     ←→  shangpinxinxi(商品)
    ├── dingdan(订单)       ←→  shangjia(商家)
    │   └── dingdandingdanxinxi(订单详情)
    ├── qianshou(签收)      ←→  dingdan(订单)
    ├── quxiaodingdan(取消) ←→  dingdan(订单)
    └── zaixianfankui(反馈)
        └── fankuihuifu(回复)

部署与运行

环境要求

  • JDK 1.8+
  • Tomcat 8.5+
  • MySQL 5.7+
  • Maven 3.5+

运行步骤

  1. 创建数据库
CREATE DATABASE 2023051202 CHARACTER SET utf8mb4;
  1. 导入数据
mysql -u root -p 2023051202 < 2023051202.sql
  1. 修改数据库配置
    编辑 resources/jdbc.properties
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/2023051202?useUnicode=true&characterEncoding=UTF-8&useSSL=FALSE&serverTimezone=UTC
jdbc.username=root
jdbc.password=你的密码
  1. 部署到Tomcat
  • 将项目打包为WAR文件
  • 部署到Tomcat的webapps目录
  • 启动Tomcat服务器
  1. 访问地址
  • 前台:http://localhost:8080/bishe/
  • 后台:http://localhost:8080/bishe/login.do

测试账户

管理员账户:

  • 用户名:admin
  • 密码:admin

项目亮点

  1. 多角色权限管理:实现了管理员、商家、用户三端分离,权限控制清晰。

  2. 完整订单流程:从下单、支付、发货、签收到取消,覆盖电商全流程。

  3. 数据可视化:集成ECharts实现销售数据统计与可视化展示。

  4. 高性能连接池:使用HikariCP替代传统的DBCP,提升数据库连接性能。

  5. 拦截器权限控制:基于Spring拦截器实现统一的登录验证和权限控制。

  6. 热部署支持:集成Mapper热部署插件,开发时无需重启服务器。

  7. 文件上传功能:支持商品图片、轮播图等文件上传。

  8. 搜索与筛选:商品支持多条件搜索和分类筛选。

总结

该农产品销售平台是一个功能完整、架构清晰的SSM实战项目,适合作为学习SSM框架开发的参考案例,也可作为课程设计或毕业设计的基础框架。项目采用传统的JSP技术栈,代码结构规范,注释完善,具备良好的可维护性和扩展性。

通过本项目的学习,可以深入理解:

  • SSM框架的整合与配置
  • MyBatis映射文件的编写
  • Spring拦截器的使用
  • 多角色权限管理的设计
  • 电商业务流程的实现
Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐