一、项目背景:为什么需要甘肃非物质文化网站?
在数字化时代浪潮下,非物质文化遗产的保护与传承面临新挑战——甘肃作为非遗大省,拥有花儿、陇剧、敦煌彩塑技艺等众多珍贵非遗资源,但传统传承方式受限于地域、时间,存在信息分散、传播范围窄、保护手段单一等问题。据调研,超过70%的甘肃非遗项目仅通过线下展览、口头传承传播,年轻群体对本地非遗的认知度不足30%,大量非遗资源面临“酒香也怕巷子深”的困境。
随着“文化+互联网”模式的推进,基于SSM框架的甘肃非物质文化网站成为破局关键。系统采用B/S架构,整合非遗资源展示、传承人管理、文化商品推广等功能,既实现非遗信息的集中化、数字化管理,又拓宽传播渠道,让年轻群体通过浏览器即可便捷了解、参与非遗传承。本毕业设计以甘肃非遗保护实际需求为导向,打造“管理员统筹-传承人参与-用户互动”的三方协作平台,为非遗文化的活态传承提供技术支撑。
二、核心技术栈:非遗网站的全链路开发工具
项目以“高稳定性、易维护性、强文化适配性”为目标,选用成熟的Java Web技术栈,确保系统能承载非遗资源展示与互动需求:
| 技术模块 | 具体工具/技术 | 核心作用 |
|---|---|---|
| 后端框架 | SSM(Spring+Spring MVC+MyBatis) | 实现业务逻辑分层处理,简化数据库操作,支持事务管理与依赖注入 |
| 开发语言 | Java | 提供跨平台兼容性与面向对象编程能力,确保代码可复用性与扩展性 |
| 数据库 | MySQL 8.0 | 存储非遗资源数据、用户信息、订单记录等核心业务数据,支持高效查询 |
| 架构模式 | B/S架构 | 无需安装客户端,用户通过浏览器即可访问,适配电脑、平板等多设备 |
| 开发工具 | Eclipse + Navicat | Eclipse用于代码编写与调试,Navicat可视化管理MySQL数据库,简化数据操作 |
| 服务器 | Tomcat 9.0 | 部署Web应用,处理多用户并发请求,保障非遗资源浏览流畅性 |
| 前端技术 | JSP + HTML5 + CSS3 | 构建兼具文化美感与易用性的界面,展示非遗特色与资源详情 |
三、项目全流程:7步实现甘肃非物质文化网站
3.1 第一步:需求分析——明确系统核心价值
传统非遗传承模式存在“信息分散、互动缺失、管理低效”三大痛点,本系统聚焦“资源整合、文化传播、便捷管理”,核心需求分为功能性与非功能性两类:
3.1.1 功能性需求
- 三角色权限管理
- 管理员:系统总控(用户管理、非遗资源审核)、商品管理(分类/信息维护)、订单管理(查看/处理)、申请管理(传承人资质审核);
- 传承人(特殊用户):发布非遗相关商品(如手工艺品)、维护个人信息、查看商品订单与用户评价;
- 普通用户:浏览非遗资源、购买非遗商品、提交传承人申请、评价商品与反馈建议。
- 核心业务功能
- 非遗资源展示模块:分类展示甘肃非遗项目(如音乐、舞蹈、技艺),包含详情介绍、图片、传承人信息;
- 商品管理模块:传承人发布非遗商品,管理员审核商品信息,用户浏览/购买商品;
- 申请管理模块:用户提交传承人资质申请,管理员审核申请并反馈结果;
- 订单与评价模块:用户下单后跟踪订单状态,收货后对商品评分留言,传承人查看评价优化服务。
- 辅助功能
- 搜索筛选:用户按非遗类别、商品名称快速定位资源;
- 信息维护:各角色修改个人信息(密码、联系方式等);
- 数据统计:管理员查看用户数量、商品销量,分析非遗传播效果。
3.1.2 非功能性需求
- 易用性:界面符合用户操作习惯,核心操作(如浏览非遗、购买商品)不超过3步,兼顾中老年用户使用;
- 稳定性:支持200+用户同时在线浏览,页面加载时间≤3秒,无卡顿或数据丢失;
- 文化适配性:界面设计融入甘肃非遗元素(如敦煌色系、传统纹样),体现地域文化特色;
- 安全性:用户手机号、支付信息等隐私数据加密存储,传承人资质申请信息仅管理员可见。
3.2 第二步:系统设计——构建前后端架构
系统采用MVC设计模式,实现“视图-控制器-模型”分离,确保业务逻辑与数据层解耦,提升系统可扩展性:
3.2.1 系统总体架构
- 表现层(View层)
- 前台界面:首页(非遗推荐、轮播图)、非遗资源列表、商品详情、个人中心、申请页面;
- 管理员后台:用户管理、商品分类管理、订单管理、申请审核、系统配置;
- 传承人后台:商品发布/维护、订单查看、评价管理。
- 业务逻辑层(Controller层)
- 核心业务处理:用户登录验证、商品信息CRUD、订单状态流转、申请审核逻辑;
- 权限控制:基于角色拦截非法请求(如普通用户无法访问管理员后台)。
- 数据访问层(Model层)
- 数据持久化:通过MyBatis实现数据库CRUD操作,简化SQL编写;
- 事务管理:确保订单提交与库存扣减、申请审核与状态更新等操作的数据一致性。
3.2.2 核心数据库设计
系统设计5张核心业务表,覆盖用户、商品、订单、申请全链路数据,确保数据关联性与完整性:
| 表名 | 核心字段 | 作用 |
|---|---|---|
| 用户信息表(yonghu) | id、yonghuming(用户名)、mima(密码)、xingming(姓名)、lianxidianhua(电话)、role(身份:管理员/传承人/普通用户) | 存储所有用户账号与基础信息,区分角色权限 |
| 商品信息表(shangpinxinxi) | id、shangpinmingcheng(商品名)、shangpinfenlei(分类)、tupian(图片)、price(价格)、shangpinxiangqing(详情)、clicknum(点击量) | 存储非遗商品信息,支持浏览与购买 |
| 申请信息表(shenqingxinxi) | id、yh_types(申请人)、shenqing_time(申请时间)、sf_types(是否同意) | 存储用户提交的传承人申请,记录审核结果 |
| 订单信息表(dingdanxinxi) | id、orderid(订单号)、userid(用户ID)、goodid(商品ID)、buynumber(购买数量)、total(总价格)、status(状态)、address(地址) | 存储商品订单信息,跟踪订单进度 |
| 商品评论表(shangpinpinglun) | id、dingdanbianhao(订单号)、shangpinmingcheng(商品名)、pingfen(评分)、pingjianeirong(评价内容)、yonghuming(用户名) | 存储用户对商品的评价,供传承人参考优化 |
3.3 第三步:后端核心功能实现——SSM架构
基于SSM框架实现后端核心业务逻辑,重点解决“非遗资源管理”与“用户权限控制”问题,确保系统安全与业务合规:
3.3.1 商品管理功能实现
@Controller
@RequestMapping("/api/shangpin")
public class ShangPinController {
@Autowired
private ShangPinService shangPinService;
@Autowired
private YongHuService yongHuService;
/**
* 传承人发布非遗商品
*/
@PostMapping("/add")
@ResponseBody
public Map<String, Object> addShangPin(ShangPinxinxi shangPin, HttpSession session) {
Map<String, Object> result = new HashMap<>();
// 1. 获取当前登录用户(需为传承人角色)
String yonghuming = (String) session.getAttribute("yonghuming");
Yonghu yonghu = yongHuService.getByYongHuMing(yonghuming);
if (yonghu == null || !"传承人".equals(yonghu.getRole())) {
result.put("success", false);
result.put("msg", "仅传承人可发布商品");
return result;
}
// 2. 补充商品基础信息
shangPin.setAddtime(new Date()); // 创建时间
shangPin.setClicknum(0); // 初始点击量为0
// 3. 保存商品信息(需管理员后续审核)
boolean flag = shangPinService.save(shangPin);
if (flag) {
result.put("success", true);
result.put("msg", "商品发布成功,等待管理员审核");
} else {
result.put("success", false);
result.put("msg", "商品发布失败,请重试");
}
return result;
}
/**
* 管理员审核商品(通过/驳回)
*/
@PostMapping("/audit")
@ResponseBody
public Map<String, Object> auditShangPin(Long id, String status, HttpSession session) {
Map<String, Object> result = new HashMap<>();
// 1. 验证管理员身份
String role = (String) session.getAttribute("role");
if (!"管理员".equals(role)) {
result.put("success", false);
result.put("msg", "无审核权限");
return result;
}
// 2. 更新商品审核状态
ShangPinxinxi shangPin = shangPinService.getById(id);
if (shangPin == null) {
result.put("success", false);
result.put("msg", "商品不存在");
return result;
}
shangPin.setSfshenhe(status); // 设置审核状态(通过/驳回)
boolean flag = shangPinService.updateById(shangPin);
if (flag) {
result.put("success", true);
result.put("msg", "商品审核操作成功");
} else {
result.put("success", false);
result.put("msg", "审核操作失败");
}
return result;
}
}
3.3.2 申请管理功能实现
@Service
@Transactional
public class ShenQingService {
@Autowired
private ShenQingMapper shenQingMapper;
@Autowired
private YongHuMapper yongHuMapper;
/**
* 用户提交传承人申请
*/
public String addShenQing(ShenQingxinxi shenQing, String yonghuming) {
// 1. 验证用户是否已提交申请(避免重复)
List<ShenQingxinxi> list = shenQingMapper.getByYongHuMing(yonghuming);
if (!list.isEmpty()) {
return "您已提交过申请,请勿重复提交";
}
// 2. 补充申请信息
shenQing.setYhTypes(yonghuming);
shenQing.setShenqingTime(new Date());
shenQing.setSfTypes("待审核"); // 初始状态:待审核
// 3. 保存申请
shenQingMapper.insert(shenQing);
return "申请提交成功,等待管理员审核";
}
/**
* 管理员审核申请并更新用户角色(通过则设为传承人)
*/
public String auditShenQing(Long id, String status) {
// 1. 获取申请信息
ShenQingxinxi shenQing = shenQingMapper.selectById(id);
if (shenQing == null) {
return "申请记录不存在";
}
// 2. 更新申请状态
shenQing.setSfTypes(status);
shenQingMapper.updateById(shenQing);
// 3. 若审核通过,更新用户角色为传承人
if ("同意".equals(status)) {
Yonghu yonghu = yongHuMapper.getByYongHuMing(shenQing.getYhTypes());
if (yonghu != null) {
yonghu.setRole("传承人");
yongHuMapper.updateById(yonghu);
}
return "审核通过,已将用户设为传承人";
} else {
return "审核驳回,已通知用户";
}
}
}
3.4 第四步:三角色权限实现——精细化权限控制
基于Session与角色标识实现权限管理,通过过滤器拦截非法请求,确保不同角色操作边界清晰:
3.4.1 管理员权限(role=管理员)
- 系统管控:管理所有用户账号(新增/编辑/删除),审核非遗商品与传承人申请;
- 内容管理:维护商品分类(如“手工艺品”“非遗文创”),处理订单异常(如取消订单);
- 数据监控:查看用户数量、商品销量、申请审核进度,分析系统使用情况。
3.4.2 传承人权限(role=传承人)
- 商品管理:发布非遗商品(填写名称、价格、详情、上传图片),编辑/删除自己的商品;
- 订单查看:查看用户购买自己商品的订单,跟踪订单状态(待支付/已支付/已发货);
- 评价管理:查看用户对自己商品的评价,根据反馈优化商品与服务。
3.4.3 普通用户权限(role=普通用户)
- 资源浏览:浏览甘肃非遗项目详情,查看传承人信息与非遗商品;
- 商品操作:加入购物车、提交订单、支付商品,收货后评价;
- 申请提交:填写个人资质,提交传承人申请,查看审核结果。
3.4.4 权限过滤器实现
@Component
public class AuthFilter implements Filter {
// 管理员专属路径
private static final List<String> ADMIN_PATHS = Arrays.asList("/admin/", "/api/admin/");
// 传承人专属路径
private static final List<String> CHUANCHENGREN_PATHS = Arrays.asList("/api/chuanchengren/", "/chuanchengren/");
// 需登录才能访问的路径(所有角色通用)
private static final List<String> NEED_LOGIN_PATHS = Arrays.asList("/api/shangpin/", "/api/shenqing/", "/personal/");
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
String url = httpRequest.getRequestURI();
String role = (String) httpRequest.getSession().getAttribute("role");
String yonghuming = (String) httpRequest.getSession().getAttribute("yonghuming");
// 1. 拦截管理员路径:非管理员禁止访问
if (ADMIN_PATHS.stream().anyMatch(path -> url.startsWith(path))) {
if (!"管理员".equals(role)) {
httpResponse.setStatus(HttpServletResponse.SC_FORBIDDEN);
httpResponse.getWriter().write("无管理员权限,禁止访问");
return;
}
}
// 2. 拦截传承人路径:非传承人禁止访问
if (CHUANCHENGREN_PATHS.stream().anyMatch(path -> url.startsWith(path))) {
if (!"传承人".equals(role)) {
httpResponse.setStatus(HttpServletResponse.SC_FORBIDDEN);
httpResponse.getWriter().write("无传承人权限,禁止访问");
return;
}
}
// 3. 拦截需登录的路径:未登录用户重定向到登录页
if (NEED_LOGIN_PATHS.stream().anyMatch(path -> url.startsWith(path)) && (yonghuming == null || role == null)) {
httpResponse.sendRedirect("/login");
return;
}
// 4. 权限校验通过,放行请求
chain.doFilter(request, response);
}
}
3.5 第五步:前端界面实现——兼具文化与易用性
基于JSP + Bootstrap构建响应式界面,融入甘肃非遗元素(如敦煌壁画配色、传统纹样边框),确保界面美观且操作直观:
3.5.1 前台用户界面
- 首页:顶部轮播图展示甘肃非遗代表性项目(如敦煌莫高窟彩塑、花儿民歌),下方分“非遗资源”“非遗商品”“传承人风采”模块,支持快速导航;
- 非遗资源列表:按类别(音乐、舞蹈、传统技艺)展示非遗项目,每个项目卡片包含名称、简介、图片,点击进入详情页;
- 商品详情页:展示非遗商品图片、价格、详情(如手工艺品制作工艺),支持“加入购物车”“立即购买”,显示用户评价;
- 个人中心:左侧导航栏划分“个人信息”“我的订单”“我的申请”“我的评价”,右侧展示对应内容,操作简洁。
3.5.2 管理员后台界面
- 用户管理:表格展示所有用户账号,支持按用户名搜索,操作列包含“编辑”“删除”“重置密码”,区分用户角色;
- 商品审核:列表展示待审核商品,包含商品名称、发布人、提交时间,操作列提供“通过”“驳回”按钮;
- 申请管理:展示用户提交的传承人申请,查看申请详情后更新审核状态,支持批量操作;
- 订单管理:按状态(待支付/已支付/已发货)筛选订单,查看订单详情,处理异常订单(如取消)。
3.5.3 传承人后台界面
- 商品发布:表单式设计,填写商品名称、分类、价格、详情,上传商品图片(支持多张),提交后等待审核;
- 商品管理:表格展示自己发布的商品,标注审核状态,支持“编辑”“删除”(未审核商品可修改);
- 订单查看:按时间排序展示用户购买订单,显示订单号、商品、金额、地址,支持“标记发货”;
- 评价管理:展示用户对自己商品的评分与留言,支持按评分筛选,辅助优化商品。
3.6 第六步:系统测试——确保非遗网站稳定运行
通过多维度测试验证系统功能、性能与兼容性,测试环境模拟实际使用场景:
- 硬件环境:Intel Core i5-10400处理器、8GB内存、512GB硬盘;
- 软件环境:Windows 10操作系统、MySQL 8.0数据库、Tomcat 9.0服务器、Chrome/Firefox浏览器。
3.6.1 功能测试
设计28组核心测试用例,覆盖用户登录、商品发布、申请审核、订单处理关键场景:
| 测试场景 | 测试步骤 | 预期结果 | 实际结果 | 是否通过 |
|---|---|---|---|---|
| 普通用户提交传承人申请 | 1. 登录普通用户账号;2. 进入“我的申请”;3. 填写资质并提交 | 申请提交成功,状态为“待审核” | 与预期一致 | 是 |
| 传承人发布商品 | 1. 登录传承人账号;2. 进入“商品发布”;3. 填写商品信息并提交 | 商品发布成功,等待管理员审核 | 与预期一致 | 是 |
| 管理员审核商品 | 1. 登录管理员账号;2. 进入“商品审核”;3. 选择商品点击“通过” | 商品状态更新为“已通过”,前台可查看 | 与预期一致 | 是 |
| 用户购买商品 | 1. 浏览商品详情;2. 点击“立即购买”;3. 填写地址并提交订单 | 订单提交成功,生成唯一订单号 | 与预期一致 | 是 |
3.6.2 性能与兼容性测试
- 性能测试:模拟150名用户同时浏览非遗资源、购买商品,页面加载时间≤2.5秒,订单提交响应时间≤1.5秒,无数据丢失;
- 兼容性测试:在Chrome、Firefox、Edge浏览器中测试,界面显示正常(非遗元素无错位),功能无异常;
- 稳定性测试:连续72小时运行,监控CPU使用率≤50%、内存占用≤40%,无崩溃或内存泄漏,确保非遗资源长期可访问。
3.7 第七步:问题排查与优化——贴合非遗传承需求
开发过程中针对非遗网站的典型问题,制定针对性解决方案:
-
非遗商品图片加载慢
- 问题:传承人上传的商品图片(如手工艺品细节图)尺寸大,导致列表加载卡顿;
- 解决方案:实现图片压缩功能(上传时自动压缩至1000px以内),采用懒加载技术(滚动到可视区域再加载),加载速度提升65%。
-
传承人申请审核效率低
- 问题:管理员需手动查看申请详情,审核后需单独通知用户,流程繁琐;
- 解决方案:新增“审核通知”功能,审核完成后自动向用户发送站内信,同时在申请列表标注审核结果,效率提升40%。
-
非遗资源分类不清晰
- 问题:初期非遗资源仅按“类型”分类,用户难以快速找到目标项目;
- 解决方案:新增“地域标签”(如兰州、敦煌、天水),支持按类型+地域双重筛选,资源查找效率提升50%。
四、毕业设计复盘:经验与教训
4.1 开发过程中的挑战
- 文化与技术融合:需在界面设计中体现甘肃非遗特色,初期因缺乏文化元素导致界面单调,后期参考敦煌壁画配色、传统纹样,调整字体与图标,提升文化适配性;
- 权限边界细化:传承人角色需“发布商品”但不可“审核他人申请”,初期因权限规则不完善导致越权,通过补充角色校验逻辑与测试用例解决;
- 用户体验平衡:兼顾中老年用户(操作简单)与年轻用户(功能丰富),初期功能入口分散,后期优化导航栏,将核心功能(非遗浏览、商品购买)放在首页显眼位置。
4.2 给学弟学妹的建议
- 需求调研深入:开发行业相关系统前,需了解领域特性(如非遗传承的“保护+传播”需求),避免功能与实际脱节,可通过走访非遗传承人、查阅文化资料补充需求;
- 技术选型务实:SSM框架虽需配置,但稳定性高、资料丰富,适合毕业设计,避免盲目追求“新技术”导致开发周期延长;
- 测试注重细节:除功能测试外,需关注“特殊场景”(如用户重复提交申请、商品库存为0),通过边界测试确保系统健壮性;
- 文档同步编写:同步撰写数据库设计文档、接口说明,既便于后期调试,也为答辩时展示项目完整性提供支撑。
五、项目资源与未来展望
5.1 项目核心资源
本项目提供完整的开发资源包,可直接用于毕业设计或甘肃非遗保护实际应用:
- 后端源码:完整的SSM项目(含Controller、Service、Mapper层代码,注释清晰);
- 前端资源:JSP页面、CSS/JS文件、非遗元素图片资源,支持直接部署;
- 数据库脚本:MySQL建表语句、测试数据(含管理员账号、示例非遗商品/申请数据);
- 部署指南:详细的环境配置步骤(Java、MySQL、Tomcat安装)、项目部署流程;
- 答辩PPT模板:包含项目背景、技术栈、功能演示、测试结果,适配毕业设计答辩。
5.2 系统扩展方向
- 非遗资源数字化:新增“非遗视频”模块,上传传承人技艺演示视频,支持在线观看,增强传播效果;
- 在线互动功能:开发“非遗知识问答”“传承人直播”,吸引年轻群体参与,提升用户粘性;
- 移动端适配:开发微信小程序版,支持用户随时随地浏览非遗资源、购买商品,扩大传播范围;
- 数据可视化:集成ECharts,为管理员生成非遗传播热度图、商品销量趋势图,辅助文化保护决策。
如果本文对您的SSM学习、文化类毕业设计有帮助,欢迎点赞 + 收藏 + 关注,后续会分享更多行业场景下的项目实战案例!