# SSM_template — 甜蜜时光蛋糕坊 基于 Spring + Spring MVC + MyBatis 的蛋糕商城系统。 ## 技术栈 | 层 | 技术 | |---|------| | 前端 | JSP + JSTL + Bootstrap 4.3.1 CDN + jQuery CDN + Font Awesome | | 控制层 | Spring MVC 5.3.31 | | 业务层 | Spring 5.3.31 + @Transactional | | 持久层 | MyBatis 3.5.6 + MyBatis-Spring 2.0.6 | | 连接池 | Druid 1.2.8 | | 数据库 | MySQL 8.0 | | 构建 | Maven (Java 8, war 打包) | | 容器 | Tomcat 7+ | ## 快速开始 ### 1. 数据库 执行 `sql/init.sql` 创建数据库 `ssm` 及 21 张表,并插入模拟数据。 默认管理员:`admin` / `123456` 默认用户:`zhangsan` / `123456`、`lisi` / `123456`、`wangwu` / `123456` ### 2. 配置 编辑 `src/main/resources/jdbc.properties`,修改数据库连接信息。 ### 3. 运行 ```bash mvn compile # 编译 mvn clean package # 打包 war mvn tomcat7:run # 开发服务器 → http://localhost:8080/SSM_template mvn test # 运行测试 ``` ## 项目结构 ``` src/main/java/space/anyi/ ├── controller/ │ ├── front/ # 用户端控制器 (10) │ └── admin/ # 管理端控制器 (8) ├── entity/ # 实体类 (21) + dto/ (12) + vo/ (12) ├── mapper/ # MyBatis Mapper 接口 (21) ├── service/ # 业务接口 (19) │ └── impl/ # 业务实现 (18) ├── interceptor/ # 登录拦截器 (LoginInterceptor, AdminLoginInterceptor) ├── util/ # 工具类 (MD5Util, OrderNoGenerator, Converter) └── constant/ # 常量 (OrderStatus) src/main/resources/ ├── mapper/ # MyBatis XML 映射文件 (21) ├── spring-context.xml # Spring 核心配置 ├── spring-mvc.xml # Spring MVC 配置 ├── mybatis-config.xml # MyBatis 配置 ├── logback.xml # 日志配置 └── jdbc.properties # 数据库连接 src/main/webapp/WEB-INF/views/ ├── index.jsp ├── common/ # header.jsp, footer.jsp ├── cake/ # 蛋糕列表、详情、定制 ├── cart/ # 购物车 ├── order/ # 订单结算、列表、详情 ├── user/ # 登录、注册、个人资料、地址管理 ├── favorite/ # 收藏 ├── coupon/ # 优惠券 ├── message/ # 留言 ├── activity/ # 活动 └── admin/ # 后台管理 (16 个 JSP) ``` ## 核心配置文件 | 文件 | 用途 | |------|------| | `spring-context.xml` | 数据源、MyBatis、事务、AOP | | `spring-mvc.xml` | 控制器扫描、拦截器、视图解析、文件上传 | | `mybatis-config.xml` | 驼峰映射、SQL 日志、二级缓存关闭 | | `logback.xml` | 按级别分离日志 (debug/info/error),滚动策略 | | `web.xml` | DispatcherServlet、编码过滤器 | ## 权限控制 | 拦截器 | Session Key | 保护路径 | 排除 | |--------|-------------|----------|------| | LoginInterceptor | `user` | `/user/*` `/cart/*` `/order/*` `/favorite/*` `/coupon/*` | `/user/login` `/user/register` | | AdminLoginInterceptor | `admin` | `/admin/**` | `/admin/login` | ## 测试 测试位于 `src/test/java/space/anyi/`,包含 6 个 Service 测试和 3 个 Mapper 测试。 - 基类 `BaseMapperTest` 使用 `spring-test.xml`(独立配置,数据库 `ssm_test`) - `@Transactional` 自动回滚 ## 注意事项 - Java 8 编译目标,war 打包方式 - Druid 数据源在 XML 中配置(非 Spring Boot 方式) - 文件上传最大 5MB(CommonsMultipartResolver) - PageHelper 5.3.3 分页插件已启用 - MyBatis `mapUnderscoreToCamelCase=true`(数据库下划线 → Java 驼峰) - 图片存储于 `./upload` 目录,路径由 `jdbc.properties` 中的 `upload.path` 配置