基于SSM的戏剧推广网站的设计与实现

末尾获取源码
开发语言:Java
Java开发工具:JDK1.8
后端框架:SSM
前端:Vue、HTML
数据库:MySQL5.7和Navicat管理工具结合
服务器:Tomcat8.5
开发软件:IDEA / Eclipse
是否Maven项目:是


目录

一、项目简介

二、系统功能

三、系统项目截图

管理员功能实现

戏曲信息管理

戏曲留言管理

论坛管理

相关资讯管理

用户管理

用户功能实现

在线论坛

戏曲信息

相关资讯

四、核心代码

登录相关

文件上传

封装


一、项目简介

如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统戏剧推广信息管理难度大,容错率低,管理人员处理数据费工费时,所以专门为解决这个难题开发了一个戏剧推广网站,可以解决许多问题。

戏剧推广网站实现的功能包括论坛管理,公告信息管理,戏曲信息管理,戏曲留言管理,戏曲收藏管理,用户管理,相关资讯管理等功能。该系统采用了Mysql数据库,Java语言,Vue框架等技术进行编程实现。

戏剧推广网站可以提高戏剧推广信息管理问题的解决效率,优化戏剧推广信息处理流程,保证戏剧推广信息数据的安全,它是一个非常可靠,非常安全的应用程序。


二、系统功能

管理员权限操作的功能包括管理戏曲,管理戏曲留言,管理戏曲收藏,管理用户,管理相关资讯,管理论坛,管理基础数据,其中基础数据管理包括的子模块有帖子类型管理,公告类型管理,方式管理,戏曲类型管理,资讯类型管理等功能。

 用户权限操作的功能包括收藏戏曲,发布跟戏曲相关的留言,查看戏曲视频,查看相关资讯,在论坛模块讨论与戏曲相关的信息。

 



三、系统项目截图

管理员功能实现

戏曲信息管理

图5.1 即为编码实现的戏曲信息管理界面,戏曲信息包括戏曲名称,戏曲封面,戏曲视频,地区等信息,管理员在戏曲信息管理界面新增戏曲信息,可以使用修改功能对登记错误的戏曲信息进行更正,可以使用删除功能删除需要删除的戏曲信息。

戏曲留言管理

图5.2 即为编码实现的戏曲留言管理界面,戏曲留言信息包括留言时间,留言内容,回复内容等信息,留言回复信息是管理员在查看戏曲留言信息之后回复的信息,戏曲留言信息是用户查看戏曲之后发布的留言信息。

论坛管理

图5.3 即为编码实现的论坛管理界面,论坛帖子包括帖子标题,帖子类型,帖子内容,姓名,头像,手机号等信息,管理员可以使用修改功能更正有错误数据的帖子信息,可以使用删除功能删除需要删除的论坛帖子信息,同时,管理员可以点击查看论坛回复链接查看该帖子相应的回复信息。

 

相关资讯管理

图5.4 即为编码实现的相关资讯管理界面,相关资讯信息包括地点,资讯图片,资讯标题,联系人电话,方式等信息,管理员可以使用修改功能对登记有误的相关资讯信息进行更正,可以使用删除功能删除需要删除的相关资讯信息等。

 

用户管理

图5.5 即为编码实现的用户管理界面,用户的注册信息包括用户头像,电子邮箱,性别,姓名等信息,该界面显示的用户信息也能让管理员查看和修改,删除。

 

用户功能实现

在线论坛

图5.6 即为编码实现的在线论坛界面,用户在在线论坛界面点击发布帖子链接即可发布自己的帖子,用户可以根据帖子类型筛选需要查看的帖子,在在线论坛界面,用户点击任意一个帖子的标题即可查看其对应内容,每当用户查看完帖子内容之后,即可评论该帖子。

 

戏曲信息

图5.7 即为编码实现的戏曲信息界面,在戏曲信息界面,用户可以收藏戏曲,可以播放戏曲视频,在戏曲信息界面的下方留言区域,用户也能发布跟戏曲相关的留言信息等。

 

相关资讯

图5.8 即为编码实现的相关资讯界面,用户在相关资讯界面可以查询相关资讯,前提是在查询框中编辑相关资讯的标题才可以实现对相关资讯的查询。

 


四、核心代码

登录相关


package com.controller;import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;/*** 登录相关*/
@RequestMapping("users")
@RestController
public class UserController{@Autowiredprivate UserService userService;@Autowiredprivate TokenService tokenService;/*** 登录*/@IgnoreAuth@PostMapping(value = "/login")public R login(String username, String password, String captcha, HttpServletRequest request) {UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));if(user==null || !user.getPassword().equals(password)) {return R.error("账号或密码不正确");}String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());return R.ok().put("token", token);}/*** 注册*/@IgnoreAuth@PostMapping(value = "/register")public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {return R.error("用户已存在");}userService.insert(user);return R.ok();}/*** 退出*/@GetMapping(value = "logout")public R logout(HttpServletRequest request) {request.getSession().invalidate();return R.ok("退出成功");}/*** 密码重置*/@IgnoreAuth@RequestMapping(value = "/resetPass")public R resetPass(String username, HttpServletRequest request){UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));if(user==null) {return R.error("账号不存在");}user.setPassword("123456");userService.update(user,null);return R.ok("密码已重置为:123456");}/*** 列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,UserEntity user){EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/list")public R list( UserEntity user){EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();ew.allEq(MPUtil.allEQMapPre( user, "user")); return R.ok().put("data", userService.selectListView(ew));}/*** 信息*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") String id){UserEntity user = userService.selectById(id);return R.ok().put("data", user);}/*** 获取用户的session用户信息*/@RequestMapping("/session")public R getCurrUser(HttpServletRequest request){Long id = (Long)request.getSession().getAttribute("userId");UserEntity user = userService.selectById(id);return R.ok().put("data", user);}/*** 保存*/@PostMapping("/save")public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {return R.error("用户已存在");}userService.insert(user);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);userService.updateById(user);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){userService.deleteBatchIds(Arrays.asList(ids));return R.ok();}
}

文件上传

package com.controller;import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import com.entity.EIException;
import com.service.ConfigService;
import com.utils.R;/*** 上传文件映射表*/
@RestController
@RequestMapping("file")
@SuppressWarnings({"unchecked","rawtypes"})
public class FileController{@Autowiredprivate ConfigService configService;/*** 上传文件*/@RequestMapping("/upload")public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {if (file.isEmpty()) {throw new EIException("上传文件不能为空");}String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);File path = new File(ResourceUtils.getURL("classpath:static").getPath());if(!path.exists()) {path = new File("");}File upload = new File(path.getAbsolutePath(),"/upload/");if(!upload.exists()) {upload.mkdirs();}String fileName = new Date().getTime()+"."+fileExt;File dest = new File(upload.getAbsolutePath()+"/"+fileName);file.transferTo(dest);FileUtils.copyFile(dest, new File("C:\\Users\\Desktop\\jiadian\\springbootl7own\\src\\main\\resources\\static\\upload"+"/"+fileName));if(StringUtils.isNotBlank(type) && type.equals("1")) {ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));if(configEntity==null) {configEntity = new ConfigEntity();configEntity.setName("faceFile");configEntity.setValue(fileName);} else {configEntity.setValue(fileName);}configService.insertOrUpdate(configEntity);}return R.ok().put("file", fileName);}/*** 下载文件*/@IgnoreAuth@RequestMapping("/download")public ResponseEntity<byte[]> download(@RequestParam String fileName) {try {File path = new File(ResourceUtils.getURL("classpath:static").getPath());if(!path.exists()) {path = new File("");}File upload = new File(path.getAbsolutePath(),"/upload/");if(!upload.exists()) {upload.mkdirs();}File file = new File(upload.getAbsolutePath()+"/"+fileName);if(file.exists()){/*if(!fileService.canRead(file, SessionManager.getSessionUser())){getResponse().sendError(403);}*/HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);    headers.setContentDispositionFormData("attachment", fileName);    return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);}} catch (IOException e) {e.printStackTrace();}return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR);}}

封装

package com.utils;import java.util.HashMap;
import java.util.Map;/*** 返回数据*/
public class R extends HashMap<String, Object> {private static final long serialVersionUID = 1L;public R() {put("code", 0);}public static R error() {return error(500, "未知异常,请联系管理员");}public static R error(String msg) {return error(500, msg);}public static R error(int code, String msg) {R r = new R();r.put("code", code);r.put("msg", msg);return r;}public static R ok(String msg) {R r = new R();r.put("msg", msg);return r;}public static R ok(Map<String, Object> map) {R r = new R();r.putAll(map);return r;}public static R ok() {return new R();}public R put(String key, Object value) {super.put(key, value);return this;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/627484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

x-cmd pkg | smartctl - 用于监测和分析硬盘的工具

目录 简介首次用户功能特点竞品和相关作品进一步阅读 简介 smartctl 是一个用于监测和分析硬盘中 S.M.A.R.T.&#xff08;自我检测&#xff0c;分析和报告技术&#xff09;信息的命令行工具&#xff0c;是 Smartmontools 的一部分。通过 smartctl 工具&#xff0c;可以分析各种…

IDEA中如何让包名一层层展开的设置

在开发过程中&#xff0c;发现新下载的一个项目在打开时候&#xff0c;呈现的包是没有一层一层展开的&#xff0c;是平铺在idea中的&#xff0c;截图如下&#xff1a; 设置方法&#xff1a; 打开options的小图标 在treeAppear中的Flatten packages的对号取消掉取消之后的效果…

【RTOS】快速体验FreeRTOS所有常用API(7)任务通知

目录 七、任务通知7.1 基本概念7.2 发出通知7.3 等待通知7.4 实例 七、任务通知 该部分在上份代码基础上修改得来&#xff0c;代码下载链接&#xff1a; https://wwzr.lanzout.com/i4Efu1la39wh 密码:cbvx 该代码尽量做到最简&#xff0c;不添加多余的、不规范的代码。 内容主要…

SpringBoot-Starter 自动锁组件

在日常业务开发的过程中&#xff0c;我们经常会遇到存在高并发的场景&#xff0c;这个时候都会选择使用redis来实现一个锁&#xff0c;来防止并发。 但是很多时候&#xff0c;我们可能业务完成后&#xff0c;就需要把锁释放掉&#xff0c;给下一个线程用&#xff0c;但是如果我…

Java 中泛型的基本使用

目录 一、泛型类的使用 二、泛型接口的使用 三、泛型方法的使用 相关测试 一、泛型类的使用 /* 泛型类&#xff0c;T 表示 Java 中的任意类型&#xff0c;也就是说构造方法中 data 属性可以传递任意类型的值*/ class ResultData<T>{Integer code;String msg;T data;p…

客户用IE批量下载文件文件到不同文件夹不压缩(包含分页带条件动态查询)

<!DOCTYPE html> <html lang"en" xmlns:th"http://www.thymeleaf.org"> <head><meta charset"UTF-8"><title>首页</title><script type"text/javascript" th:src"{/vue/jQuery.js}"…

免费scrum管理工具Leangoo敏捷做缺陷跟踪管理

缺陷管理通常关注如下几个方面&#xff1a; 1. 缺陷的处理速度 2. 缺陷处理的状态 3. 缺陷的分布 4. 缺陷产生的原因 使用Leangoo敏捷看板我们可以对缺陷进行可视化的管理&#xff0c;方便我们对缺陷的处理进展、负责人、当前状态、分布情况等各个方面一目了然。 下面我们…

在less中选择某个父元素的儿子的办法

在 LESS 中> 选择器&#xff0c;选择的是 儿子元素&#xff0c;就是 必须与父元素 有直接血源的元素。例如 /deep/ .dialog-footer > .el-button

安卓APP和小程序渗透测试技巧总结

记得开启模拟器的ROOT权限&#xff1a;本文章仅供学习和研究使用&#xff0c;严禁使用该文章内容对互联网其他应用进行非法操作&#xff0c;若将其用于非法目的&#xff0c;所造成的后果由您自行承担。 由于安卓7开始对系统安全性做了些改动&#xff0c;导致应用程序不再信任客…

设计模式——一文即可

对常用设计模式的总结&#xff0c;也是对设计模式专栏的总结 简单工厂模式 简单工厂模式&#xff08;Simple Factory Pattern&#xff09;是一种创建型设计模式&#xff0c;它提供了一种创建对象的最佳方式&#xff0c;通过将对象的创建逻辑封装在一个工厂类中&#xff0c;客…

【深度学习环境搭建】Windows搭建Anaconda3、已经Pytorch的GPU版本

目录 搭建Anaconda3搭建GPU版本的Pytorch你的pip也要换源&#xff0c;推荐阿里源打开conda的PowerShell验证 搭建Anaconda3 无脑下载安装包安装&#xff08;自行百度&#xff09; 注意点&#xff1a; 1、用户目录下的.condarc需要配置&#xff08;自定义环境的地址&#xff08…

1004:最大连续1的个数 III

1004&#xff1a;最大连续1的个数 III 1004&#xff1a;最大连续1的个数 III 给定一个二进制数组 nums 和一个整数 k&#xff0c;如果可以翻转最多 k 个 0 &#xff0c;则返回 数组中连续 1 的最大个数 。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1,0,0,0,1,1,1,1,…

QT quick基础:加载资源文件(字体)

一、加载字体 1、准备字体库 Roboto-Regular.ttf 2、在工程下面新建文件夹fonts&#xff0c;并将字体库放到该文件夹下面。 3、在QT Create 工程中添加字体。 添加现有文件选择Roboto-Regular.ttf。 4、执行qmake 5、在.qml文件加载字体 /* 加载字体 */FontLoader {id: f…

Java8 Stream笔记

什么是Stream&#xff1f; Java 8 中的 Stream 是对数组和集合&#xff08;Collection&#xff09;对象功能的增强&#xff0c; 专注于对集合对象进行各种非常便利、高效的聚合操作&#xff0c;或者大批量数据操作。 Stream的特性&#xff1f; ➢ 不存储数据。Stream 是基于…

Linux批量快速修改文件名的三种方法

在Linux中&#xff0c;批量重命名文件是一项常见且有用的操作。以下是三种常用的批量重命名文件的方法&#xff0c;每种方法都附有示例。这些方法既可以适用于新手&#xff0c;也适用于更有经验的用户。 话不多说&#xff0c;直接上干货&#xff01; rename 命令 rename命令是…

浅谈电动汽车充电站箱变电气安全物联监测系统设计与应用

摘 要:基于物联网技术架构提出了一种适用于电动汽车充电站箱变的电气安全物联监测系统设计方案。该系统由电气安全智能感知设备、通信网关、电气安全物联网监测平台等构成&#xff0c;可支持充电站箱变充电桩出线回路电流、电缆 温度、剩余电流、故障电弧、短路电流等数据采集监…

Swagger的使用

一、引入Maven坐标 <dependency><groupld>com.github.xiaoymin</groupld><artifactld>knife4j-spring-boot-starter</artifactld><version>3.0.2</version> </dependency>二、配置类中添加配置 /*** 通过knife4j生成接口文档…

PagedAttention: from interface to kernal

1 Overview PagedAttention灵感来自于操作系统中虚拟内存和分页的经典思想&#xff0c;它可以允许在非连续空间立存储连续的KV张量。具体来说&#xff0c;PagedAttention把每个序列的KV缓存进行了分块&#xff0c;每个块包含固定长度的token&#xff0c;而在计算attention时可…

自己造messagebox轮子

父组件中&#xff1a; import floatBox from ../messageBox data里加参数alertBox: 0, method中 changeAlertBox() {if (this.alertBox 0) {this.alertBox 1this.$refs.floatBox.changeAlertBox()} else {this.alertBox 0this.$refs.floatBox.changeAlertBox()}console.log…

MCU、MPU、SOC简介

文章目录 前言一、MCU二、MPU三、SOC总结 前言 随着处理器技术的不断发展&#xff0c;CPU(Central Processing Unit)的发展逐渐出现三种分支&#xff0c;分别是MCU(Micro Controller Unit&#xff0c;微控制器单元) 和MPU&#xff08;Micro Processor Unit&#xff0c;微处理器…