当前位置: 首页 > 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.lryc.cn/news/597381.html

相关文章:

  • MySQL深度理解-深入理解MySQL索引底层数据结构与算法
  • 容联云携手信通院,启动“智能体服务生态共创计划”
  • 华为云ELB(弹性负载均衡)持续报异常
  • 2025年Zigbee技术白皮书:全球物联网无线通信的关键创新
  • HF86611_VC1/HF86611Q_VC1:多通道USB HiFi音频解码器固件技术解析
  • 【自动化运维神器Ansible】深入解析Ansible Host-Pattern:精准控制目标主机的艺术
  • .Net core 部署到IIS出现500.19Internal Server Error 解决方法
  • Ubuntu系统下FFmpeg源码编译安装
  • 内网穿透技术深析:从原理到工具应用的全方位解读,无公网IP本地服务器外网访问实操
  • IGM弧焊机器人气体节约
  • 【数据结构】哈希——位图与布隆过滤器
  • 彩色转灰度的核心逻辑:三种经典方法及原理对比
  • zabbix监控MySQL数据库
  • 企业选择将服务器放在IDC机房托管的优势
  • React+Three.js实现3D场景压力/温度/密度分布可视化
  • Spring Boot与Python的联动:实战案例解析
  • 【智能模型系列】Unity通过访问Ollama调用DeepSeek模型进行本地部署
  • AI产品经理面试宝典第46天:模型评估与Prompt工程核心考点解析
  • Elasticsearch整合:Repository+RestClient双模式查询优化
  • iOS加固工具有哪些?企业级团队协作视角的实战分析
  • Swing-JFrame
  • 实用的逻辑工具——文氏图和真值表,通过这两个工具,可以把复杂的逻辑关系用图形或表格的形式直观地表示出来
  • Docker 启动 PostgreSQL 主从架构:实现数据同步的高效部署指南
  • k8s:docker compose离线部署haborV2.13.1及采用外部的postgresql及redis数据库
  • Docker 应用数据备份、迁移方案
  • SQL171 零食类商品中复购率top3高的商品
  • stm32使用USB虚拟串口,因电脑缺少官方驱动而识别失败(全系列32单片机可用)
  • CSP2025模拟赛1(2025.7.23)
  • rust嵌入式开发零基础入门教程(三)
  • C++day1