基于SSH框架的在线化妆品销售平台 - 源码深度解析

JavaJavaScriptSSH框架HTMLCSSMySQLJSP+Servlet
2026-02-1010 浏览

文章摘要

本项目是一款基于SSH(Struts2 + Spring + Hibernate)整合框架开发的在线化妆品销售平台,旨在为化妆品品牌或零售商提供一个功能完备、稳定可靠的B2C电子商务解决方案。其核心业务价值在于解决了传统线下或简单线上销售模式中商品信息更新滞后、订单处理效率低下以及客户数据管理混乱的...

企业级化妆品电商平台的技术架构与实现

在电子商务蓬勃发展的今天,化妆品行业对线上销售平台的需求日益增长。本文介绍的企业级化妆品电商平台采用经典的SSH(Struts2 + Spring + Hibernate)整合框架,为化妆品品牌和零售商提供了一套完整的B2C电子商务解决方案。

系统架构与技术栈

该平台采用典型的三层架构设计,前端使用JSP动态页面技术,结合jQuery等JavaScript库实现丰富的用户交互体验。后端架构中,Struts2作为MVC框架负责请求分发和页面跳转控制,Spring框架通过IoC容器管理业务组件,并利用AOP实现事务管理和日志记录,Hibernate则作为持久层框架处理数据访问。

// Spring配置文件示例
@Configuration
@EnableTransactionManagement
@ComponentScan("com.cosmetics.platform")
public class AppConfig {
    
    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/cosmetics_db");
        dataSource.setUsername("root");
        dataSource.setPassword("password");
        return dataSource;
    }
    
    @Bean
    public LocalSessionFactoryBean sessionFactory() {
        LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
        sessionFactory.setDataSource(dataSource());
        sessionFactory.setPackagesToScan("com.cosmetics.platform.entity");
        return sessionFactory;
    }
}

数据库设计亮点

订单模块的精细化设计

订单系统采用主从表结构设计,t_order表存储订单基本信息,t_orderitem表记录订单明细,这种设计支持一个订单包含多个商品的需求。

-- 订单主表结构
CREATE TABLE `t_order` (
  `order_id` int(11) NOT NULL COMMENT '订单ID',
  `order_bianhao` varchar(88) DEFAULT NULL COMMENT '订单编号',
  `order_date` varchar(255) DEFAULT NULL COMMENT '订单日期',
  `order_zhuangtai` varchar(255) DEFAULT NULL COMMENT '订单状态',
  `order_songhuodizhi` varchar(255) DEFAULT NULL COMMENT '送货地址',
  `order_fukuangfangshi` varchar(255) DEFAULT NULL COMMENT '付款方式',
  `order_jine` int(11) DEFAULT NULL COMMENT '订单金额',
  `order_user_id` int(11) DEFAULT NULL COMMENT '用户ID',
  PRIMARY KEY (`order_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='订单项表';

这种设计具有以下优势:

  • 数据一致性:通过外键关联确保订单项与主订单的对应关系
  • 扩展性:支持订单状态追踪、支付方式多样化等业务需求
  • 查询性能:通过订单编号字段建立索引,优化订单查询效率

商品信息管理的灵活架构

商品表t_goods设计了完善的价格体系和分类管理机制:

CREATE TABLE `t_goods` (
  `goods_id` int(11) NOT NULL COMMENT '商品ID',
  `goods_name` varchar(88) DEFAULT NULL COMMENT '商品名称',
  `goods_miaoshu` varchar(5000) DEFAULT NULL COMMENT '商品描述',
  `goods_pic` varchar(255) DEFAULT NULL COMMENT '商品图片',
  `goods_shichangjia` int(11) DEFAULT NULL COMMENT '市场价',
  `goods_tejia` int(11) DEFAULT NULL COMMENT '特价',
  `goods_isnottejia` varchar(255) DEFAULT NULL COMMENT '正常价',
  `goods_isnottuijian` varchar(255) DEFAULT NULL COMMENT '是否推荐',
  `goods_catelog_id` int(11) DEFAULT NULL COMMENT '分类ID',
  `goods_Del` varchar(255) DEFAULT NULL COMMENT '是否删除',
  PRIMARY KEY (`goods_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='商品表';

商品表设计的亮点包括:

  • 多价格体系:支持市场价、特价和正常价的多维度定价策略
  • 商品状态管理:通过标志位控制商品推荐状态和删除状态
  • 分类管理:通过分类ID实现商品分类的灵活管理
  • 大文本支持:商品描述字段长度达5000字符,满足详细说明需求

商品信息管理

核心功能实现

用户认证与权限管理

系统采用精细化的用户权限控制,支持管理员和普通用户两种角色。用户表设计包含完整的用户信息字段:

// 用户实体类
@Entity
@Table(name = "t_user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer user_id;
    
    private String user_name;
    private String user_pw;
    private Integer user_type; // 用户类型:0-管理员,1-普通用户
    private String user_realname;
    private String user_sex;
    private String user_age;
    private String user_address;
    private String user_tel;
    private String user_email;
    private String user_del;
    
    // 省略getter和setter方法
}

// 用户登录验证Struts2 Action
public class UserLoginAction extends ActionSupport {
    private String username;
    private String password;
    private UserService userService;
    
    public String execute() {
        User user = userService.validateUser(username, password);
        if (user != null) {
            // 将用户信息存入session
            ActionContext.getContext().getSession().put("user", user);
            if (user.getUser_type() == 0) {
                return "admin";
            } else {
                return "user";
            }
        } else {
            addActionError("用户名或密码错误");
            return ERROR;
        }
    }
    
    // 省略getter和setter方法
}

用户登录界面

购物车与订单处理

购物车功能采用Session存储临时数据,订单处理涉及复杂的业务逻辑:

// 购物车项实体
public class CartItem {
    private Goods goods;
    private Integer quantity;
    private Double subtotal;
    
    public Double getSubtotal() {
        return goods.getGoods_tejia() * quantity;
    }
    
    // 省略其他方法
}

// 订单服务类
@Service
@Transactional
public class OrderService {
    
    @Autowired
    private OrderDao orderDao;
    
    @Autowired
    private OrderItemDao orderItemDao;
    
    public String createOrder(Map<Integer, CartItem> cart, User user, 
                             String address, String payment) {
        // 生成订单编号
        String orderNumber = generateOrderNumber();
        
        // 创建订单主记录
        Order order = new Order();
        order.setOrder_bianhao(orderNumber);
        order.setOrder_date(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
        order.setOrder_zhuangtai("待付款");
        order.setOrder_songhuodizhi(address);
        order.setOrder_fukuangfangshi(payment);
        order.setOrder_user_id(user.getUser_id());
        
        // 计算订单总金额
        Double totalAmount = 0.0;
        for (CartItem item : cart.values()) {
            totalAmount += item.getSubtotal();
        }
        order.setOrder_jine(totalAmount.intValue());
        
        // 保存订单
        orderDao.save(order);
        
        // 保存订单项
        for (CartItem item : cart.values()) {
            OrderItem orderItem = new OrderItem();
            orderItem.setOrder_id(order.getOrder_id());
            orderItem.setGoods_id(item.getGoods().getGoods_id());
            orderItem.setGoods_quantity(item.getQuantity());
            orderItemDao.save(orderItem);
        }
        
        return orderNumber;
    }
    
    private String generateOrderNumber() {
        return "ORD" + System.currentTimeMillis();
    }
}

提交订单界面

商品管理与分类系统

商品管理模块支持商品的上架、下架、价格调整和分类管理:

// 商品服务类
@Service
@Transactional
public class GoodsService {
    
    @Autowired
    private GoodsDao goodsDao;
    
    public List<Goods> getGoodsByCatalog(Integer catalogId, Integer page, Integer size) {
        return goodsDao.findByCatalogId(catalogId, page, size);
    }
    
    public List<Goods> getRecommendedGoods() {
        return goodsDao.findRecommendedGoods();
    }
    
    public void updateGoodsPrice(Integer goodsId, Integer marketPrice, Integer specialPrice) {
        Goods goods = goodsDao.findById(goodsId);
        if (goods != null) {
            goods.setGoods_shichangjia(marketPrice);
            goods.setGoods_tejia(specialPrice);
            goodsDao.update(goods);
        }
    }
}

// 商品分类实体
@Entity
@Table(name = "t_catalog")
public class Catalog {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer catalog_id;
    
    private String catalog_name;
    private String catalog_description;
    private Integer parent_id; // 支持多级分类
    
    @OneToMany(mappedBy = "catalog")
    private Set<Goods> goods;
    
    // 省略getter和setter方法
}

商品分类管理

后台管理功能

管理员后台提供完整的系统管理功能,包括用户管理、订单处理、商品上下架等:

// 管理员Action类
public class AdminAction extends ActionSupport {
    
    private List<User> userList;
    private List<Order> orderList;
    private List<Goods> goodsList;
    
    @Autowired
    private UserService userService;
    
    @Autowired
    private OrderService orderService;
    
    @Autowired
    private GoodsService goodsService;
    
    public String userManagement() {
        userList = userService.getAllUsers();
        return SUCCESS;
    }
    
    public String orderManagement() {
        orderList = orderService.getAllOrders();
        return SUCCESS;
    }
    
    public String goodsManagement() {
        goodsList = goodsService.getAllGoods();
        return SUCCESS;
    }
    
    // 省略其他方法
}

后台订单管理

实体模型设计

系统采用面向对象的设计思想,通过Hibernate实现对象关系映射:

// 订单与订单项的一对多关系映射
@Entity
@Table(name = "t_order")
public class Order {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer order_id;
    
    private String order_bianhao;
    private String order_date;
    private String order_zhuangtai;
    private String order_songhuodizhi;
    private String order_fukuangfangshi;
    private Integer order_jine;
    private Integer order_user_id;
    
    @OneToMany(mappedBy = "order", cascade = CascadeType.ALL)
    private Set<OrderItem> orderItems = new HashSet<>();
    
    // 省略getter和setter方法
}

// 商品详情页面数据模型
public class GoodsDetailVO {
    private Goods goods;
    private List<Goods> relatedGoods; // 相关商品推荐
    private List<Comment> comments; // 用户评论
    private Integer stockQuantity; // 库存数量
    
    // 省略构造方法和getter/setter
}

商品详情页面

功能展望与优化

1. 引入Redis缓存提升性能

当前系统在处理高并发商品查询时可能存在性能瓶颈。建议引入Redis作为缓存层:

// Redis缓存配置示例
@Configuration
@EnableCaching
public class RedisConfig {
    
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(factory);
        template.setKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        return template;
    }
}

// 商品查询服务加入缓存
@Service
public class GoodsServiceWithCache {
    
    @Autowired
    private GoodsDao goodsDao;
    
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    
    @Cacheable(value = "goods", key = "#goodsId")
    public Goods getGoodsById(Integer goodsId) {
        return goodsDao.findById(goodsId);
    }
    
    @Cacheable(value = "goodsList", key = "#catalogId + '_' + #page")
    public List<Goods> getGoodsByCatalog(Integer catalogId, Integer page, Integer size) {
        return goodsDao.findByCatalogId(catalogId, page, size);
    }
}

2. 微服务架构改造

将单体应用拆分为微服务架构,提高系统的可扩展性和维护性:

  • 用户服务:处理用户注册、登录、权限管理
  • 商品服务:商品管理、分类管理、库存管理
  • 订单服务:订单创建、支付处理、状态跟踪
  • 支付服务:集成多种支付方式
  • 推荐服务:基于用户行为的商品推荐

3. 移动端适配与PWA支持

开发响应式前端界面,支持PWA(渐进式Web应用)技术:

<!-- 响应式商品卡片组件 -->
<div class="goods-card">
    <img src="${goods.goods_pic}" alt="${goods.goods_name}" 
         class="goods-image responsive-img">
    <div class="goods-info">
        <h3 class="goods-title">${goods.goods_name}</h3>
        <p class="goods-price">
            <span class="special-price">¥${goods.goods_tejia}</span>
            <span class="market-price">¥${goods.goods_shichangjia}</span>
        </p>
        <button class="add-to-cart-btn" @click="addToCart(${goods.goods_id})">
            加入购物车
        </button>
    </div>
</div>

4. 智能推荐系统集成

基于用户浏览历史和购买行为,实现个性化商品推荐:

// 推荐服务接口
@Service
public class RecommendationService {
    
    public List<Goods> getPersonalizedRecommendations(Integer userId) {
        // 基于协同过滤算法实现推荐
        List<Integer> similarUsers = findSimilarUsers(userId);
        return getGoodsFromSimilarUsers(similarUsers);
    }
    
    public List<Goods> getRelatedGoods(Integer goodsId) {
        // 基于商品属性相似度计算相关商品
        return goodsDao.findRelatedGoods(goodsId);
    }
}

5. 数据分析与报表系统

增加数据分析和报表功能,为商家提供经营决策支持:

// 数据分析服务
@Service
public class AnalyticsService {
    
    public SalesReport generateSalesReport(Date startDate, Date endDate) {
        // 生成销售报表
        return salesDao.getSalesReport(startDate, endDate);
    }
    
    public UserBehaviorAnalysis analyzeUserBehavior(Integer userId) {
        // 分析用户行为模式
        return userBehaviorDao.analyzeBehavior(userId);
    }
}

总结

该企业级化妆品电商平台基于成熟的SSH框架构建,具备完整的电子商务功能模块。系统采用分层架构设计,实现了前后端分离,保证了代码的可维护性和扩展性。数据库设计合理,支持复杂的业务逻辑处理。

通过引入缓存技术、微服务架构改造、移动端适配、智能推荐系统和数据分析功能,可以进一步提升系统的性能和用户体验。该平台为化妆品行业提供了可靠的技术解决方案,具有良好的市场应用前景。

购物车功能

系统的成功实施证明了传统SSH框架在现代电商系统中仍然具有强大的生命力,通过合理的技术选型和架构设计,可以构建出稳定、高效的企业级应用系统。

本文关键词
SSH框架在线化妆品销售电商平台源码解析技术架构

上下篇

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