毕业设计实战:基于SSM的甘肃非物质文化网站设计与实现

74 阅读17分钟

一、项目背景:为什么需要甘肃非物质文化网站?

在数字化时代浪潮下,非物质文化遗产的保护与传承面临新挑战——甘肃作为非遗大省,拥有花儿、陇剧、敦煌彩塑技艺等众多珍贵非遗资源,但传统传承方式受限于地域、时间,存在信息分散、传播范围窄、保护手段单一等问题。据调研,超过70%的甘肃非遗项目仅通过线下展览、口头传承传播,年轻群体对本地非遗的认知度不足30%,大量非遗资源面临“酒香也怕巷子深”的困境。

随着“文化+互联网”模式的推进,基于SSM框架的甘肃非物质文化网站成为破局关键。系统采用B/S架构,整合非遗资源展示、传承人管理、文化商品推广等功能,既实现非遗信息的集中化、数字化管理,又拓宽传播渠道,让年轻群体通过浏览器即可便捷了解、参与非遗传承。本毕业设计以甘肃非遗保护实际需求为导向,打造“管理员统筹-传承人参与-用户互动”的三方协作平台,为非遗文化的活态传承提供技术支撑。

二、核心技术栈:非遗网站的全链路开发工具

项目以“高稳定性、易维护性、强文化适配性”为目标,选用成熟的Java Web技术栈,确保系统能承载非遗资源展示与互动需求:

技术模块具体工具/技术核心作用
后端框架SSM(Spring+Spring MVC+MyBatis)实现业务逻辑分层处理,简化数据库操作,支持事务管理与依赖注入
开发语言Java提供跨平台兼容性与面向对象编程能力,确保代码可复用性与扩展性
数据库MySQL 8.0存储非遗资源数据、用户信息、订单记录等核心业务数据,支持高效查询
架构模式B/S架构无需安装客户端,用户通过浏览器即可访问,适配电脑、平板等多设备
开发工具Eclipse + NavicatEclipse用于代码编写与调试,Navicat可视化管理MySQL数据库,简化数据操作
服务器Tomcat 9.0部署Web应用,处理多用户并发请求,保障非遗资源浏览流畅性
前端技术JSP + HTML5 + CSS3构建兼具文化美感与易用性的界面,展示非遗特色与资源详情

三、项目全流程:7步实现甘肃非物质文化网站

3.1 第一步:需求分析——明确系统核心价值

传统非遗传承模式存在“信息分散、互动缺失、管理低效”三大痛点,本系统聚焦“资源整合、文化传播、便捷管理”,核心需求分为功能性与非功能性两类:

3.1.1 功能性需求

  1. 三角色权限管理
    • 管理员:系统总控(用户管理、非遗资源审核)、商品管理(分类/信息维护)、订单管理(查看/处理)、申请管理(传承人资质审核);
    • 传承人(特殊用户):发布非遗相关商品(如手工艺品)、维护个人信息、查看商品订单与用户评价;
    • 普通用户:浏览非遗资源、购买非遗商品、提交传承人申请、评价商品与反馈建议。
  2. 核心业务功能
    • 非遗资源展示模块:分类展示甘肃非遗项目(如音乐、舞蹈、技艺),包含详情介绍、图片、传承人信息;
    • 商品管理模块:传承人发布非遗商品,管理员审核商品信息,用户浏览/购买商品;
    • 申请管理模块:用户提交传承人资质申请,管理员审核申请并反馈结果;
    • 订单与评价模块:用户下单后跟踪订单状态,收货后对商品评分留言,传承人查看评价优化服务。
  3. 辅助功能
    • 搜索筛选:用户按非遗类别、商品名称快速定位资源;
    • 信息维护:各角色修改个人信息(密码、联系方式等);
    • 数据统计:管理员查看用户数量、商品销量,分析非遗传播效果。

3.1.2 非功能性需求

  • 易用性:界面符合用户操作习惯,核心操作(如浏览非遗、购买商品)不超过3步,兼顾中老年用户使用;
  • 稳定性:支持200+用户同时在线浏览,页面加载时间≤3秒,无卡顿或数据丢失;
  • 文化适配性:界面设计融入甘肃非遗元素(如敦煌色系、传统纹样),体现地域文化特色;
  • 安全性:用户手机号、支付信息等隐私数据加密存储,传承人资质申请信息仅管理员可见。

3.2 第二步:系统设计——构建前后端架构

系统采用MVC设计模式,实现“视图-控制器-模型”分离,确保业务逻辑与数据层解耦,提升系统可扩展性:

3.2.1 系统总体架构

  1. 表现层(View层)
    • 前台界面:首页(非遗推荐、轮播图)、非遗资源列表、商品详情、个人中心、申请页面;
    • 管理员后台:用户管理、商品分类管理、订单管理、申请审核、系统配置;
    • 传承人后台:商品发布/维护、订单查看、评价管理。
  2. 业务逻辑层(Controller层)
    • 核心业务处理:用户登录验证、商品信息CRUD、订单状态流转、申请审核逻辑;
    • 权限控制:基于角色拦截非法请求(如普通用户无法访问管理员后台)。
  3. 数据访问层(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 第七步:问题排查与优化——贴合非遗传承需求

开发过程中针对非遗网站的典型问题,制定针对性解决方案:

  1. 非遗商品图片加载慢

    • 问题:传承人上传的商品图片(如手工艺品细节图)尺寸大,导致列表加载卡顿;
    • 解决方案:实现图片压缩功能(上传时自动压缩至1000px以内),采用懒加载技术(滚动到可视区域再加载),加载速度提升65%。
  2. 传承人申请审核效率低

    • 问题:管理员需手动查看申请详情,审核后需单独通知用户,流程繁琐;
    • 解决方案:新增“审核通知”功能,审核完成后自动向用户发送站内信,同时在申请列表标注审核结果,效率提升40%。
  3. 非遗资源分类不清晰

    • 问题:初期非遗资源仅按“类型”分类,用户难以快速找到目标项目;
    • 解决方案:新增“地域标签”(如兰州、敦煌、天水),支持按类型+地域双重筛选,资源查找效率提升50%。

四、毕业设计复盘:经验与教训

4.1 开发过程中的挑战

  1. 文化与技术融合:需在界面设计中体现甘肃非遗特色,初期因缺乏文化元素导致界面单调,后期参考敦煌壁画配色、传统纹样,调整字体与图标,提升文化适配性;
  2. 权限边界细化:传承人角色需“发布商品”但不可“审核他人申请”,初期因权限规则不完善导致越权,通过补充角色校验逻辑与测试用例解决;
  3. 用户体验平衡:兼顾中老年用户(操作简单)与年轻用户(功能丰富),初期功能入口分散,后期优化导航栏,将核心功能(非遗浏览、商品购买)放在首页显眼位置。

4.2 给学弟学妹的建议

  1. 需求调研深入:开发行业相关系统前,需了解领域特性(如非遗传承的“保护+传播”需求),避免功能与实际脱节,可通过走访非遗传承人、查阅文化资料补充需求;
  2. 技术选型务实:SSM框架虽需配置,但稳定性高、资料丰富,适合毕业设计,避免盲目追求“新技术”导致开发周期延长;
  3. 测试注重细节:除功能测试外,需关注“特殊场景”(如用户重复提交申请、商品库存为0),通过边界测试确保系统健壮性;
  4. 文档同步编写:同步撰写数据库设计文档、接口说明,既便于后期调试,也为答辩时展示项目完整性提供支撑。

五、项目资源与未来展望

5.1 项目核心资源

本项目提供完整的开发资源包,可直接用于毕业设计或甘肃非遗保护实际应用:

  • 后端源码:完整的SSM项目(含Controller、Service、Mapper层代码,注释清晰);
  • 前端资源:JSP页面、CSS/JS文件、非遗元素图片资源,支持直接部署;
  • 数据库脚本:MySQL建表语句、测试数据(含管理员账号、示例非遗商品/申请数据);
  • 部署指南:详细的环境配置步骤(Java、MySQL、Tomcat安装)、项目部署流程;
  • 答辩PPT模板:包含项目背景、技术栈、功能演示、测试结果,适配毕业设计答辩。

5.2 系统扩展方向

  1. 非遗资源数字化:新增“非遗视频”模块,上传传承人技艺演示视频,支持在线观看,增强传播效果;
  2. 在线互动功能:开发“非遗知识问答”“传承人直播”,吸引年轻群体参与,提升用户粘性;
  3. 移动端适配:开发微信小程序版,支持用户随时随地浏览非遗资源、购买商品,扩大传播范围;
  4. 数据可视化:集成ECharts,为管理员生成非遗传播热度图、商品销量趋势图,辅助文化保护决策。

如果本文对您的SSM学习、文化类毕业设计有帮助,欢迎点赞 + 收藏 + 关注,后续会分享更多行业场景下的项目实战案例!