基于SSH框架的在线生鲜销售系统 - 源码深度解析

JavaScriptSSH框架HTMLCSSJSP+Servlet
2026-02-1064 浏览

文章摘要

本项目是一款基于SSH(Struts2 + Spring + Hibernate)整合框架开发的在线生鲜销售系统,旨在为消费者提供一个便捷、可靠的线上生鲜商品购买平台,同时帮助商家高效管理商品与订单。其核心业务价值在于解决了传统生鲜采购中信息不透明、选购不便、库存管理效率低下等痛点,通过线上化方式缩...

基于SSH框架的在线生鲜销售系统 - 源码深度解析

在数字化消费浪潮的推动下,传统生鲜行业正面临信息不对称、供应链冗长、库存管理复杂等多重挑战。为应对这些痛点,我们基于成熟的SSH(Struts2 + Spring + Hibernate)整合框架技术栈,设计并实现了一套企业级生鲜电商平台。该系统不仅功能完整,还具备优异的性能稳定性,为现代生鲜零售提供了可靠的在线交易解决方案。

系统架构设计

系统采用经典的三层架构设计,各层职责明确,耦合度低:

  • 表现层:基于Struts2框架实现,通过Action类接收前端请求并调用业务逻辑,结合JSP页面和Struts标签库完成数据渲染
  • 业务逻辑层:由Spring框架托管,利用IoC容器统一管理Service组件,并通过AOP实现声明式事务管理
  • 数据持久层:基于Hibernate实现ORM映射,通过SessionFactory和事务管理简化数据库操作

这种分层架构不仅提高了代码的可维护性,还便于团队协作和系统扩展。

数据库设计亮点分析

商品表(t_goods)的业务建模

CREATE TABLE `t_goods` (
  `goods_id` int(11) NOT NULL COMMENT '商品ID',
  `goods_catelog_id` int(11) DEFAULT NULL COMMENT '商品分类ID',
  `goods_name` varchar(66) DEFAULT NULL COMMENT '商品名称',
  `goods_miaoshu` varchar(3000) DEFAULT NULL COMMENT '商品描述',
  `goods_pic` varchar(50) DEFAULT NULL COMMENT '商品图片',
  `goods_shichangjia` int(11) DEFAULT NULL COMMENT '商品市场价',
  `goods_tejia` int(11) DEFAULT NULL COMMENT '商品特价',
  `goods_isnottejia` varchar(50) DEFAULT NULL COMMENT '是否特价',
  `goods_Del` varchar(50) DEFAULT NULL COMMENT '商品删除状态',
  PRIMARY KEY (`goods_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='商品表'

设计亮点分析:

  • goods_miaoshu字段采用varchar(3000)类型,充分考虑了生鲜商品需要详细描述产地、保质期、存储条件等特殊信息的业务需求
  • 价格字段使用int类型存储分单位,有效避免了浮点数运算中的精度问题,确保财务计算的准确性
  • goods_isnottejiagoods_Del采用状态标识字段设计,支持灵活的营销策略和软删除功能,符合企业级应用的需求

订单模块的规范化设计

CREATE TABLE `t_order` (
  `id` int(11) NOT NULL COMMENT '订单ID',
  `bianhao` varchar(88) DEFAULT NULL COMMENT '订单编号',
  `xiadanshi` varchar(50) DEFAULT NULL COMMENT '下单时间',
  `userName` varchar(255) DEFAULT NULL COMMENT '用户名',
  `userRealname` varchar(255) DEFAULT NULL COMMENT '用户真实姓名',
  `userTel` varchar(255) DEFAULT NULL COMMENT '用户电话',
  `songhuodizhi` varchar(50) DEFAULT NULL COMMENT '送货地址',
  `fukuanfangshi` varchar(50) DEFAULT NULL COMMENT '付款方式',
  `jine` int(11) DEFAULT NULL COMMENT '金额',
  `zhuangtai` varchar(50) DEFAULT NULL COMMENT '订单状态',
  `userId` int(11) DEFAULT NULL COMMENT '用户ID',
  `email` varchar(50) DEFAULT NULL COMMENT '邮箱',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='订单表'

CREATE TABLE `t_orderitem` (
  `orderItem_id` int(11) NOT NULL COMMENT '订单项ID',
  `order_id` int(11) DEFAULT NULL COMMENT '订单ID',
  `goods_id` int(11) DEFAULT NULL COMMENT '商品ID',
  `goods_quantity` int(11) DEFAULT NULL COMMENT '商品数量',
  PRIMARY KEY (`orderItem_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='订单项表'

规范化设计优势:

  • 严格遵循数据库第三范式,消除数据冗余,确保数据一致性
  • 订单主表存储订单基本信息,订单项表记录具体商品明细,完美支持一个订单包含多个商品的需求
  • bianhao字段采用varchar(88)为复杂的订单编号生成规则预留充足空间
  • zhuangtai字段设计支持完整的订单状态跟踪(待付款、已付款、配送中、已完成等)

核心功能实现

商品管理模块

采用Hibernate实体映射技术,实现商品信息的CRUD操作:

@Entity
@Table(name = "t_goods")
public class Goods {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer goods_id;
    
    private Integer goods_catelog_id;
    private String goods_name;
    private String goods_miaoshu;
    private String goods_pic;
    private Integer goods_shichangjia;
    private Integer goods_tejia;
    private String goods_isnottejia;
    private String goods_Del;
    
    // Getter和Setter方法
    public Integer getGoods_id() { return goods_id; }
    public void setGoods_id(Integer goods_id) { this.goods_id = goods_id; }
    
    public String getGoods_name() { return goods_name; }
    public void setGoods_name(String goods_name) { this.goods_name = goods_name; }
    
    // 其他getter/setter方法...
}

商品信息管理

技术细节:

  • 使用JPA注解实现对象关系映射,减少SQL编写工作量
  • @GeneratedValue注解采用IDENTITY策略,兼容多种数据库的自增主键特性
  • 实体类设计与数据库表结构完全对应,便于Hibernate进行持久化操作

购物车功能实现

通过Spring Service层实现完整的购物车业务逻辑:

@Service
@Transactional
public class CartService {
    
    @Autowired
    private GoodsDAO goodsDAO;
    
    public void addToCart(Integer goodsId, Integer quantity, Map<Integer, CartItem> cart) {
        Goods goods = goodsDAO.findById(goodsId);
        if (cart.containsKey(goodsId)) {
            CartItem item = cart.get(goodsId);
            item.setQuantity(item.getQuantity() + quantity);
        } else {
            CartItem newItem = new CartItem(goods, quantity);
            cart.put(goodsId, newItem);
        }
    }
    
    public BigDecimal calculateTotal(Map<Integer, CartItem> cart) {
        return cart.values().stream()
                .map(item -> item.getGoods().getGoods_tejia().multiply(new BigDecimal(item.getQuantity())))
                .reduce(BigDecimal.ZERO, BigDecimal::add);
    }
}

加入购物车

设计特点:

  • 使用@Transactional注解确保购物车操作的事务性
  • 采用Map数据结构存储购物车项,提高商品查找效率
  • 利用Java 8 Stream API实现优雅的金额计算逻辑
  • 服务层与持久层完全解耦,便于单元测试和功能扩展

订单处理模块

使用Struts2 Action处理用户订单请求,确保业务流程的完整性:

public class OrderAction extends ActionSupport {
    private Order order;
    private List<CartItem> cartItems;
    
    @Autowired
    private OrderService orderService;
    
    public String createOrder() {
        try {
            // 验证购物车数据
            if (cartItems == null || cartItems.isEmpty()) {
                addActionError("购物车为空");
                return ERROR;
            }
            
            // 生成订单编号
            order.setBianhao(generateOrderNumber());
            order.setXiadanshi(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));

订单处理流程优化:

  • 采用Struts2的验证机制确保数据完整性
  • 订单编号生成策略支持高并发场景
  • 异常处理机制完善,保证系统稳定性
  • 与Spring框架无缝集成,实现依赖注入
本文关键词
SSH框架生鲜销售系统源码解析数据库设计在线交易系统

上下篇

上一篇
没有更多文章
下一篇
没有更多文章