JavaWeb笔记12

发布于:2025-07-24 ⋅ 阅读:(18) ⋅ 点赞:(0)

登录的问题:

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

要使旧的失效:

令牌主动失效机制
登录成功后,给浏览器响应令牌的同时,把该令牌存储到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中指定激活的分组


网站公告

今日签到

点亮在社区的每一天
去签到