当前位置: 首页 > news >正文

JavaWeb笔记12

登录的问题:

用户两次登录后会生成新旧两个令牌,此时旧的不应该生效

要使旧的失效:

令牌主动失效机制
登录成功后,给浏览器响应令牌的同时,把该令牌存储到redis中
LoginInterceptor拦截器中,需要验证浏览器携带的令牌,并同时需要获取到redis中存储的与之相同的令牌
当用户修改密码成功后,删除redis中存储的旧令牌

登录优化-redis SpringBoot集成redis

SpringBoot 集成 redis
1导入 spring-boot-starter-data-redis 起步依赖
2.在 yml 配置文件中,配置 redis 连接信息
3.调用 API (StringRedisTemplate) 完成字符串的存取操作

<dependency> 
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>


# application.yml
spring:
data:
redis:
host: localhost
port: 6379


@Test
public void testStringSet(){ 
stringRedisTemplate.opsForValue().set("username","如花");
}

@Test
public void testStringGet(){
stringRedisTemplate.opsForValue().get("username");
}

写一个test

启动redis

运行test后,启动redis客户端

成功获取

不用redis客户端,在idea中获取

成功获取

存储时可以设置过期时间

存储id为1,15秒过期

登录优化-redis 主动失效机制实现

在UserController中注入redis

登录成功时把token存储到redis中并设置过期时间1小时,与令牌过期时间相同

在登录拦截器中也注入redis

验证token是否失效

更新密码时删除redis中存储的token

在更新密码的方法上传入token

更新时删除redis中存储的token

SpringBoot项目部署

项目需要部署到服务器上

开发好的项目需要打成jar包,首先需要配置打包的插件

项目打包

看弹幕提示 </properties> 里面加上<skipTests>true</skipTests>后成功打包

打包好的jar包在target目录下

把自己的电脑当作服务器,在当前文件夹运行cmd

运行

测试

注意: jar包部署,要求服务器必须有jre环境


小结:

1.如何生成 jar 包?
执行 package 命令即可

2.如何运行 jar 包?
Java -jar jar 包位置

3.Jar 包部署对服务器有什么要求?
必须有 jre 环境

SpringBoot属性配置方式

问题:

想改端口为9090,但项目已经打成jar包了,不能直接在yml配置文件中修改

解决:

方法一:命令行参数方式

--键=值        --server.port=9090

端口改为9090

方法二:环境变量方式

在用户变量新建一个server.port变量

重新启动cmd窗口环境变量才会生效

运行后端口是9090

方法三:外部配置文件方式

当前文件夹下创建yml文件

运行

端口成功改为9090

配置的优先级 从上往下依次变高

1.项目中 resources 目录下的 application.yml

2.Jar 包所在目录下的 application.yml

3.操作系统环境变量

4.命令行参数

SpringBoot多环境开发 基本使用

开发、测试、生产三种环境下配置信息是不同的

多环境开发 - Profiles
SpringBoot 提供的 Profiles 可以用来隔离应用程序配置的各个部分,并在特定环境下指定部分配置生效
如何分隔不同环境的配置?
使用三个横杠 ---

如何指定哪些配置属于哪个环境?
spring:
config:
activate:
on-profile: 环境名称

如何指定哪个环境的配置生效?
spring:
profiles:
active: 环境名称

如果 特定环境中的配置和通用信息冲突了,特定环境中的配置生效

下图中虚拟路径/bbb生效

三种环境配置文件写到同一个yml文件中会不好维护

解决:多文件配置

把不同环境的配置信息写到不同文件

在application.yml中指定激活的环境

SpringBoot多环境开发 分组

在一个环境的yml文件中配置多个配置信息也会不好维护

解决:

把不同的配置信息再分成多个yml文件

在application.yml中指定激活的分组

http://www.dtcms.com/a/293661.html

相关文章:

  • 硬件基础 -- 信号完整性
  • ESP32-S3学习笔记<4>:I2C的应用
  • 0基础法考随手笔记 02(刑诉法专题04 辩护与代理)
  • 如何用 Kafka + Redis + 线程池搭建高吞吐异步消息处理架构
  • TwoPhaseIterator 两阶段验证
  • Fastdds中的端口号计算
  • 基于 XGBoost 与 SHAP 的医疗自动化办公与可视化系统(下)
  • 在React中,函数式组件和类组件各有优缺点
  • 射频信号(大宽高比)时频图目标检测anchors配置(下)
  • 分布式任务调度实战:XXL-JOB与Elastic-Job深度解析
  • ZKmall开源商城微服务架构实战:Java 商城系统的模块化拆分与通信之道
  • 【音视频学习】五、深入解析视频技术中的像素格式:颜色空间、位深度、存储布局
  • TR-FRET(时间分辨荧光能量共振转移)在药物研发中的热门应用简介
  • 【解决vmware ubuntu不小心删boot分区,进不去系统】
  • 在 Ubuntu 上将 Docker 降级到版本 25.0.5 (二) 降低版本,涉及兼容性问题
  • 在离线 Ubuntu 22.04机器上运行 ddkj_portainer-cn 镜像 其他相关操作也可以复刻 docker
  • centos 配置docker
  • java通过com进行pdf转换docx丢失
  • mongodb的备份和还原(精简)
  • LeetCode11~20题解
  • Visual Studio中部署PaddleOCRv5 (借助ncnn框架)
  • 如何Visual Studio 的配置从 Qt-Debug 切换到 x64-Debug
  • ESP32的ADF详解:5. Streams的API
  • 聊聊 Flutter 在 iOS 真机 Debug 运行出现 Timed out *** to update 的问题
  • GEMINUS 和 Move to Understand a 3D Scene
  • Redis的key过期策略
  • 4.3 激活函数的目的
  • LLM 幻觉一般是由于什么产生的,在模型什么部位产生
  • 计算机组成原理——数据的表示和运算2
  • 手机开启16k Page Size