总之,在实际中利用实验室排课系统,其意义如下:
第一点:实验室排课系统的实际利用,可以帮助管理职员在短韶光内完成信息处理事情;
第二点:通过系统页面的合理排版布局,可以更加直不雅观的展示系统的内容,并且利用者可以随时阅读页面信息,随时操作系统供应的功能;

第三点:可以实现信息管理打算机化;
第四点:可以降落信息管理本钱; ## 1.3 研究内容 对实验室排课系统设计制作,不仅须要技能支撑,也须要大量的理论研究。本文在对实验室排课系统进行先容时,将按照如下内容进行。
第一部分:先容实验室排课系统研究的背景意义,便于用户理解系统;
第二部分:先容开拓实验室排课系统须要搭建的环境,包括技能和工具;
第三部分:先容用户对实验室排课系统的功能哀求,以及对实验室排课系统的性能哀求等;
第四部分:先容数据库的设计方案,以及根据功能哀求设计的功能构造;
第五部分:先容通过编码终极实现的系统功能运行效果;
第六部分:先容系统的功能测试,对系统进行综合检测,并及时办理系统涌现的问题,直至系统运行正常。 # 第2章 开拓环境与技能 实验室排课系统的编码实现须要搭建一定的环境和利用相应的技能,接下来的内容便是对实验室排课系统用到的技能和工具进行先容。 ## 2.1 MYSQL数据库 本课题所开拓的运用程序在数据操作方面是不可预知的,是常常变动的,没有办法直接把数据写在文档里,这样不仅仅不屈安,也不能实现运用程序的功能。如果要能实现运用程序所须要的数据存储功能,就避免不了要进行专业数据库存储软件的选择。基本上运用程序实现的功能不算太繁芜,市情上任何一个关系型数据库软件都可以实现。参考自己的学习进度和操作习气来讲,Oracle数据库是适宜的,但是所须要的的安装软件很大,并且有好多不须要的功能都是开启的状态,十分花费电脑资源,以是没有选择Oracle数据库,而SQL Server数据库虽然学过,但是安装的时候由于电脑上可能有其他的软件存在,常常性的出问题,而安装问题不好办理就须要重新安装操作系统,这样对已经存在的软件来讲又是一种韶光上的摧残浪费蹂躏。只有MySQL数据库,安装包小,安装速率快,操作大略,哪怕安装出问题也好办理,不用重装操作系统,也不影响电脑上运行的其他软件,花费资源也少,最主要的是在功能方面完备的符合设计须要,以是末了选择了MySQL数据库作为运用软件开拓须要的数据库。 ## 2.2 JSP技能在动态网站的兴起之初,作为高等编程措辞的Java自然不会放弃这个领域的蛋糕。Sun公司推出了Servlet作为输出动态网站的一种技能标准,虽然不怎么受当时程序员的喜好,但是当初也没有太多的选择,随后几个月PHP措辞问世,不考虑性能和效率如何,最少在书写网页所须要的动态代码块和静态代码块方面进行了区分,让书写效率和可读效率大大的提升,以是很多Java程序员以及刚入行的低级程序员都选择了PHP措辞作为自己职业的发展方向,Sun公司为了掩护Java措辞在高等编程措辞上的江湖地位,防止PHP连续抢走市场份额霸占率,Sun公司联合Apache基金会研发了一个关于Java动态网页的一个新型的技能标准,这便是JSP技能。JSP吸取了PHP措辞在页面书写上面的所有优点,但是又背靠Java EE的弘大后台,又能实现很多通过Java组件就能实现的功能,在JSP页面上可以直接引用那些组件,让JSP更加的强壮丰富。担保了Java技能纵向的可持续发展,并且在动态网站开拓领域终于站稳了脚跟,其他PHP开拓职员可以很快的转移到JSP进行开拓,不考虑一些分外组件或者功能的开拓,只从动态页面的开拓上来讲,完备实现了PHP程序和JSP程序的险些无本钱的转换,JSP技能就这样的发展了起来。 ## 2.3 SSM框架 SSM框架不是一个框架的名称,而是三个框架的首字母缩写,分别是Spring框架、SpringMVC框架、MyBatis框架。是目前Java开拓者中学习的首选框架。
Spring框架继续了JavaEE和EJB框架的优点,在依赖注入方面去掉了臃肿的配置,在面向切面方面也简化了代码数量,提高了代码品质。依赖表明进行配置,让所有的依赖都可以通过程序的自动配置和探求,减少了代码写作数量,提高了代码阅读性。
SpringMVC框架与Spring只是一个公司的,在底层代码构造上可以复用,但是最紧张的功能是对数据提交要求进行过滤,并且对数据的返回进行过滤,不限于页面是JSP技能,也可以是其他的技能,更随意马虎大型开拓的凑集技能。
MyBatis框架摒弃了Hibernate框架的配置臃肿方面,有时候Hibernate框架业务比较繁芜的时候,代码量反而增加,性能低落,无法对底层的数据库语句优化,而MyBatis框架则有效的办理了这个方面,可以通过Java语句,对数据库操作语句进行优化,代码更简洁,实行效率更高,并且可以生产一些模块化代码,办理了开拓过程中随意马虎涌现的实体映射方面的操作。
第3章 系统剖析面对即将开拓的系统,进行提前的剖析是必要的。这也是开拓流程中必须有的环节。常日剖析系统期间,紧张涉及的内容包括系统开拓可行性问题,对系统功能和性能的剖析等问题。 ## 3.1 可行性剖析 在正式对须要培植的项目进行投资前,有一个比较关键的步骤是不能短缺的,那便是可行性剖析。它紧张从当前技能,经济等角度去评估系统的可行性,在投资决策中常常采取这种科学的方法来论证项目。 ### 3.1.1 技能可行性 当前,系统开拓的技能已经发展成熟,而且通过打算机网络可以获取开拓工具的利用方法,以及规范化编写的模块化代码,这些知识可以帮助开拓者顺利完本钱系统的编码事情。 ### 3.1.2 经济可行性 本系统开拓期间须要配置的软件环境,可以免费通过开拓类官网下载安装,须要配置的硬件设备也不须要具备很高的性能,常日网吧电脑,或学校打算机机房的电脑都符合哀求。因此,从经济方面考虑,实验室排课系统开拓可行。 ### 3.1.3 操作可行性 实验室排课系统根据用户利用习气进行开拓,设计的界面具有统一性,并具备精良的导航功能。以是,只要会大略操作电脑的职员,可以无压力操作实验室排课系统。
总之,从上述的论证来看,本系统可以开拓。 ## 3.2 系统流程 流程图这样的工具可以直不雅观反响出系统内部的操作逻辑,可以帮助用户更好的理解系统。 ### 3.2.1 操作流程 进入本系统须要访问者供应验证信息。验证合格的访问者才能获取访问资格。其详细的操作流程见下图。访问者根据登录界面设置的信息项如实填写,待信息通过验证后,访问者可以进入指定的页面享受本系统供应的做事和阅读本系统的干系信息。
图3.1 操作流程图 ### 3.2.2 登录流程 本系统的登录模块,其内部的流程见下图。紧张对访问本系统的职员供应的验证信息进行逐个判断,系统面对录入缺点的信息会给出提示,比如,提示账号不对,或提示密码不匹配等提示信息。总之,在登录页面填写的所有信息都符合哀求,访问者就登录成功了。
图3.2 登录流程图 ### 3.2.3 删除信息流程 本系统在常常性的利用后,会产生很多失落去代价的信息,因此就须要及时清理数据,腾出系统的空间。对这些数据进行清理时,其对应的流程见下图。先选中要清理的数据,通过反复确认须要清理的数据,避免操作职员误删。已经删除的数据就不会涌如今系统里面。
图3.3 删除信息流程图 ### 3.2.4 添加信息流程 本系统紧张用于显示信息,供应做事,个中,数据添加功能便是个中的做事之一,详细流程见下图。让操作者在信息添加的页面录入数据,待这些数据被提交考验合格后,就会在系统指定页面显示出来。
图3.4 添加信息流程图 ## 3.3 性能需求 进行需求剖析,包括了根据用户实际需求制订功能,也涵盖了对即将设计的系统进行性能上的需求剖析。以是一样平常剖析系统时,一方面要剖析系统功能,另一方面也要剖析系统的性能。毕竟设计开拓出一个好性能的系统可以确保系统的质量可靠。
接下来剖析系统的性能,还要从界面友好性,系统的韶光特性,系统的可靠性等方面来剖析解释。
(1)韶光特性哀求:系统处理数据都有韶光哀求,这也是系统的韶光特性。常日都会把数据处理的韶光进行剖析,也会设置用户要求的相应韶光,还有系统在满负荷运行时可以偏离的范围数值等都须要提前剖析确定。
(2)界面友好性:除了功能上须要考虑用户需求外,在人机交互界面的设计上,也须要考虑用户的利用习气,包括界面的布局,界面基调选择以及颜色搭配等。只管即便做到用户在接管大略的培训之后,可以对系统进行独立操作。
(3)系统可靠性:对付初学者而言,很随意马虎涌现一个问题,便是设计开拓的系统,由于人为的误操作涌现崩溃,有些也会导致电脑去世机。这样的征象也解释这种容错能力低下的系统是不可靠的。完备不能作为生活中处理信息的系统。当下,系统开拓要担保可靠性,设计时,把模块化和构造化的设计理念也考虑进来。如果碰着对时效性哀求比较严格的系统,也须要采纳其它的方法,比如双机系统,还有磁盘阵列等办法。还有便是一个可靠性的系统,对设备的供电能力也有哀求。 # 第4章 系统设计 一个成功设计的系统在内容上必定是丰富的,在系统外不雅观或系统功能上必定是对用户友好的。所以为了提升系统的代价,吸引更多的访问者访问系统,以及让来访用户可以花费更多韶光勾留在系统上,则表明该系统设计得比较专业。 ## 4.1 设计原则 本系统在设计过程中须要依照一定的设计原则进行,目的便是为了让开发的系统具备高质量,完好完备的功能,方便大略的操作,如此才可以最大限度的知足利用者的哀求。系统设计原则除了基本的易操作原则外,还有安全性原则,准确性原则。
第一个设计原则:易操作原则,针对本系统设计的功能要完备完好,编码时,设计的各个接口要具备友好性,利用者一旦利用本系统时,要能够轻松上手,操作本系统处理数据时,要具备便利性。此外,也须要设计一些必要提示,勾引利用者操作系统。
第二个设计原则:安全性原则,本系统在登录模块要对各个访问者进行身份验证,系统会通过访问者输入的信息进行判断,利用提前编写的安全验证代码进行数据比对,勾引匹配成功的访问者进入指定的操作界面。这样可以避免无关性访问者盗取系统的数据。
第三个设计原则:准确性原则,为了担保利用者登记的数据是精确的,须要提前设计数据纠错机制,让利用者可以通过系统的报错提示,仔细检讨登记的缺点信息,并及时纠正缺点,填写规范精确的信息。比如设置密码时,哀求密码的长度不能低于6个字符,且数据类型哀求不能全部是数字等都能进行规范。 ## 4.2 功能构造设计 在前面剖析的管理员功能的根本上,进行接下来的设计事情,终极展示设计的管理员构造图(见下图)。管理员增编削查实验室
实验室排课系统
学生信息管理
公告信息管理
实验室申请管理
实验室管理
学生信息修正
学生信息新增
实验室添加
实验室删除
实验室修正
课程信息添加
课程信息修正
课程信息删除
公告信息添加
公告信息编削
公告信息删除
实验室申请添加
实验室申请修正
实验室申请删除
排课取消管理
排课取消修正
排课取消删除
排课取消添加
课程信息管理 ##
## 4.3 数据库设计 开拓一个别系也须要提前设计数据库。这里的数据库是干系数据的凑集,存储在一起的这些数据也是按照一定的组织办法进行的。目前,数据库能够做事于多种运用程序,则是源于它存储办法最佳,具备数据冗余率低的上风。虽然数据库为程序供应信息存储做事,但它与程序之间也可以保持较高的独立性。总而言之,数据库经历了很长一段韶光的发展,从最初的不为人知,到现在的人尽皆知,其干系技能也加倍成熟,同时也拥有着坚实的理论根本。 ### 4.3.2 数据库物理设计 本数据库是关系型数据库,因此对二维表的构造设计也比较关键。毕竟二维表格模型便是关系型数据库中的关系模型。而一些常用的关系模型中的观点也须要理解,才可以对关系模型进行设计。下面就大略先容关系,元组,属性,域,关键字等常用观点的含义。
关系:关系便是数据库中的一张数据表,每张数据表都有命名,也便是每个关系也有名字,那便是数据表名;
元组:元组便是数据表中的一行记录;
属性:属性便是数据表中的字段,也便是数据表中的一列;
域:域便是对数据表中属性的取值进行限定;
关键字:关键字便是数据表中的主键;
在理解了表构造设计的常用观点后,接下来就须要利用前面绘制的E-R模型完成表构造的设计事情,并在数据库中创建数据表,并为各个数据表进行命名。以下就对设计的结果通过表格形式进行展示。
表4.1字典表表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
dic_code
String
字段
是
3
dic_name
String
字段名
是
4
code_index
Integer
编码
是
5
index_name
String
编码名字
是
6
super_id
Integer
父字段id
是
7
beizhu
String
备注
是
8
create_time
Date
创建韶光
是
表4.2西席表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
jiaoshi_uuid_number
String
工号
是
3
jiaoshi_name
String
西席姓名
是
4
jiaoshi_photo
String
头像
是
5
jiaoshi_phone
String
联系办法
是
6
jiaoshi_email
String
邮箱
是
7
jiaoshi_delete
Integer
假删
是
8
create_time
Date
创建韶光
是
表4.3课程信息表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
shiyanshishenqing_id
Integer
实验室
是
3
kecheng_name
String
课程名称
是
4
kecheng_photo
String
课程图片
是
5
shangke_time
Date
上课韶光
是
6
xiake_time
Date
结束韶光
是
7
kecheng_types
Integer
课程类型
是
8
banji_types
Integer
班级
是
9
xueqi_types
Integer
学期
是
10
xingqi_types
Integer
星期
是
11
jieke_types
Integer
第几节
是
12
jiaoshi_id
Integer
西席
是
13
kecheng_yesno_types
Integer
课程审核
是
14
kecheng_yesno_text
String
审核缘故原由
是
15
kecheng_content
String
课程详情
是
16
create_time
Date
创建韶光
是
表4.4公告表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
news_name
String
公告标题
是
3
news_types
Integer
公告类型
是
4
news_photo
String
公告图片
是
5
insert_time
Date
公告韶光
是
6
news_content
String
公告详情
是
7
create_time
Date
创建韶光
是
表4.5排课取消申请表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
jiaoshi_id
Integer
西席
是
3
kecheng_id
Integer
课程
是
4
paiekequxiao_yesno_types
Integer
排课取消审核
是
5
paiekequxiao_yesno_text
String
审核缘故原由
是
6
kecheng_content
String
课程详情
是
7
create_time
Date
创建韶光
是
表4.6实验室信息表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
shiyanshi_name
String
实验室名称
是
3
shiyanshi_photo
String
实验室图片
是
4
shiyanshi_types
Integer
实验室类型
是
5
status_types
Integer
实验室状态
是
6
shiyanshi_content
String
实验室详情
是
7
create_time
Date
创建韶光
是
表4.7实验室申请表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
shiyanshi_id
Integer
实验室
是
3
jiaoshi_id
Integer
西席
是
4
shiyanshishenqing_yesno_types
Integer
审核结果
是
5
shiyanshishenqing_yesno_text
String
审核缘故原由
是
6
create_time
Date
创建韶光
是
表4.8学生表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
yonghu_uuid_number
String
学号
是
3
yonghu_name
String
学生姓名
是
4
yonghu_photo
String
头像
是
5
banji_types
Integer
班级
是
6
yonghu_phone
String
联系办法
是
7
yonghu_id_number
String
学生身份证号
是
8
yonghu_email
String
邮箱
是
9
yonghu_delete
Integer
假删
是
10
create_time
Date
创建韶光
是
表4.9用户表表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
username
String
用户名
是
3
password
String
密码
是
4
role
String
角色
是
5
addtime
Date
新增韶光
是
5.1学生信息管理如图5.1显示的便是学生信息管理页面,此页面供应给管理员的功能有:学生信息的查询管理,可以删除学生信息、修正学生信息、新增学生信息,
还进行了对用户名称的模糊查询的条件
图5.1 学生信息管理页面 ### 5.2 实验室管理 如图5.2显示的便是实验室管理页面,此页面供应给管理员的功能有:查看已发布的实验室数据,修正实验室,实验室作废,即可删除,还进行了对实验室名称的模糊查询 实验室信息的类型查询等等一些条件。
图5.2 实验室管理页面 ### 5.3实验室申请管理 如图5.3显示的便是实验室申请管理页面,此页面供应给管理员的功能有:根据实验室申请进行条件查询,还可以对实验室申请进行新增、修正、查询操作等等。
图5.3 实验室申请管理页面 ### 5.1公告信息管理 如图5.4显示的便是公告信息管理页面,此页面供应给管理员的功能有:根据公告信息进行新增、修正、查询操作等等。
图5.4 公告信息管理页面
MPUtil.java
package com.utils;import java.util.Arrays;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import org.apache.commons.lang3.StringUtils;import cn.hutool.core.bean.BeanUtil;import com.baomidou.mybatisplus.mapper.Wrapper;/ Mybatis-Plus工具类 /public class MPUtil { public static final char UNDERLINE = '_'; //mybatis plus allEQ 表达式转换 public static Map allEQMapPre(Object bean,String pre) { Map<String, Object> map =BeanUtil.beanToMap(bean); return camelToUnderlineMap(map,pre); } //mybatis plus allEQ 表达式转换 public static Map allEQMap(Object bean) { Map<String, Object> map =BeanUtil.beanToMap(bean); return camelToUnderlineMap(map,""); } public static Wrapper allLikePre(Wrapper wrapper,Object bean,String pre) { Map<String, Object> map =BeanUtil.beanToMap(bean); Map result = camelToUnderlineMap(map,pre); return genLike(wrapper,result); } public static Wrapper allLike(Wrapper wrapper,Object bean) { Map result = BeanUtil.beanToMap(bean, true, true); return genLike(wrapper,result); } public static Wrapper genLike( Wrapper wrapper,Map param) { Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator(); int i=0; while (it.hasNext()) { if(i>0) wrapper.and(); Map.Entry<String, Object> entry = it.next(); String key = entry.getKey(); String value = (String) entry.getValue(); wrapper.like(key, value); i++; } return wrapper; } public static Wrapper likeOrEq(Wrapper wrapper,Object bean) { Map result = BeanUtil.beanToMap(bean, true, true); return genLikeOrEq(wrapper,result); } public static Wrapper genLikeOrEq( Wrapper wrapper,Map param) { Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator(); int i=0; while (it.hasNext()) { if(i>0) wrapper.and(); Map.Entry<String, Object> entry = it.next(); String key = entry.getKey(); if(entry.getValue().toString().contains("%")) { wrapper.like(key, entry.getValue().toString().replace("%", "")); } else { wrapper.eq(key, entry.getValue()); } i++; } return wrapper; } public static Wrapper allEq(Wrapper wrapper,Object bean) { Map result = BeanUtil.beanToMap(bean, true, true); return genEq(wrapper,result); } public static Wrapper genEq( Wrapper wrapper,Map param) { Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator(); int i=0; while (it.hasNext()) { if(i>0) wrapper.and(); Map.Entry<String, Object> entry = it.next(); String key = entry.getKey(); wrapper.eq(key, entry.getValue()); i++; } return wrapper; } public static Wrapper between(Wrapper wrapper,Map<String, Object> params) { for(String key : params.keySet()) { String columnName = ""; if(key.endsWith("_start")) { columnName = key.substring(0, key.indexOf("_start")); if(StringUtils.isNotBlank(params.get(key).toString())) { wrapper.ge(columnName, params.get(key)); } } if(key.endsWith("_end")) { columnName = key.substring(0, key.indexOf("_end")); if(StringUtils.isNotBlank(params.get(key).toString())) { wrapper.le(columnName, params.get(key)); } } } return wrapper; } public static Wrapper sort(Wrapper wrapper,Map<String, Object> params) { String order = ""; if(params.get("order") != null && StringUtils.isNotBlank(params.get("order").toString())) { order = params.get("order").toString(); } if(params.get("sort") != null && StringUtils.isNotBlank(params.get("sort").toString())) { if(order.equalsIgnoreCase("desc")) { wrapper.orderDesc(Arrays.asList(params.get("sort"))); } else { wrapper.orderAsc(Arrays.asList(params.get("sort"))); } } return wrapper; } / 驼峰格式字符串转换为下划线格式字符串 @param param @return / public static String camelToUnderline(String param) { if (param == null || "".equals(param.trim())) { return ""; } int len = param.length(); StringBuilder sb = new StringBuilder(len); for (int i = 0; i < len; i++) { char c = param.charAt(i); if (Character.isUpperCase(c)) { sb.append(UNDERLINE); sb.append(Character.toLowerCase(c)); } else { sb.append(c); } } return sb.toString(); } public static void main(String[] ages) { System.out.println(camelToUnderline("ABCddfANM")); } public static Map camelToUnderlineMap(Map param, String pre) { Map<String, Object> newMap = new HashMap<String, Object>(); Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator(); while (it.hasNext()) { Map.Entry<String, Object> entry = it.next(); String key = entry.getKey(); String newKey = camelToUnderline(key); if (pre.endsWith(".")) { newMap.put(pre + newKey, entry.getValue()); } else if (StringUtils.isEmpty(pre)) { newMap.put(newKey, entry.getValue()); } else { newMap.put(pre + "." + newKey, entry.getValue()); } } return newMap; }}
ShiyanshiServiceImpl.java
package com.service.impl;import com.utils.StringUtil;import org.springframework.stereotype.Service;import java.lang.reflect.Field;import java.util.;import com.baomidou.mybatisplus.plugins.Page;import com.baomidou.mybatisplus.service.impl.ServiceImpl;import org.springframework.transaction.annotation.Transactional;import com.utils.PageUtils;import com.utils.Query;import org.springframework.web.context.ContextLoader;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;import com.dao.ShiyanshiDao;import com.entity.ShiyanshiEntity;import com.service.ShiyanshiService;import com.entity.view.ShiyanshiView;/ 实验室信息 做事实现类 /@Service("shiyanshiService")@Transactionalpublic class ShiyanshiServiceImpl extends ServiceImpl<ShiyanshiDao, ShiyanshiEntity> implements ShiyanshiService { @Override public PageUtils queryPage(Map<String,Object> params) { if(params != null && (params.get("limit") == null || params.get("page") == null)){ params.put("page","1"); params.put("limit","10"); } Page<ShiyanshiView> page =new Query<ShiyanshiView>(params).getPage(); page.setRecords(baseMapper.selectListView(page,params)); return new PageUtils(page); }}
TokenServiceImpl.java
package com.service.impl;import java.util.Calendar;import java.util.Date;import java.util.List;import java.util.Map;import org.springframework.stereotype.Service;import com.baomidou.mybatisplus.mapper.EntityWrapper;import com.baomidou.mybatisplus.mapper.Wrapper;import com.baomidou.mybatisplus.plugins.Page;import com.baomidou.mybatisplus.service.impl.ServiceImpl;import com.dao.TokenDao;import com.entity.TokenEntity;import com.entity.TokenEntity;import com.service.TokenService;import com.utils.CommonUtil;import com.utils.PageUtils;import com.utils.Query;/ token @author /@Service("tokenService")public class TokenServiceImpl extends ServiceImpl<TokenDao, TokenEntity> implements TokenService { @Override public PageUtils queryPage(Map<String, Object> params) { Page<TokenEntity> page = this.selectPage( new Query<TokenEntity>(params).getPage(), new EntityWrapper<TokenEntity>() ); return new PageUtils(page); } @Override public List<TokenEntity> selectListView(Wrapper<TokenEntity> wrapper) { return baseMapper.selectListView(wrapper); } @Override public PageUtils queryPage(Map<String, Object> params, Wrapper<TokenEntity> wrapper) { Page<TokenEntity> page =new Query<TokenEntity>(params).getPage(); page.setRecords(baseMapper.selectListView(page,wrapper)); PageUtils pageUtil = new PageUtils(page); return pageUtil; } @Override public String generateToken(Integer 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; } @Override public TokenEntity getTokenEntity(String token) { TokenEntity tokenEntity = this.selectOne(new EntityWrapper<TokenEntity>().eq("token", token)); if(tokenEntity == null || tokenEntity.getExpiratedtime().getTime()<new Date().getTime()) { return null; } return tokenEntity; }}
myInfo.js
//设置用户个人中央入口if(window.sessionStorage.getItem('role') != '管理员'){ var accountTableName = window.sessionStorage.getItem('accountTableName'); $('#myinfo').attr('href','#'); $('#myinfo').on('click', function(e) { e.preventDefault(); http(accountTableName+'/session','GET',{},(res)=>{ if(res.code == 0){ window.sessionStorage.setItem('userId',res.data.id); window.sessionStorage.setItem('onlyme',true); window.location.href = baseUrl + 'jsp/modules/' + accountTableName + '/add-or-update.jsp'; } }); }); }
声明
本博客适用于广泛的学术和教诲用场,包括但不限于个人学习、开拓设计,产品设计。仅供学习参考,旨在为读者供应深入理解和学术研究的材料。
java系统设计,毕设辅导