基于Java的大学生心理健康答题小程序设计与实现(亮点:选题新颖、可以发布试卷设置题目、自动判卷、上传答案、答案解析)

news2024/11/24 7:33:27

校园点餐小程序

  • 一、前言
  • 二、我的优势
    • 2.1 自己的网站
    • 2.2 自己的小程序(小蔡coding)
    • 2.3 有保障的售后
    • 2.4 福利
  • 三、开发环境与技术
    • 3.1 MySQL数据库
    • 3.2 Vue前端技术
    • 3.3 Spring Boot框架
    • 3.4 微信小程序
  • 四、功能设计
    • 4.1 主要功能描述
  • 五、系统主要功能
    • 5.1 登录注册
    • 5.2 系统首页
    • 5.3 试卷列表(系统重点)
    • 5.4 试卷答题
    • 5.5 错题分析
    • 5.6 交卷计分
    • 5.7 查看考试记录
    • 5.8 其他功能
    • 5.9 后台管理实现
      • 5.9.1 功能概括
      • 5.9.2 创建试卷(系统重点)
      • 5.9.3 创建试卷题目(系统重点!!!)
  • 六、数据库设计参考
  • 七、代码参考
  • 八、源码获取

一、前言

💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗
👇🏻 精彩专栏 推荐订阅👇🏻
2023-2024年最值得选的微信小程序毕业设计选题大全:100个热门选题推荐✅

2023-2024年最值得选的Java毕业设计选题大全:500个热门选题推荐✅

Java精品实战案例《500套》

微信小程序项目精品案例《500套》

🌟文末获取源码+数据库🌟

网上大部分的毕设套路如下:

  • 在b站发毕设项目的演示视频,让你免费领取,你领取完发现代码不全或者数据库少表,根本跑不起来!如果要调试则收费300😅真的是恶心至极有没有!
  • 某宝找人帮忙写,简单来说比第一种行为靠谱,但是很贵!说是可以免费修改其实修改基本排不上队,一改就是一星期,想快点?加钱,200加急!😅

还有一句忠告:一分价钱一分货

二、我的优势

2.1 自己的网站

网站上传的项目均为博主自己收集和开发的,质量都可以得到保障,适合自己懂一点程序开发的同学使用!

2.2 自己的小程序(小蔡coding)

为了方便同学们使用,我开发了小程序版的,名字叫小蔡coding。同学们可以通过小程序快速搜索和定位到自己想要的程序

2.3 有保障的售后

2.4 福利

a51e38c5bf9f17df58ffdbbe74c16c44_720

三、开发环境与技术

3.1 MySQL数据库

本课题研究研发的应用程序在数据操作过程中是难以预测的,而且常常产生变化。没有办法直接从word里写数据,这不但不安全,并且难以实现应用程序的功能。想要实现运用所需要的数据存放功能,就必定要选择专业的数据库存储软件。大部分,应用程序达到的功能并不太繁杂,市场中所有关系数据库手机软件都能实现。参照自己的思维构造及使用习惯性,MySQL能够支持中小型系统软件,不用Oracle、SQL Server 大中小型数据适用,适宜大家全面的数据库,而非其他问题,由于真正意义上的系统在线,是数据库网络服务器,网站服务器。

3.2 Vue前端技术

在动态网站盛行之时,Java作为一种高级编程语言,当然不会轻易放弃这一领域的生日蛋糕。Sun企业上线了Servlet做为导出动态网站的标准规范。因为当时程序猿不是很喜欢,但一开始挑选很少。java语言在之后的好多个月里出现,不顾及性能高效率,最少区别了写网页页面所需要的动态性编码块和静态代码块,大大提升了创作效率易读性。因而,许多Java软件工程师和入行的初级程序员都会选择java语言当作个人职业生涯发展前景。为保持Java语言在高级编程语言中的重要性,避免java再次抢占市场,Sun与Apache慈善基金会协作,开发了一种有关Java动态网站的技术规范,即vue技术性。vue在页面写作时吸取java语言中的所有优势,却也靠着Java语言 EE庞大环境能通过Java组件完成很多作用。这种组件能够直接引用到vue页面,使vue更强大和完善。确保了Java科技的竖向可持续发展观,最终在动态网站开发行业占有一席之地。别的java开发工作人员能够快速转移到vue开展开发,不顾及一些特殊组件或功能性的开发,自打动态性页面的开发来说,彻底完成了java流程和vue流程的基本无成本费变换,vue技术性就是这样发展趋势起来。

3.3 Spring Boot框架

从取名上能够得知这一框架设计初心:快速开启Spring运用。因而,Spring。 实质上,Boot应用程序是一个根据Spring框架的应用程序。这是Spring“协议书先于配置”理论的良好实践物质。可以帮助开发者迅速、更有效地搭建根据Spring生态系统中的应用程序。
Spring Boot实现自动配置、发展依靠、Actuator、命令行界面(CLI) 是Spring Boot最主要的四个核心特点,在其中CLI是Spring Boot的能选特点尽管功能齐全,却也引入了一套非传统的开发模型,因此本系列文章只注重别的三个特点。如标题,本问题是本系列的第一部分,将为您开启Spring Boot大门,关键为您进一步分析启动过程及全自动配置完成基本原理。把握这一部分主要内容,了解一些Spring框架的基本知识,也会让你游刃有余。

3.4 微信小程序

微信小程序是一种轻量级的应用程序,可以在微信内部直接运行,无需下载安装,为用户提供快速便捷的服务和功能体验,涵盖了各种领域的应用,从社交、娱乐到商务和生活服务,为开发者提供了一个强大的平台,以低成本和高效率开发和发布小程序。

四、功能设计

4.1 主要功能描述

五、系统主要功能

5.1 登录注册

>

-

5.2 系统首页

在这里插入图片描述

5.3 试卷列表(系统重点)

在这里插入图片描述

5.4 试卷答题

在这里插入图片描述

5.5 错题分析

>

5.6 交卷计分

>

5.7 查看考试记录

>

5.8 其他功能

职位申请

在这里插入图片描述

5.9 后台管理实现

5.9.1 功能概括

在这里插入图片描述

5.9.2 创建试卷(系统重点)

首先需要创建一套试卷

在这里插入图片描述

5.9.3 创建试卷题目(系统重点!!!)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

六、数据库设计参考

-- MySQL dump 10.13  Distrib 5.7.31, for Linux (x86_64)
--
-- Host: localhost    Database: springbootm3ord
-- ------------------------------------------------------
-- Server version	5.7.31

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Current Database: `springbootm3ord`
--

/*!40000 DROP DATABASE IF EXISTS `springbootm3ord`*/;

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `springbootm3ord` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;

USE `springbootm3ord`;

--
-- Table structure for table `aboutus`
--

DROP TABLE IF EXISTS `aboutus`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `aboutus` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `title` varchar(200) NOT NULL COMMENT '标题',
  `subtitle` varchar(200) DEFAULT NULL COMMENT '副标题',
  `content` longtext NOT NULL COMMENT '内容',
  `picture1` longtext COMMENT '图片1',
  `picture2` longtext COMMENT '图片2',
  `picture3` longtext COMMENT '图片3',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='关于我们';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `aboutus`
--

LOCK TABLES `aboutus` WRITE;
/*!40000 ALTER TABLE `aboutus` DISABLE KEYS */;
INSERT INTO `aboutus` VALUES (1,'2023-03-05 09:51:25','关于我们','ABOUT US','不管你想要怎样的生活,你都要去努力争取,不多尝试一些事情怎么知道自己适合什么、不适合什么呢?\n你说你喜欢读书,让我给你列书单,你还问我哪里有那么多时间看书;你说自己梦想的职业是广告文案,问我如何成为一个文案,应该具备哪些素质;你说你计划晨跑,但总是因为学习、工作辛苦或者身体不舒服第二天起不了床;你说你一直梦想一个人去长途旅行,但是没钱,父母觉得危险。其实,我已经厌倦了你这样说说而已的把戏,我觉得就算我告诉你如何去做,你也不会照做,因为你根本什么都不做。','upload/aboutus_picture1.jpg','upload/aboutus_picture2.jpg','upload/aboutus_picture3.jpg');
/*!40000 ALTER TABLE `aboutus` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `config`
--

DROP TABLE IF EXISTS `config`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `config` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(100) NOT NULL COMMENT '配置参数名称',
  `value` varchar(100) DEFAULT NULL COMMENT '配置参数值',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='配置文件';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `config`
--

LOCK TABLES `config` WRITE;
/*!40000 ALTER TABLE `config` DISABLE KEYS */;
INSERT INTO `config` VALUES (1,'picture1','upload/picture1.jpg'),(2,'picture2','upload/picture2.jpg'),(3,'picture3','upload/picture3.jpg');
/*!40000 ALTER TABLE `config` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `discussjiaoyuan`
--

DROP TABLE IF EXISTS `discussjiaoyuan`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `discussjiaoyuan` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `refid` bigint(20) NOT NULL COMMENT '关联表id',
  `userid` bigint(20) NOT NULL COMMENT '用户id',
  `avatarurl` longtext COMMENT '头像',
  `nickname` varchar(200) DEFAULT NULL COMMENT '用户名',
  `content` longtext NOT NULL COMMENT '评论内容',
  `reply` longtext COMMENT '回复内容',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='教员评论表';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `discussjiaoyuan`
--

LOCK TABLES `discussjiaoyuan` WRITE;
/*!40000 ALTER TABLE `discussjiaoyuan` DISABLE KEYS */;
/*!40000 ALTER TABLE `discussjiaoyuan` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `discusszhaopinxinxi`
--

DROP TABLE IF EXISTS `discusszhaopinxinxi`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `discusszhaopinxinxi` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `refid` bigint(20) NOT NULL COMMENT '关联表id',
  `userid` bigint(20) NOT NULL COMMENT '用户id',
  `avatarurl` longtext COMMENT '头像',
  `nickname` varchar(200) DEFAULT NULL COMMENT '用户名',
  `content` longtext NOT NULL COMMENT '评论内容',
  `reply` longtext COMMENT '回复内容',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='招聘信息评论表';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `discusszhaopinxinxi`
--

LOCK TABLES `discusszhaopinxinxi` WRITE;
/*!40000 ALTER TABLE `discusszhaopinxinxi` DISABLE KEYS */;
/*!40000 ALTER TABLE `discusszhaopinxinxi` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `jiajiaoshenqing`
--

DROP TABLE IF EXISTS `jiajiaoshenqing`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `jiajiaoshenqing` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `shenqingbianhao` varchar(200) DEFAULT NULL COMMENT '申请编号',
  `gonghao` varchar(200) DEFAULT NULL COMMENT '工号',
  `jiaoshixingming` varchar(200) DEFAULT NULL COMMENT '教师姓名',
  `shoukezhuanye` varchar(200) DEFAULT NULL COMMENT '授课专业',
  `xueli` varchar(200) DEFAULT NULL COMMENT '学历',
  `jiajiaofeiyong` varchar(200) DEFAULT NULL COMMENT '家教费用',
  `shenqingriqi` date DEFAULT NULL COMMENT '申请日期',
  `shenqingneirong` longtext COMMENT '申请内容',
  `zhanghao` varchar(200) DEFAULT NULL COMMENT '账号',
  `xingming` varchar(200) DEFAULT NULL COMMENT '姓名',
  `shoujihaoma` varchar(200) DEFAULT NULL COMMENT '手机号码',
  `sfsh` varchar(200) DEFAULT '待审核' COMMENT '是否审核',
  `shhf` longtext COMMENT '审核回复',
  PRIMARY KEY (`id`),
  UNIQUE KEY `shenqingbianhao` (`shenqingbianhao`)
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=utf8 COMMENT='家教申请';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `jiajiaoshenqing`
--

LOCK TABLES `jiajiaoshenqing` WRITE;
/*!40000 ALTER TABLE `jiajiaoshenqing` DISABLE KEYS */;
INSERT INTO `jiajiaoshenqing` VALUES (51,'2023-03-05 09:51:24','1111111111','工号1','教师姓名1','授课专业1','学历1','家教费用1','2023-03-05','申请内容1','账号1','姓名1','手机号码1','是',''),(52,'2023-03-05 09:51:24','2222222222','工号2','教师姓名2','授课专业2','学历2','家教费用2','2023-03-05','申请内容2','账号2','姓名2','手机号码2','是',''),(53,'2023-03-05 09:51:24','3333333333','工号3','教师姓名3','授课专业3','学历3','家教费用3','2023-03-05','申请内容3','账号3','姓名3','手机号码3','是',''),(54,'2023-03-05 09:51:24','4444444444','工号4','教师姓名4','授课专业4','学历4','家教费用4','2023-03-05','申请内容4','账号4','姓名4','手机号码4','是',''),(55,'2023-03-05 09:51:24','5555555555','工号5','教师姓名5','授课专业5','学历5','家教费用5','2023-03-05','申请内容5','账号5','姓名5','手机号码5','是',''),(56,'2023-03-05 09:51:24','6666666666','工号6','教师姓名6','授课专业6','学历6','家教费用6','2023-03-05','申请内容6','账号6','姓名6','手机号码6','是',''),(57,'2023-03-05 09:51:24','7777777777','工号7','教师姓名7','授课专业7','学历7','家教费用7','2023-03-05','申请内容7','账号7','姓名7','手机号码7','是',''),(58,'2023-03-05 09:51:24','8888888888','工号8','教师姓名8','授课专业8','学历8','家教费用8','2023-03-05','申请内容8','账号8','姓名8','手机号码8','是','');
/*!40000 ALTER TABLE `jiajiaoshenqing` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `jiaoyuan`
--

DROP TABLE IF EXISTS `jiaoyuan`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `jiaoyuan` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gonghao` varchar(200) NOT NULL COMMENT '工号',
  `mima` varchar(200) NOT NULL COMMENT '密码',
  `jiaoshixingming` varchar(200) NOT NULL COMMENT '教师姓名',
  `xingbie` varchar(200) DEFAULT NULL COMMENT '性别',
  `youxiang` varchar(200) DEFAULT NULL COMMENT '邮箱',
  `lianxishouji` varchar(200) DEFAULT NULL COMMENT '联系手机',
  `shoukezhuanye` varchar(200) DEFAULT NULL COMMENT '授课专业',
  `xueli` varchar(200) DEFAULT NULL COMMENT '学历',
  `touxiang` longtext COMMENT '头像',
  `jiajiaofeiyong` varchar(200) DEFAULT NULL COMMENT '家教费用',
  `gerenjianjie` longtext COMMENT '个人简介',
  `rongyuxinxi` longtext COMMENT '荣誉信息',
  PRIMARY KEY (`id`),
  UNIQUE KEY `gonghao` (`gonghao`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8 COMMENT='教员';
/*!40101 SET character_set_client = @saved_cs_client */;


--
-- Table structure for table `jiaoyuanfankui`
--

DROP TABLE IF EXISTS `jiaoyuanfankui`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `jiaoyuanfankui` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `fankuibianhao` varchar(200) DEFAULT NULL COMMENT '反馈编号',
  `fankuibiaoti` varchar(200) NOT NULL COMMENT '反馈标题',
  `fankuineirong` longtext COMMENT '反馈内容',
  `fankuishijian` datetime DEFAULT NULL COMMENT '反馈时间',
  `gonghao` varchar(200) DEFAULT NULL COMMENT '工号',
  `jiaoshixingming` varchar(200) DEFAULT NULL COMMENT '教师姓名',
  `shhf` longtext COMMENT '回复内容',
  PRIMARY KEY (`id`),
  UNIQUE KEY `fankuibianhao` (`fankuibianhao`)
) ENGINE=InnoDB AUTO_INCREMENT=119 DEFAULT CHARSET=utf8 COMMENT='教员反馈';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `jiaoyuanfankui`
--

LOCK TABLES `jiaoyuanfankui` WRITE;
/*!40000 ALTER TABLE `jiaoyuanfankui` DISABLE KEYS */;
INSERT INTO `jiaoyuanfankui` VALUES (111,'2023-03-05 09:51:25','1111111111','反馈标题1','反馈内容1','2023-03-05 17:51:25','工号1','教师姓名1',''),(112,'2023-03-05 09:51:25','2222222222','反馈标题2','反馈内容2','2023-03-05 17:51:25','工号2','教师姓名2',''),(113,'2023-03-05 09:51:25','3333333333','反馈标题3','反馈内容3','2023-03-05 17:51:25','工号3','教师姓名3',''),(114,'2023-03-05 09:51:25','4444444444','反馈标题4','反馈内容4','2023-03-05 17:51:25','工号4','教师姓名4',''),(115,'2023-03-05 09:51:25','5555555555','反馈标题5','反馈内容5','2023-03-05 17:51:25','工号5','教师姓名5',''),(116,'2023-03-05 09:51:25','6666666666','反馈标题6','反馈内容6','2023-03-05 17:51:25','工号6','教师姓名6',''),(117,'2023-03-05 09:51:25','7777777777','反馈标题7','反馈内容7','2023-03-05 17:51:25','工号7','教师姓名7',''),(118,'2023-03-05 09:51:25','8888888888','反馈标题8','反馈内容8','2023-03-05 17:51:25','工号8','教师姓名8','');
/*!40000 ALTER TABLE `jiaoyuanfankui` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `ketijiangjie`
--

DROP TABLE IF EXISTS `ketijiangjie`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `ketijiangjie` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gonghao` varchar(200) DEFAULT NULL COMMENT '工号',
  `jiaoshixingming` varchar(200) DEFAULT NULL COMMENT '教师姓名',
  `xueli` varchar(200) DEFAULT NULL COMMENT '学历',
  `yuyueshijian` varchar(200) NOT NULL COMMENT '预约时间',
  `ketimingcheng` varchar(200) DEFAULT NULL COMMENT '课题名称',
  `jiangjieshipin` longtext COMMENT '讲解视频',
  `dizhi` varchar(200) DEFAULT NULL COMMENT '地址',
  `zhanghao` varchar(200) DEFAULT NULL COMMENT '账号',
  `xingming` varchar(200) DEFAULT NULL COMMENT '姓名',
  `shoujihaoma` varchar(200) DEFAULT NULL COMMENT '手机号码',
  `neirong` longtext COMMENT '内容',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=79 DEFAULT CHARSET=utf8 COMMENT='课题讲解';
/*!40101 SET character_set_client = @saved_cs_client */;

七、代码参考

@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
   UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().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);
}

	@Override
	public String generateToken(Long userid,String username, String tableName, String role) {
		TokenEntity tokenEntity = this.selectOne(new EntityWrapper<TokenEntity>().eq("userid", userid).eq("role", role));
		String token = CommonUtil.getRandomString(32);
		Calendar cal = Calendar.getInstance();   
    	cal.setTime(new Date());   
    	cal.add(Calendar.HOUR_OF_DAY, 1);
		if(tokenEntity!=null) {
			tokenEntity.setToken(token);
			tokenEntity.setExpiratedtime(cal.getTime());
			this.updateById(tokenEntity);
		} else {
			this.insert(new TokenEntity(userid,username, tableName, role, token, cal.getTime()));
		}
		return token;
	}



/**
 * 权限(Token)验证
 */
@Component
public class AuthorizationInterceptor implements HandlerInterceptor {

    public static final String LOGIN_TOKEN_KEY = "Token";

    @Autowired
    private TokenService tokenService;
    
	@Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

		//支持跨域请求
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Headers", "x-requested-with,request-source,Token, Origin,imgType, Content-Type, cache-control,postman-token,Cookie, Accept,authorization");
        response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
	// 跨域时会首先发送一个OPTIONS请求,这里我们给OPTIONS请求直接返回正常状态
	if (request.getMethod().equals(RequestMethod.OPTIONS.name())) {
        	response.setStatus(HttpStatus.OK.value());
            return false;
        }
        
        IgnoreAuth annotation;
        if (handler instanceof HandlerMethod) {
            annotation = ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class);
        } else {
            return true;
        }

        //从header中获取token
        String token = request.getHeader(LOGIN_TOKEN_KEY);
        
        /**
         * 不需要验证权限的方法直接放过
         */
        if(annotation!=null) {
        	return true;
        }
        
        TokenEntity tokenEntity = null;
        if(StringUtils.isNotBlank(token)) {
        	tokenEntity = tokenService.getTokenEntity(token);
        }
        
        if(tokenEntity != null) {
        	request.getSession().setAttribute("userId", tokenEntity.getUserid());
        	request.getSession().setAttribute("role", tokenEntity.getRole());
        	request.getSession().setAttribute("tableName", tokenEntity.getTablename());
        	request.getSession().setAttribute("username", tokenEntity.getUsername());
        	return true;
        }
        
		PrintWriter writer = null;
		response.setCharacterEncoding("UTF-8");
		response.setContentType("application/json; charset=utf-8");
		try {
		    writer = response.getWriter();
		    writer.print(JSONObject.toJSONString(R.error(401, "请先登录")));
		} finally {
		    if(writer != null){
		        writer.close();
		    }
		}
//				throw new EIException("请先登录", 401);
		return false;
    }
}

八、源码获取

文章下方名片联系我即可~
大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻
精彩专栏推荐订阅:在下方专栏👇🏻
Java精品实战案例《500套》

微信小程序项目精品案例《500套》

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

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

相关文章

python-字符串去掉空格的常见方法

python提供了去掉字符串空格的方法&#xff0c;可以满足大部分需求。 但在实际应用中&#xff0c;还需要灵活借助python其他方法&#xff0c;来实现字符串空格的删除。 比如&#xff0c;去掉字符串的全部空格、字符串连续空格保留一个等&#xff0c;都需要结合其他的方法来实现…

【kafka】mac环境安装kafka

生产中使用到的中间件使用心得记录&#xff0c;感兴趣可以关注我一起学习&#xff5e; 环境&#xff1a; 硬件&#xff1a;mac 软件&#xff1a;kafka v3.0.0 安装步骤&#xff1a; 终端安装&#xff1a; 通过brew安装&#xff0c;会默认直接安装最新的版本 步骤1&#xf…

Android StringFog 字符串自动加密

一、StringFog 作用 一款自动对dex/aar/jar文件中的字符串进行加密Android插件工具&#xff0c;正如名字所言&#xff0c;给字符串加上一层雾霭&#xff0c;使人难以窥视其真面目。可以用于增加反编译难度&#xff0c;防止字符串代码重复。 支持java/kotlin。支持app打包生成…

【JDK 8-函数式编程】4.6 方法引用与构造函数引用

一、 方法引用与构造函数引用 1. 说明 2. 语法: 二、静态方法 三、实例方法 四、构造函数 4.1 单个参数 4.2 2个参数 五、执行结果 一、 方法引用与构造函数引用 以前调用&#xff1a;对象.方法名、类名.方法名 jdk1.8提供了另外一种调用方式 :: 1. 说明 用来直接访…

子网的划分

强化计算机网络发现王道没有这一块的内容&#xff0c;导致做题稀里糊涂。于是个人调研补充。 子网划分是将一个大型IP网络划分成更小的子网&#xff0c;以实现更有效的网络管理和资源分配。 原因&#xff1a; 提高网络性能&#xff1a;子网划分可以减少广播域的大小&#xff…

靶场练习——SDcms文件上传漏洞靶场

文章目录 前言一、寻找网站后台页面1、点击请登录&#xff0c;查看URL2、修改URL参数&#xff0c;找到后台登录页面 二、登录后台管理系统1、不能使用爆破2、使用弱口令登录 三、寻找文件上传点四、上传文件操作1、上传普通的图片文件&#xff0c;查看数据包2、尝试上传PHP文件…

Mysql----锁

文章目录 锁 概述 全局锁全局锁 概述全局锁 操作表级锁表级锁 表锁表级锁 元数据锁表级锁 意向锁行级锁行级锁 行锁行级锁 间隙锁&临键锁 锁 概述 是什么 是计算机协调多个进程或线程并发访问某一资源的机制。 意义 在数据库中&#xff0c;数据是一种供许多用户共享的…

C/C++计算分数的浮点数值 2019年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C计算分数的浮点数值 一、题目要求 1、编程实现 2、输入输出 二、解题思路 1、案例分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 C/C计算分数的浮点数值 2019年12月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 两个整数a和b分别作…

每日一题 337. 打家劫舍 III

难度&#xff1a;中等 整体思路相当于是前两天的方法倒过来&#xff0c;毕竟二叉树最常用的解法就是递归倒推 对于每一颗子树&#xff0c;他必定有一种最大的盗取方法&#xff0c;但是只有它的 root 的盗取情况才会影响到 root 的父节点&#xff0c;即如果收益最大的盗取方法…

【TCP】滑动窗口、流量控制 以及拥塞控制

滑动窗口、流量控制 以及拥塞控制 1. 滑动窗口&#xff08;效率机制&#xff09;2. 流量控制&#xff08;安全机制&#xff09;3. 拥塞控制&#xff08;安全机制&#xff09; 1. 滑动窗口&#xff08;效率机制&#xff09; TCP 使用 确认应答 策略&#xff0c;对每一个发送的数…

机器学习第七课--情感分析系统

分词 分词是最基本的第一步。无论对于英文文本&#xff0c;还是中文文本都离不开分词。英文的分词相对比较简单&#xff0c;因为一般的英文写法里通过空格来隔开不同单词的。但对于中文&#xff0c;我们不得不采用一些算法去做分词。 常用的分词工具 # encodingutf-8 import …

Linux C 多线程

为什么会有线程? ————————>>>> 进程实现多任务的缺点&#xff1a; 进程间切换的计算机资源开销很大&#xff0c;切换效率非常低进程间数据共享的开销也很大 线程和进程的关系 线程是进程的一个执行单元&#xff0c;是进程内的调度实体。比进程…

应用:使用#todo标签,清理未完成笔记 | Obsidian实践

各位【见睿思齐】的朋友&#xff0c;好久不见。断更了这么久&#xff0c;非常抱歉。起初是因为家里出了些事情&#xff0c;不得不断更了一段时间&#xff1b;后来是因为断更太久&#xff0c;找不回写作的感觉&#xff0c;于是又断更了更久的时间……总之是太不应该。最近读了一…

ESLint+Prettier+VSCode编程规范

编程规范 ESLintPrettierESLint和Prettier配合解决代码格式化问题1. 在VSCode搜索Prettier插件安装2. 创建prettier配置文件3. 在VSCode中设置3.1 找到左下角设置图标&#xff0c;点击设置3.2 但是对VSCode 而言&#xff0c;默认一个 tab 等于 4 个空格&#xff0c;而 ESLint 希…

【Hierarchical Coverage Path Planning in Complex 3D Environments】

Hierarchical Coverage Path Planning in Complex 3D Environments 复杂三维环境下的分层覆盖路径规划 视点采样全局TSP 算法分两层&#xff0c;一层高级一层低级&#xff1a; 高层算法将环境分离多个子空间&#xff0c;如果给定体积中有大量的结构&#xff0c;则空间会进一步细…

基于PyTorch搭建FasterRCNN实现目标检测

基于PyTorch搭建FasterRCNN实现目标检测 1. 图像分类 vs. 目标检测 图像分类是一个我们为输入图像分配类标签的问题。例如&#xff0c;给定猫的输入图像&#xff0c;图像分类算法的输出是标签“猫”。 在目标检测中&#xff0c;我们不仅对输入图像中存在的对象感兴趣。我们还…

软件工程之总体设计

总体设计是软件工程中的一个重要阶段&#xff0c;它关注整个系统的结构和组织&#xff0c;旨在将系统需求转化为可执行的软件解决方案。总体设计决定了系统的架构、模块划分、功能组织以及数据流和控制流等关键方面。 可行性研究 具体方面&#xff1a;经济可行性、技术可行性…

如何正确安装滚珠螺杆螺母?

在安装滚珠螺母时&#xff0c;相信很多人都遇到过装反这个问题&#xff0c;滚珠螺杆螺母是通过高精度的加工和配合实现传递转矩和运动的&#xff0c;如果将滚珠螺杆螺母反过来装&#xff0c;会导致导向槽和调整垫片位置不正确&#xff0c;使得整个螺杆系统的传动精度降低&#…

sketch for Mac快捷键大全

你可以在sketch中使用键盘快捷键来加快你的设计过程。要使用键盘快捷键&#xff0c;请同时按下下列列表的所有键。有些命令只能根据你在做什么或者你选择了什么才启用&#xff0c;所有把命令分成了下列不同的部分。 sketch下载地址&#xff1a;sketch 破解-Sketch for mac(专业…

Linux 信号集 及其 部分函数

这几个函数都是对自己自定义的信号集操作 int sigemptyset(sigset_t *set) 功能&#xff1a;清空信号集中的数据&#xff0c;将所有的标志位置为0 参数&#xff1a;set需要操作的信号集 返回值&#xff1a;成功0失败-1 int sigfillset(sigset_t *set) 功能&#xff1a;清空…