# shop **Repository Path**: enhead/shop ## Basic Information - **Project Name**: shop - **Description**: JAVAWEB课程设计,课上限定只能使用使用servlet来实现,但是单纯用这个完成增删查改,又感觉很没有意思,所以这里的精力就花在用servlet实现`SprintBoot`的轻量级实现上。 原型项目的分支在这:https://gitee.com/enhead/shop-prototype - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2024-11-13 - **Last Updated**: 2025-05-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 商城后台管理系统 > 图片显示如果有问题,把项目保存到本地就没问题了 ## 项目简介 JAVAWEB课程设计,课上限定只能使用使用servlet来实现,但是单纯用这个完成增删查改,又感觉很没有意思,所以这里的精力就花在用servlet实现`SprintBoot`的轻量级实现上。 这是一个基于Java Web的商城后台管理系统,提供商品管理、用户管理、订单管理等核心功能。项目采用轻量级架构设计,模仿 Spring Boot 的核心特性,实现了自己的依赖注入容器和 MVC 框架。 ## 项目亮点 ### 1. 自主实现 IOC 容器 - 实现类似 Spring 的依赖注入功能 - `@Component`、`@Service`、`@Repository`、`@Controller` 等注解支持 - 基于注解的自动扫描和注册 - 支持构造器注入和字段注入 ### 2. MVC 框架实现 - 自定义请求处理流程 - `@RequestMapping` 注解支持 - 请求参数自动绑定 - 统一的响应处理机制 ### 3. AOP 实现 - 面向切面编程支持 - 实现了类似 Spring AOP 的功能 - 用于处理跨切面关注点(如:日志、认证) - 基于动态代理实现 ### 4. 配置管理 - 类似 Spring Boot 的配置方式 - 基于 Java 类的配置(对应 `property` 包) - 支持配置的动态加载和覆盖 ### 5. 安全框架 - JWT 认证集成 - 基于 AOP 的权限控制 - 灵活的认证策略配置 ### 6. 数据库访问 - 自定义 JDBC 工具类 - 数据库连接池集成 - SQL 构建器支持动态 SQL ## 技术栈 - 后端框架:Servlet + JSP - 数据库:MySQL - 连接池:Druid - 安全认证:JWT - 日志:Log4j - 构建工具:Maven ## 部分界面展示 ### 管理端 ![管理端-登录](images/管理端-登录.png) ![管理端-订单管理页面](images/管理端-订单管理页面.png) ![管理端-添加商品成功](images/管理端-添加商品成功.png) ### 客户端 ![image-20250430205500323](images/image-20250430205500323.png) ![image-20250430205523944](images/image-20250430205523944.png) ![image-20250430205543882](images/image-20250430205613881.png) ## 系统功能 ### 管理端 - 用户管理 - 用户查询 - 商品管理 - 商品增删查改 - 订单管理 - 条件查询订单 ### 用户端 - 公共功能 - 通过类别查询商品 - 查看全部商品 - 查看商品详情 - 查看商品评价 - 商品问答 - 查看问答 - 咨询商家 - 登录注册 - 购买商品 - 加入购物车 - 会员功能 - 购物车管理 - 查询卡片 - 删除卡片 - 一键下单 - 订单管理 - 订单查询 - 评价商品 ## 环境要求 - JDK 11+ > 这里推荐直接使用Java11,其他版本没有测试过,不知道是否存在问题 - MySQL 5.7+ - Tomcat 10.1+ - Maven 3.6+ ## 部署步骤 ### 1. 数据库配置 - 建表:`sql/建表.sql` ### 2. 项目配置 #### 配置文件 > 这里就类似spring boot的哪些配置文件,例如像yaml、yml只是我这里直接就写在类中,这里就不再赘述了 对应文件夹:`src/main/java/com/wawu/common/property` - `AppProperty`:中配置注解扫描的包的(主要用来配置IOC容器相关注解) - `TomcatProperty`:中配置Tomcat的上下文 > 主要需要修改的是数据库,其他可以不改 1. 修改数据库连接配置 在 `src/main/java/com/wawu/common/property/DatasourceProperty.java` 中修改数据库连接信息: ```java public static final String USERNAME = "root"; // 数据库用户名 public static final String PASSWORD = "your_password"; // 数据库密码 public static final String URL = "jdbc:mysql://localhost:3306/mall"; // 数据库URL ``` #### `tomcat`和Java版本以及环境的配置 - 这里用的是Java11 ![image-20250430200854729](images/image-20250430200854729.png) ![image-20250430200908686](images/image-20250430200908686.png) - `tomcat`的运行需要小心 ![image-20250430200959581](images/image-20250430200959581.png) ![image-20250430201036863](images/image-20250430201036863.png) ----- 后续步骤如果有idea直接编译就行 额外提一嘴,就是编译文件有时候可能不完整,不如爆出像找不到XX类的时候,注意下`target`文件夹是否是有问题 ![image-20250430201218996](images/image-20250430201218996.png) > 这种问题可能就会出现有时候能跑,但是有时候同样的代码却跑不了的问题 ### 3. 项目构建 ```bash mvn clean package ``` ### 4. 部署运行 1. 将生成的 war 包部署到 Tomcat 的 webapps 目录 2. 启动 Tomcat ```bash # Windows D:\tomcat\apache-tomcat-10.1.20\bin\catalina.bat run # Linux/Mac ./catalina.sh run ``` ## API 接口说明 ### 详细接口文档 完整的接口文档请参考:`API文档/javaweb课设--购物系统.apifox.json` > 能够直接导入到apifox ### 认证相关 - POST `/api/user/login` - 用户登录 - POST `/api/user/signup` - 用户注册 - POST `/api/admin/login` - 管理员登录 ### 用户端接口 #### 商品相关 - GET `/api/goods/types` - 获取商品分类列表 - GET `/api/goods/type/{typeId}` - 获取指定分类下的商品 - GET `/api/goods/{goodsId}` - 获取商品详情 - GET `/api/goods/{goodsId}/comments` - 获取商品评价 - GET `/api/goods/{goodsId}/qa` - 获取商品问答 - POST `/api/goods/{goodsId}/qa` - 发布商品咨询 #### 购物车 - GET `/api/cart` - 获取购物车列表 - POST `/api/cart` - 添加商品到购物车 - DELETE `/api/cart/{id}` - 从购物车删除商品 - POST `/api/cart/order` - 购物车商品下单 #### 订单 - GET `/api/orders` - 获取订单列表 - GET `/api/orders/{orderId}` - 获取订单详情 - POST `/api/orders/{orderId}/comment` - 评价订单商品 ### 管理端接口 #### 用户管理 - GET `/api/admin/users` - 用户列表查询 - GET `/api/admin/users/{userId}` - 获取用户详情 #### 商品管理 - GET `/api/admin/goods` - 商品列表查询 - POST `/api/admin/goods` - 添加商品 - PUT `/api/admin/goods/{goodsId}` - 修改商品信息 - DELETE `/api/admin/goods/{goodsId}` - 删除商品 - POST `/api/admin/goods/types` - 添加商品分类 - PUT `/api/admin/goods/types/{typeId}` - 修改分类信息 #### 订单管理 - GET `/api/admin/orders` - 订单列表查询 - GET `/api/admin/orders/{orderId}` - 获取订单详情 - PUT `/api/admin/orders/{orderId}/status` - 更新订单状态 ### 接口认证 > 这里可以不管,这里把登录校验去掉了 除了登录注册接口外,其他接口都需要在请求头中携带 token: ```http Authorization: Bearer your_token ``` ### 通用响应格式 ```json { "code": 200, "msg": "操作成功", "data": { // 具体的响应数据 } } ``` ### 错误码说明 - 200: 成功 - 400: 请求参数错误 - 401: 未认证或认证失败 - 403: 无权限访问 - 404: 资源不存在 - 500: 服务器内部错误 ## 注意事项 1. 首次运行前请确保数据库已正确配置 2. 默认管理员账号密码请查看数据库初始化脚本 3. 生产环境部署时请修改默认密码和密钥 4. 建议定期备份数据库 ## 常见问题 1. 数据库连接失败 - 检查数据库服务是否启动 - 验证数据库用户名密码是否正确 - 确认数据库是否存在 2. Token 认证失败 - 检查请求头中是否包含正确的 token - 确认 token 是否过期