报表系统-davinci后台代码学习

1、使用BeanUtils.copyProperties进行对象之间的属性赋值。

参考资料:​​​​​​使用BeanUtils.copyProperties进行对象之间的属性赋值_Terisadeng的博客-CSDN博客_beanutils.copyproperties

2、使用GuavaCache本地缓存实现登录验证码逻辑,区别于用redis存储验证码。

3、后台接口使用@Valid和BindingResult对RequestBody中实体参数做有效性校验。

4、使用jakarta.mail-1.6.4.jar提供了一个独立于平台和协议的框架来构建邮件,完成邮件接收与发送功能。

5、集成LDAP来管理用户与组织数据。

6、使用selenium+chromdriver实现报表信息截图发送邮件给用户。

7、使用poi插件(poi-3.9.jar)实现java后端对EXCEL(包括sheet)的生成和下载操作。

8、EXCEL下载和分享下载模块使用builder建造者设计模式和线程池中高并发的FUTURE模式实现异步下载。

9、使用JWT校验用户登录信息,区别于session认证。

JWT全称是JSON Web Token是一个开放标准(RFC 7519),目前最流行的跨域身份验证解决方案。

它定义了一种经过加密的格式,放在json对象在请求中传递,用于验证请求是否被允许访问。

JWT使用方式

客户端收到服务器返回的 JWT,需要自己存储在 Cookie 或者 localStorage中。

此后的每一次请求都必须带上这个 JWT,放在 cookie 中是无法跨域的,所以我们需要在 HTTP 请求的头信息或者参数中带上。

JWT的特点与session的差异

首先要明确,http协议是无状态的,每次请求对服务端而言,是不清楚上一次请求的认证。

session 的做法是将已经认证过的用户信息存储在服务器,用户下次请求带上 Session ID,服务器依此判断用户是否认证过。
因此也带来了一些问题:

  • 开销: 用户信息保存在内存中,认证的用户越多,内存开销越大。
  • 扩展性:不方便扩展,虽然可以将session存储在redis中,但是对程序的稳定性又带来不确定
  • CORS:跨资源共享问题,调用从另一个域名下获取资源时,会遇到禁止请求。

与之相反的是 JWT 这种令牌认证方式,基于Token的身份认证是无状态的,服务器或者Session中不会存储任何用户信息,方便无状态的服务扩展,尤其适合做单点登录和手机端的鉴权。
但JWT也有不足,令牌一旦发出,是无法作废的,到期之前一直有效。

10、令牌的使用:JWT格式和AES加密技术的使用

        数据认证处理使用JWT格式的令牌来认证用户的权限等,在报表分享时使用AES加密和解码的技术令牌实现数据权限的校验。

JWT编码和解码示例:

 

11、使用Workbook 在java后端生成Excel和sheet页。

12、设计模式的使用:

        整体采用模板设计模式,减少代码量

        数据封装传输中使用builder设计模式

        线程使用:多采用线程池,在高并发中使用线程池的FUTURE模式实现对excel模块的生成和下载。

        在对文件类型和下载类型的枚举中,使用简单工厂模式

        Value Object(值对象) 设计模式

13、本地缓存:

        本地缓存框架选型:guava cache、Caffeine

14、lambda表达式

15、spring框架中的ApplicationContextAware接口获取JavaBean

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值