JavaFX+SpringBoot+验证码功能的小型薪酬管理系统

@目录

1 概述

1.1 简介

一个简单的小型薪酬管理系统,前端JavaFX+后端Spring Boot,功能倒没多少,主要精力放在了UI和前端的一些逻辑上面,后端其实做得很简单。
主要功能:

  • 用户注册/登录
  • 验证码找回密码
  • 用户修改信息,修改头像
  • 柱状图形式显示薪酬
  • 管理员管理用户,录入工资

1.2 响应流程

sequenceDiagram 用户请求 ->> 封装及提取数据: 发送请求 封装及提取数据->> Gson转换: List/Map/Worker Gson转换 ->> OkHttp : String OkHttp -->> Gson转换:转换返回数据 Note left of Gson转换: 封装及提取数据:根据<br/>ReturnCode判断状态<br>码并从中提取所<br/>需要的结果 Gson转换 -->> 封装及提取数据: 封装及提取数据 -->> 用户请求:更新UI sequenceDiagram OkHttp ->> 后端Controller层: 发送到对应url 后端Controller层 ->> 后端Controller层:日志记录 后端Controller层 ->> service层: 处理业务逻辑 service层 ->> 持久层: 持久化数据 service层 -->> 后端Controller层: 返回处理结果 后端Controller层 -->> OkHttp: 封装ReturnCode为String

1.3 演示

登录界面:
JavaFX+SpringBoot+验证码功能的小型薪酬管理系统
JavaFX+SpringBoot+验证码功能的小型薪酬管理系统
用户界面:
JavaFX+SpringBoot+验证码功能的小型薪酬管理系统
管理员界面:
JavaFX+SpringBoot+验证码功能的小型薪酬管理系统

2 环境

  • IDEA 2020.1
  • 本地JDK+服务器JDK:OpenJDK 11
  • OepnJFX 11
  • Spring Boot 2.3.0(Spring Boot的更新速度真是太快了)
  • Tomcat 9.0.33
  • MySQL 8.0.17

8 注意事项

8.1 路径问题

对于资源文件千万千万不要直接使用什么相对路径或绝对路径,比如:

String path1 = "/xxx/xxx/xxx/xx.png";
String path2 = "xxx/xx.jpg";

这样会有很多问题,比如有可能在IDEA中直接运行与打成jar包运行的结果不一致,路径读取不了,另外还可能会出现平台问题,众所周知Linux的路径分隔符与Windows的不一致。所以,对于资源文件,统一使用如下方式获取:

String path = getClass().getResource("/image/xx.png");

其中image直接位于resources资源文件夹下。其他类似,也就是说这里的/代表在resources下。

8.2 HTTPS

默认没有提供HTTPS,证书文件没有摆上去,默认走的是本地8080端口,有关OkHttp使用HTTPS的文章有不少,但是大部分都是仅仅写了前端如何配置HTTPS的,没有提到后端如何部署,可以参考笔者的这篇文章,包含Tomcat的配置教程。

8.3 配置文件加密

配置文件使用了jasypt-spring-boot开源组件进行加密,设置口令可以有三种方式设置:

  • 命令行参数
  • 应用环境变量
  • 系统环境变量

目前最新的版本为3.0.3(2020.05.31更新3.0.3 ,笔者之前使用3.0.2的版本进行加密时本地测试没问题,但是部署到服务器上老是提示找不到口令,无奈只好使用旧一点的2.x版本,但是新版本出了后笔者尝试过部署到本地Tomcat没有问题但是没有部署到服务器上),建议使用最新版本进行部署:
JavaFX+SpringBoot+验证码功能的小型薪酬管理系统
毕竟前后跨度挺大的,虽然说这是小的bug修复,但是还是建议试试,估计不会有3.0.2的问题了。
另外对于含有中文的字段记得进行编码转换:

str = new String(str.getBytes(StandardCharsets.ISO_8859_1),StandardCharsets.UTF_8);)

另外笔者已写好了测试文件,直接首先替换掉配置文件原来的密文,填上明文重新加密:
JavaFX+SpringBoot+验证码功能的小型薪酬管理系统
注意如果没有在配置文件中设置jasypt.encryptor.password的话可以在运行配置中设置VM Options(建议不要把口令直接写在配置文件中,当然这个默认是使用PBE加密,非对称加密可以使用jasypt.encryptor.private-key-stringjasypt.encryptor.private-key-location):
JavaFX+SpringBoot+验证码功能的小型薪酬管理系统

8.4 键盘事件

添加键盘事件可以使用如下代码:

scene.getAccelerators().put(new KeyCodeCombination(KeyCode.ENTER), ()->{xxx});
//getAccelerators返回ObservableMap<KeyCombination, Runnable>

响应之前需要让parent获取焦点:

parent.requestFocus();

8.5 数据库

默认使用的数据库名为app_test,用户名test_user,密码test_passwordresources下有一个init.sql,直接使用MySQL导入即可。
JavaFX+SpringBoot+验证码功能的小型薪酬管理系统

8.6 验证码

默认没有自带验证码功能,由于涉及隐私问题故没有开放,需要的话可以参考笔者的腾讯云短信API使用或者自行搜索其他短信验证API。一些写在配置文件中的API需要的密钥等信息强烈建议加密。

9 源码

前后端完整代码,带README.md说明:

  • github
  • 码云

10 参考

1、CSDN-maven-shade-plugin介绍及使用
2、CSDN-Maven3种打包方式之一maven-assembly-plugin的使用
3、知乎-制作包含Java 11和JavaFX的JRE
4、CSDN-使用exe4j将java文件打成exe文件运行详细教程
5、Github-jasypt-spring-boot issue
6、w3cschool-JavaFX
7、简书-Linux Tomcat+Openssl单向/双向认证

如果觉得文章好看,欢迎点赞。

同时欢迎关注微信公众号:氷泠之路。

JavaFX+SpringBoot+验证码功能的小型薪酬管理系统

上一篇:JavaFX布局神器-SceneBuilder


下一篇:GUI