源码获取:博客首页 "资源" 里下载!

主要技术、spring、 springmvc、  springboot、  mybatis 、 jquery 、 layUI、md5 、bootstarp.js  tomcat、、拦截器等项目
主要功能:登录、用户、菜单管理、角色管理、权限管理、立项申请、报名、结、经费管理、审核、统计等

用户登录:输入账号密码和验证码登录登录、登陆后根据用户权限显示不同菜单、角色灵活控制。

管理后主要功能模块:用户管理、角色管理、承菜管理、权限管理、竞赛报名管理、经费申请和审核管理、项目结题管理、立项申请管理等具体功能

用户管理:用户列表的显示、数据的添加以及删除修改等操作。

角色管理:通过给用户绑定角色、角色控制菜单灵活显示菜单权限功能。用户可以新建多角色

菜单管理:

系统日志监控:aop切面编程实现日志记录操作

业务模块功能;

立项申请:

立项审核:

活动经费预算申请:

立项申请个人赛以及团队赛报名管理:录入报名相关信息字段

项目结题管理:

项目完成之后选择项目进行资金使用统计结题:录入金额

项目结题统计:

代码结构:idea、eclipse直接导入就可运行

数据库图:

项目文档报告主要设计:

XSS过滤处理业务:

/*** XSS过滤处理**/
public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {/*** 没被包装过的HttpServletRequest(特殊场景,需要自己过滤)*/HttpServletRequest orgRequest;/*** html过滤*/private final static HTMLFilter htmlFilter = new HTMLFilter();public XssHttpServletRequestWrapper(HttpServletRequest request) {super(request);orgRequest = request;}@Overridepublic ServletInputStream getInputStream() throws IOException {//非json类型,直接返回if(!MediaType.APPLICATION_JSON_VALUE.equalsIgnoreCase(super.getHeader(HttpHeaders.CONTENT_TYPE))){return super.getInputStream();}//为空,直接返回String json = IOUtils.toString(super.getInputStream(), "utf-8");if (StringUtils.isBlank(json)) {return super.getInputStream();}//xss过滤json = xssEncode(json);final ByteArrayInputStream bis = new ByteArrayInputStream(json.getBytes("utf-8"));return new ServletInputStream() {@Overridepublic boolean isFinished() {return true;}@Overridepublic boolean isReady() {return true;}@Overridepublic void setReadListener(ReadListener readListener) {}@Overridepublic int read() throws IOException {return bis.read();}};}@Overridepublic String getParameter(String name) {String value = super.getParameter(xssEncode(name));if (StringUtils.isNotBlank(value)) {value = xssEncode(value);}return value;}@Overridepublic String[] getParameterValues(String name) {String[] parameters = super.getParameterValues(name);if (parameters == null || parameters.length == 0) {return null;}for (int i = 0; i < parameters.length; i++) {parameters[i] = xssEncode(parameters[i]);}return parameters;}@Overridepublic Map<String,String[]> getParameterMap() {Map<String,String[]> map = new LinkedHashMap<>();Map<String,String[]> parameters = super.getParameterMap();for (String key : parameters.keySet()) {String[] values = parameters.get(key);for (int i = 0; i < values.length; i++) {values[i] = xssEncode(values[i]);}map.put(key, values);}return map;}@Overridepublic String getHeader(String name) {String value = super.getHeader(xssEncode(name));if (StringUtils.isNotBlank(value)) {value = xssEncode(value);}return value;}private String xssEncode(String input) {return htmlFilter.filter(input);}/*** 获取最原始的request*/public HttpServletRequest getOrgRequest() {return orgRequest;}/*** 获取最原始的request*/public static HttpServletRequest getOrgRequest(HttpServletRequest request) {if (request instanceof XssHttpServletRequestWrapper) {return ((XssHttpServletRequestWrapper) request).getOrgRequest();}return request;}}

SQL过滤业务:

/*** SQL过滤**/
public class SQLFilter {/*** SQL注入过滤* @param str  待验证的字符串*/public static String sqlInject(String str){if(StringUtils.isBlank(str)){return null;}//去掉'|"|;|\字符str = StringUtils.replace(str, "'", "");str = StringUtils.replace(str, "\"", "");str = StringUtils.replace(str, ";", "");str = StringUtils.replace(str, "\\", "");//转换成小写str = str.toLowerCase();//非法字符String[] keywords = {"master", "truncate", "insert", "select", "delete", "update", "declare", "alter", "drop"};//判断是否包含非法字符for(String keyword : keywords){if(str.indexOf(keyword) != -1){throw new RRException("包含非法字符");}}return str;}
}

系统用户业务操作:

/*** 系统用户*/
@RestController
@RequestMapping("/sys/user")
public class SysUserController extends AbstractController {@Autowiredprivate SysUserService sysUserService;@Autowiredprivate SysUserRoleService sysUserRoleService;/*** 所有用户列表*/@RequestMapping("/list")@RequiresPermissions("sys:user:list")public R list(@RequestParam Map<String, Object> params){PageUtils page = sysUserService.queryPage(params);return R.ok().put("page", page);}/*** 获取登录的用户信息*/@RequestMapping("/info")public R info(){return R.ok().put("user", getUser());}/*** 修改登录用户密码*/@SysLog("修改密码")@RequestMapping("/password")public R password(String password, String newPassword){Assert.isBlank(newPassword, "新密码不为能空");//原密码password = ShiroUtils.sha256(password, getUser().getSalt());//新密码newPassword = ShiroUtils.sha256(newPassword, getUser().getSalt());//更新密码boolean flag = sysUserService.updatePassword(getUserId(), password, newPassword);if(!flag){return R.error("原密码不正确");}return R.ok();}/*** 用户信息*/@RequestMapping("/info/{userId}")@RequiresPermissions("sys:user:info")public R info(@PathVariable("userId") Long userId){SysUserEntity user = sysUserService.getById(userId);//获取用户所属的角色列表List<Long> roleIdList = sysUserRoleService.queryRoleIdList(userId);user.setRoleIdList(roleIdList);return R.ok().put("user", user);}/*** 保存用户*/@SysLog("保存用户")@RequestMapping("/save")@RequiresPermissions("sys:user:save")public R save(@RequestBody SysUserEntity user){ValidatorUtils.validateEntity(user, AddGroup.class);sysUserService.saveUser(user);return R.ok();}/*** 修改用户*/@SysLog("修改用户")@RequestMapping("/update")@RequiresPermissions("sys:user:update")public R update(@RequestBody SysUserEntity user){ValidatorUtils.validateEntity(user, UpdateGroup.class);sysUserService.update(user);return R.ok();}/*** 删除用户*/@SysLog("删除用户")@RequestMapping("/delete")@RequiresPermissions("sys:user:delete")public R delete(@RequestBody Long[] userIds){if(ArrayUtils.contains(userIds, 1L)){return R.error("系统管理员不能删除");}if(ArrayUtils.contains(userIds, getUserId())){return R.error("当前用户不能删除");}sysUserService.removeByIds(Arrays.asList(userIds));return R.ok();}
}

系统配置信息:

/*** 系统配置信息**/
@RestController
@RequestMapping("/sys/config")
public class SysConfigController extends AbstractController {@Autowiredprivate SysConfigService sysConfigService;/*** 所有配置列表*/@RequestMapping("/list")@RequiresPermissions("sys:config:list")public R list(@RequestParam Map<String, Object> params){PageUtils page = sysConfigService.queryPage(params);return R.ok().put("page", page);}/*** 配置信息*/@RequestMapping("/info/{id}")@RequiresPermissions("sys:config:info")@ResponseBodypublic R info(@PathVariable("id") Long id){SysConfigEntity config = sysConfigService.getById(id);return R.ok().put("config", config);}/*** 保存配置*/@SysLog("保存配置")@RequestMapping("/save")@RequiresPermissions("sys:config:save")public R save(@RequestBody SysConfigEntity config){ValidatorUtils.validateEntity(config);sysConfigService.saveConfig(config);return R.ok();}/*** 修改配置*/@SysLog("修改配置")@RequestMapping("/update")@RequiresPermissions("sys:config:update")public R update(@RequestBody SysConfigEntity config){ValidatorUtils.validateEntity(config);sysConfigService.update(config);return R.ok();}/*** 删除配置*/@SysLog("删除配置")@RequestMapping("/delete")@RequiresPermissions("sys:config:delete")public R delete(@RequestBody Long[] ids){sysConfigService.deleteBatch(ids);return R.ok();}}

文件上传业务:

/*** 文件上传*/
@RestController
@RequestMapping("sys/oss")
public class SysOssController {@Autowiredprivate SysOssService sysOssService;@Autowiredprivate SysConfigService sysConfigService;private final static String KEY = ConfigConstant.CLOUD_STORAGE_CONFIG_KEY;/*** 列表*/@RequestMapping("/list")@RequiresPermissions("sys:oss:all")public R list(@RequestParam Map<String, Object> params){PageUtils page = sysOssService.queryPage(params);return R.ok().put("page", page);}/*** 云存储配置信息*/@RequestMapping("/config")@RequiresPermissions("sys:oss:all")public R config(){CloudStorageConfig config = sysConfigService.getConfigObject(KEY, CloudStorageConfig.class);return R.ok().put("config", config);}/*** 保存云存储配置信息*/@RequestMapping("/saveConfig")@RequiresPermissions("sys:oss:all")public R saveConfig(@RequestBody CloudStorageConfig config){//校验类型ValidatorUtils.validateEntity(config);if(config.getType() == Constant.CloudService.QINIU.getValue()){//校验七牛数据ValidatorUtils.validateEntity(config, QiniuGroup.class);}else if(config.getType() == Constant.CloudService.ALIYUN.getValue()){//校验阿里云数据ValidatorUtils.validateEntity(config, AliyunGroup.class);}else if(config.getType() == Constant.CloudService.QCLOUD.getValue()){//校验腾讯云数据ValidatorUtils.validateEntity(config, QcloudGroup.class);}sysConfigService.updateValueByKey(KEY, new Gson().toJson(config));return R.ok();}/*** 上传文件*/@RequestMapping("/upload")@RequiresPermissions("sys:oss:all")public R upload(@RequestParam("file") MultipartFile file) throws Exception {if (file.isEmpty()) {throw new RRException("上传文件不能为空");}//上传文件String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));String url = OSSFactory.build().uploadSuffix(file.getBytes(), suffix);//保存文件信息SysOssEntity ossEntity = new SysOssEntity();ossEntity.setUrl(url);ossEntity.setCreateDate(new Date());sysOssService.save(ossEntity);return R.ok().put("url", url);}/*** 删除*/@RequestMapping("/delete")@RequiresPermissions("sys:oss:all")public R delete(@RequestBody Long[] ids){sysOssService.removeByIds(Arrays.asList(ids));return R.ok();}}

源码获取:博客首页 "资源" 里下载!

Java项目:学生学科竞赛管理管理系统设计和实现(java+springboot+ssm+maven)相关推荐

  1. 基于java校园学生信息管理和新生报到系统设计与实现(springboot框架)毕业设计毕设作品

    功能清单 [后台管理员功能] 关于我们设置:设置学校简介.联系我们.加入我们.法律声明.学校详情 广告管理:设置小程序首页轮播图广告和链接 留言列表:所有用户留言信息列表,支持删除 会员列表:查看所有 ...

  2. 【附源码】计算机毕业设计java学生学科竞赛管理系统设计与实现

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  3. java毕业设计大学生学科竞赛管理系统mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计大学生学科竞赛管理系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计大学生学科竞赛管理系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目 ...

  4. 基于Java毕业设计大学生学科竞赛论文评审系统源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计大学生学科竞赛论文评审系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计大学生学科竞赛论文评审系统源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目 ...

  5. 高校学生学科竞赛获奖水平影响因素分析 ---以湘潭大学为例

    题目: 高校学生学科竞赛获奖水平影响因素分析 -以湘潭大学为例 姓名: 宋旭升 高校学生学科竞赛获奖水平影响因素分析 -以湘潭大学为例 摘要:本文以湘潭大学为例通过对可能影响高校学生学科竞赛获奖水平影 ...

  6. java项目-第129期ssh的便利店运营管理系统-java毕业设计_计算机毕业设计

    java项目-第129期ssh的便利店运营管理系统-java毕业设计_计算机毕业设计 [源码请到资源专栏下载] 今天分享的项目是<一款基于SSH架构的便利店运营管理系统>,基本思想是使用数 ...

  7. java项目-第120期儿童成长博客记录系统-java毕业设计

    java项目-第120期儿童成长博客记录系统-java毕业设计 [源码请到资源专栏下载] Hi,大家好,今天分享的源码是<基于SpringBoot的儿童成长记录博客系统>. BabyLog ...

  8. 基于若依框架的Java项目-尚医疗(医疗管理项目)

    1.1 项目简介 项目简介:尚医疗是专门为各大医院.门诊提供的一款医疗管理平台.系统包含:系统管理.药品进销存管理.看病就诊.收费管理.检查管理.数据统计等核心模块.通过尚医疗系统可以快速.方便的管理 ...

  9. 复习Java第一个项目学生信息管理系统 01(界面部分) Java面试题抽象类和接口生活【记录一个咸鱼大学生三个月的奋进生活】013

    记录一个咸鱼大学生三个月的奋进生活013 复习Java(学生信息管理系统01界面部分) 设置背景(WelcomePanel)类 登录界面(LoginFrame)类 主界面(MainFrame)类 学习 ...

最新文章

  1. ubuntu 下利用ndiswrapper安装无线网卡驱动
  2. 据说这套组合拳,可以把面试官给问懵逼了,你要不要试试?
  3. 解决php写入mysql乱码问题汇总
  4. vim的全局替换[zz]把字符替换成回车
  5. 实施SAP:资源和进度
  6. Java中String字符串toString()、String.valueOf()、String强转、+ 的区别
  7. VTK修炼之道38:图像平滑_中值滤波器
  8. 材料科学中的数据挖掘:晶体图神经网络解读与代码解析
  9. 真相了!敲代码时,程序员戴耳机究竟在听什么?
  10. dropify,不错的图片上传预览插件
  11. 200多家厂商的OT设备受14个漏洞影响
  12. JavaScript中prompt的使用
  13. [转]Express入门教程:一个简单的博客
  14. Javascript:谈谈JS的全局变量跟局部变量
  15. 8m照片宽和高是多少_8寸照片的大小
  16. python实现堆栈 后进先出 LIFO
  17. 径向渐变加阴影html,CSS3 径向渐变(radial-gradient)
  18. 查看计算机bios版本,如何查看电脑BIOS版本
  19. 29HTML5期末大作业:在线电影网站设计——电影从你的全世界路过(4页) HTML+CSS+JavaScript 大学生电影网页制作教程 学生HTML电影网页设计作业成品网页制作代码 学生影视
  20. GridView绑定

热门文章

  1. 使用 Trace32 对 FLASH 编程
  2. Cmake 交叉编译
  3. 函数返回类的对象与拷贝构造函数
  4. RTTI(三)相关函数1【转自大富翁】
  5. pymsql学习笔记
  6. android EditText 限定中文个数与英文个数的解决方式
  7. Linux常用命令汇总(持续更新中)
  8. Linux下如何查看文档的内容
  9. 数据结构(1)有序表查找
  10. java.utilDate和java.sql.Date