基于SSH框架的计算机配件在线商城系统 - 源码深度解析

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

文章摘要

本项目是一款基于经典SSH(Struts2 + Spring + Hibernate)框架技术栈构建的计算机配件在线商城系统。它旨在为消费者提供一个功能完整、流程清晰的线上购物平台,专门解决计算机硬件爱好者及普通用户寻找、比较和购买各类电脑配件(如CPU、内存、硬盘、显卡等)时面临的信息分散、价格不...

在电子商务蓬勃发展的今天,专业化、垂直化的在线购物平台成为满足特定消费群体需求的重要载体。计算机配件市场因其产品型号复杂、参数专业、更新换代快等特点,特别需要一个能够提供精准信息检索、专业产品对比和便捷交易流程的线上解决方案。本项目正是基于这一市场需求,采用成熟的SSH技术框架构建的专业级计算机配件电商平台。

系统架构与技术栈设计

该平台采用经典的三层架构模式,每一层都选用业界成熟的技术框架实现高效解耦和功能模块化。

表现层使用Struts2框架处理用户请求和页面渲染。Struts2的拦截器机制有效实现了权限验证、日志记录等横切关注点,其强大的OGNL表达式语言简化了数据在Action与JSP页面间的传递。

// 商品查询Action示例
public class GoodsAction extends ActionSupport {
    private Integer goodsId;
    private GoodsService goodsService;
    private Goods goods;
    
    public String getGoodsDetail() {
        goods = goodsService.getGoodsById(goodsId);
        if(goods != null) {
            return SUCCESS;
        }
        return ERROR;
    }
    
    // Getter和Setter方法
    public void setGoodsService(GoodsService goodsService) {
        this.goodsService = goodsService;
    }
}

业务逻辑层由Spring框架的IoC容器统一管理,通过依赖注入方式实现组件间的松耦合。Spring的声明式事务管理确保数据库操作的原子性和一致性。

<!-- Spring业务Bean配置 -->
<bean id="goodsService" class="com.mall.service.impl.GoodsServiceImpl">
    <property name="goodsDAO" ref="goodsDAO"/>
</bean>

<!-- 事务管理配置 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="add*" propagation="REQUIRED"/>
        <tx:method name="update*" propagation="REQUIRED"/>
        <tx:method name="delete*" propagation="REQUIRED"/>
    </tx:attributes>
</tx:advice>

数据持久层采用Hibernate实现对象关系映射,通过配置实体类与数据库表的映射关系,简化了JDBC繁琐的数据操作。

// 商品实体类映射配置
@Entity
@Table(name = "t_goods")
public class Goods implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "goods_id")
    private Integer goodsId;
    
    @Column(name = "goods_name")
    private String goodsName;
    
    @Column(name = "goods_shichangjia")
    private Integer marketPrice;
    
    @Column(name = "goods_tejia")
    private Integer specialPrice;
    
    // 其他字段及getter/setter方法
}

数据库设计深度解析

数据库设计是系统稳定性的基石,本项目通过精心设计的表结构确保了数据完整性和查询效率。

商品表(t_goods)设计分析

t_goods表的设计体现了电商系统对商品信息管理的专业要求。字段设计充分考虑到了计算机配件的特性:

CREATE TABLE `t_goods` (
  `goods_id` int(11) NOT NULL COMMENT '商品ID',
  `goods_name` varchar(50) DEFAULT NULL COMMENT '商品名称',
  `goods_miaoshu` varchar(4000) 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_catelog_id` int(11) DEFAULT NULL COMMENT '商品分类ID',
  `goods_kucun` int(11) DEFAULT NULL COMMENT '商品库存',
  `goods_Del` varchar(50) DEFAULT NULL COMMENT '删除标记',
  PRIMARY KEY (`goods_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='商品表'

设计亮点

  1. 价格字段优化:使用int类型存储价格,避免浮点数精度问题,实际存储时可将金额乘以100(分单位)
  2. 描述字段扩展性goods_miaoshu字段设置为4000字符,满足计算机配件详细参数说明的需求
  3. 软删除支持goods_Del字段实现逻辑删除,保留历史数据的同时避免物理删除的风险
  4. 分类关联设计goods_catelog_id为后续分类检索和关联查询奠定基础

订单-订单项关系设计

订单系统采用主从表结构设计,t_order存储订单基本信息,t_orderitem存储订单商品明细:

CREATE TABLE `t_order` (
  `order_id` int(11) NOT NULL COMMENT '订单ID',
  `order_bianhao` varchar(50) DEFAULT NULL COMMENT '订单编号',
  `order_date` varchar(50) DEFAULT NULL COMMENT '订单日期',
  `order_zhuangtai` varchar(50) DEFAULT NULL COMMENT '订单状态',
  `order_songhuodizhi` varchar(50) DEFAULT NULL COMMENT '送货地址',
  `order_fukuangfangshi` varchar(50) 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='订单项表'

关系设计优势

  • 数据一致性:订单总金额通过订单项计算得出,避免数据冗余和不一致
  • 扩展性强:支持一个订单包含多个商品,符合真实购物场景
  • 查询效率:订单基本信息与商品明细分离,提高常用查询性能

订单管理界面

核心功能实现详解

用户认证与权限管理

系统采用基于角色的访问控制机制,普通用户和管理员具有不同的操作权限。用户登录模块通过Struts2拦截器实现安全验证:

// 登录验证拦截器
public class AuthInterceptor extends AbstractInterceptor {
    @Override
    public String intercept(ActionInvocation invocation) throws Exception {
        Map<String, Object> session = invocation.getInvocationContext().getSession();
        User user = (User) session.get("user");
        
        if(user == null) {
            return "login"; // 跳转到登录页面
        }
        return invocation.invoke();
    }
}

用户表设计包含完整的个人信息字段,支持详细的用户档案管理:

CREATE TABLE `t_user` (
  `user_id` int(11) NOT NULL COMMENT '用户ID',
  `user_name` varchar(50) DEFAULT NULL COMMENT '用户名',
  `user_pw` varchar(55) DEFAULT NULL COMMENT '用户密码',
  `user_realname` varchar(50) DEFAULT NULL COMMENT '真实姓名',
  `user_sex` varchar(50) DEFAULT NULL COMMENT '用户性别',
  `user_address` varchar(50) DEFAULT NULL COMMENT '用户地址',
  `user_tel` varchar(50) DEFAULT NULL COMMENT '用户电话',
  `user_del` varchar(50) DEFAULT NULL COMMENT '删除标记',
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='用户表'

用户登录界面

商品展示与购物车管理

商品展示模块支持多种检索方式,包括按分类、价格区间、特价商品等条件筛选。购物车功能采用Session临时存储,确保用户体验的流畅性:

// 购物车业务逻辑实现
@Service
public class CartService {
    private Map<Integer, CartItem> cartItems = new HashMap<>();
    
    public void addToCart(Goods goods, int quantity) {
        CartItem item = cartItems.get(goods.getGoodsId());
        if(item == null) {
            item = new CartItem(goods, quantity);
            cartItems.put(goods.getGoodsId(), item);
        } else {
            item.setQuantity(item.getQuantity() + quantity);
        }
    }
    
    public BigDecimal getTotalPrice() {
        BigDecimal total = BigDecimal.ZERO;
        for(CartItem item : cartItems.values()) {
            total = total.add(item.getSubtotal());
        }
        return total;
    }
}

商品详情页面

订单处理流程

订单生成过程涉及多个业务步骤,通过Spring事务管理确保数据一致性:

// 订单服务实现
@Service
@Transactional
public class OrderServiceImpl implements OrderService {
    @Autowired
    private OrderDAO orderDAO;
    
    @Autowired
    private OrderItemDAO orderItemDAO;
    
    @Autowired
    private GoodsDAO goodsDAO;
    
    public String createOrder(Order order, List<CartItem> cartItems) {
        // 生成订单编号
        order.setOrderBianhao(generateOrderNumber());
        order.setOrderDate(new Date());
        
        // 保存订单主信息
        orderDAO.save(order);
        
        // 保存订单项并更新库存
        for(CartItem item : cartItems) {
            OrderItem orderItem = new OrderItem();
            orderItem.setOrder(order);
            orderItem.setGoods(item.getGoods());
            orderItem.setGoodsQuantity(item.getQuantity());
            orderItemDAO.save(orderItem);
            
            // 更新商品库存
            Goods goods = item.getGoods();
            goods.setGoodsKucun(goods.getGoodsKucun() - item.getQuantity());
            goodsDAO.update(goods);
        }
        
        return order.getOrderBianhao();
    }
}

订单提交界面

后台管理系统

管理员后台提供完整的商品管理、订单处理、用户管理等功能模块:

// 商品管理Action
public class GoodsManageAction extends ActionSupport {
    private List<Goods> goodsList;
    private Goods goods;
    private String searchKeyword;
    
    public String list() {
        goodsList = goodsService.getAllGoods();
        return SUCCESS;
    }
    
    public String search() {
        goodsList = goodsService.searchGoods(searchKeyword);
        return SUCCESS;
    }
    
    public String update() {
        goodsService.updateGoods(goods);
        return SUCCESS;
    }
}

商品信息管理

实体模型设计策略

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

// 订单与订单项的一对多关系映射
@Entity
@Table(name = "t_order")
public class Order {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer orderId;
    
    private String orderBianhao;
    private Date orderDate;
    private String orderZhuangtai;
    
    @OneToMany(mappedBy = "order", cascade = CascadeType.ALL)
    private Set<OrderItem> orderItems = new HashSet<>();
    
    @ManyToOne
    @JoinColumn(name = "order_user_id")
    private User user;
    
    // 其他字段和方法
}

@Entity
@Table(name = "t_orderitem")
public class OrderItem {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer orderItemId;
    
    private Integer goodsQuantity;
    
    @ManyToOne
    @JoinColumn(name = "order_id")
    private Order order;
    
    @ManyToOne
    @JoinColumn(name = "goods_id")
    private Goods goods;
}

功能展望与系统优化方向

基于当前系统架构,未来可从以下几个方面进行功能扩展和性能优化:

1. 缓存机制引入

当前系统频繁访问商品信息、用户信息等热点数据,可引入Redis缓存减轻数据库压力:

// Redis缓存示例实现
@Service
public class GoodsServiceWithCache {
    @Autowired
    private RedisTemplate<String, Goods> redisTemplate;
    
    public Goods getGoodsById(Integer goodsId) {
        String key = "goods:" + goodsId;
        Goods goods = redisTemplate.opsForValue().get(key);
        if(goods == null) {
            goods = goodsDAO.getById(goodsId);
            redisTemplate.opsForValue().set(key, goods, Duration.ofHours(1));
        }
        return goods;
    }
}

2. 搜索引擎集成

针对计算机配件参数复杂的特点,可集成Elasticsearch提供更强大的搜索能力:

  • 支持参数化搜索(如:CPU核心数、主频、显卡显存等)
  • 实现同义词扩展和拼写纠错
  • 提供相关性排序和筛选功能

3. 微服务架构改造

将单体应用拆分为商品服务、订单服务、用户服务等微服务,提高系统可扩展性和维护性:

  • 使用Spring Cloud实现服务治理
  • API网关统一处理请求路由和认证
  • 服务间通过Feign实现声明式REST调用

4. 移动端适配优化

开发响应式前端或独立的移动APP,提升移动端用户体验:

  • 使用Bootstrap或Vue.js实现响应式设计
  • PWA技术提供近似原生APP的体验
  • 移动支付集成(微信支付、支付宝)

5. 数据分析与推荐系统

基于用户行为数据构建智能推荐引擎:

// 用户行为追踪
@Aspect
@Component
public class UserBehaviorAspect {
    @After("execution(* com.mall.service.*Service.*(..))")
    public void trackUserBehavior(JoinPoint joinPoint) {
        // 记录用户浏览、购买等行为
        // 用于后续的个性化推荐
    }
}

总结

该计算机配件电商平台基于成熟的SSH框架技术栈,构建了一个功能完整、性能稳定的专业级在线购物系统。通过精心设计的数据库结构和模块化的代码实现,系统在商品管理、订单处理、用户认证等核心功能上都展现了良好的扩展性和维护性。三层架构的清晰分离为后续的功能扩展和技术升级奠定了坚实基础。

系统特别针对计算机配件商品的专业特性进行了优化,如详细的商品参数管理、灵活的价格策略支持、复杂的订单处理流程等。后台管理系统为运营人员提供了全面的数据管理和业务监控能力。

随着电子商务技术的不断发展,该系统在缓存优化、搜索体验、移动适配等方面仍有较大的提升空间。通过引入现代技术栈和架构模式,可以进一步提升系统的性能表现和用户体验,满足日益增长的专业化电商需求。

本文关键词
SSH框架计算机配件在线商城系统源码解析电商平台

上下篇

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