解决android每次请求,后台sessionId都会变换(springboot配置web.xml)

2023-10-27

问题:后台生成验证码以后,存放到session缓存中,将验证码发送给指定手机,当安卓手机输入验证码调用注册接口时候,后台接口从session中无法取出放入的验证码。

原因:android每次请求,后台sessionId都会变换。

解决方法:

1. 配置web.xml

springboot项目默认是没有配置web.xml文件的,所以需要自己配置(idea开发工具):

2.通过图中步骤配置完成web.xml文件以后开始写代码:

如上图所示分别创建两个类:

类MySessionContext:
package com.blog.xiangqin.utils;

import javax.servlet.http.HttpSession;
import java.util.HashMap;

public class MySessionContext {
    private static HashMap mymap = new HashMap();
    public static synchronized void AddSession(HttpSession session) {
        if (session != null) {
            mymap.put(session.getId(), session);
        }
    }
    public static synchronized void DelSession(HttpSession session) {
        if (session != null) {
            mymap.remove(session.getId());
        }
    }
    public static synchronized HttpSession getSession(String session_id) {
        if (session_id == null)
            return null;
        return (HttpSession) mymap.get(session_id);
    }
}

类MySessionListener:

package com.blog.xiangqin.utils;

import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class MySessionListener implements HttpSessionListener {
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
        MySessionContext.AddSession(httpSessionEvent.getSession());
    }
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
        HttpSession session = httpSessionEvent.getSession();
        MySessionContext.DelSession(session);
    }

}

3.最后再在创建的web.xml中做监听配置(监听包名、类名指向地址根据项目而定):

web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
        <listener>
            <listener-class>com.blog.xiangqin.utils.MySessionListener</listener-class>
        </listener>
</web-app>

4. 开始使用创建好的工具存放session,并且根据sessionId来取值session中存放的验证码:

获取验证码接口存放session(randomNum是随机生成验证码):
session.setAttribute("code",randomNum);
MySessionContext.AddSession(session);

5.启动安卓调用获取验证码接口,在调用注册接口:

   在注册接口,根据安卓传过来的sessionId取出我们存放的验证码:

session = MySessionContext.getSession(user.getSessionId());
System.out.println("...请求注册接口:session.getId()="+session.getId());
String code = (String) session.getAttribute("code");

这里面用到了springboot创建web.xml,sessionId相关的知识。了解不够的,可以脑补一些。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解决android每次请求,后台sessionId都会变换(springboot配置web.xml) 的相关文章

  • 序列化对象以进行单元测试

    假设在单元测试中我需要一个对象 其中所有 50 个字段都设置了一些值 我不想手动设置所有这些字段 因为这需要时间而且很烦人 不知何故 我需要获得一个实例 其中所有字段都由一些非空值初始化 我有一个想法 如果我要调试一些代码 在某个时候我会得
  • MediaCodec 创建输入表面

    我想使用 MediaCodec 将 Surface 编码为 H 264 使用 API 18 有一种方法可以通过调用 createInputSurface 然后在该表面上绘图来对表面中的内容进行编码 我在 createInputSurface
  • Java中接口作为方法参数

    前几天去面试 被问到了这样的问题 问 反转链表 给出以下代码 public class ReverseList interface NodeList int getItem NodeList nextNode void reverse No
  • 从 android 简单上传到 S3

    我在网上搜索了从 android 上传简单文件到 s3 的方法 但找不到任何有效的方法 我认为这是因为缺乏具体步骤 1 https mobile awsblog com post Tx1V588RKX5XPQB TransferManage
  • 归并排序中的递归:两次递归调用

    private void mergesort int low int high line 1 if low lt high line 2 int middle low high 2 line 3 mergesort low middle l
  • 如何在 JFreeChart TimeSeries 图表上显示降雨指数和温度?

    目前 我的 TimeSeries 图表每 2 秒显示一个位置的温度 现在 如果我想每2秒显示一次降雨指数和温度 我该如何实现呢 这是我的代码 import testWeatherService TestWeatherTimeLapseSer
  • 制作java包

    我的 Java 类组织变得有点混乱 所以我要回顾一下我在 Java 学习中跳过的东西 类路径 我无法安静地将心爱的类编译到我为它们创建的包中 这是我的文件夹层次结构 com david Greet java greeter SayHello
  • 如何在不更改手机语言的情况下更改Android应用程序语言?

    我希望用户在应用程序内选择一种语言 选择语言后 我希望字符串使用特定语言 如果我更改手机语言 那么我的应用程序将以设置的语言运行 我无法找到任何在不更改手机语言的情况下设置语言的方法 此外 一旦设置了语言 更改就应该反映出来 有人可以建议一
  • 尝试使用 Ruby Java Bridge (RJB) gem 时出现错误“无法创建 Java VM”

    我正在尝试实现 Ruby Java Bridge RJB gem 来与 JVM 通信 以便我可以运行 Open NLP gem 我在 Windows 8 上安装并运行了 Java 所有迹象 至少我所知道的 都表明 Java 已安装并可运行
  • 如何创建像谷歌位置历史记录一样的Android时间轴视图?

    我想设计像谷歌位置历史这样的用户界面 我必须为我正在使用的应用程序复制此 UIRecyclerView 每行都是水平的LinearLayout其中包含右侧的图标 线条和视图 该线是一个FrameLayout具有圆形背景和半透明圆圈Views
  • Java中未绑定通配符泛型的用途和要点是什么?

    我不明白未绑定通配符泛型有什么用 具有上限的绑定通配符泛型 stuff for Object item stuff System out println item Since PrintStream println 可以处理所有引用类型 通
  • 通过 ADB 拔出设备:“找不到服务”

    我必须测试我的应用程序在打瞌睡模式下的行为 根据文档 https developer android com training monitoring device state doze standby html testing doze 我
  • Android - 将 ImageView 保存到具有全分辨率图像的文件

    我将图像放入 ImageView 中 并实现了多点触控来调整 ImageView 中的图像大小和移动图像 现在我需要将调整大小的图像保存到图像文件中 我已经尝试过 getDrawingCache 但该图像具有 ImageView 的大小 我
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • 使用 Espresso 检查 EditText 的字体大小、高度和宽度

    如何使用 Espresso 检查 EditText 的字体大小 高度和宽度 目前要分割我使用的文本 onView withId R id editText1 perform clearText typeText Amr 并阅读文本 onVi
  • com.jcraft.jsch.JSchException:身份验证失败

    当我从本地磁盘上传文件到远程服务器时 出现这样的异常 com jcraft jsch JSchException Auth fail at org apache tools ant taskdefs optional ssh Scp exe
  • 如何将图像从 Android 应用程序上传到网络服务器的特定文件夹中

    如何将图像从 android 移动到 Web 服务器上的指定文件夹 这是我的安卓代码 package com example bitmaptest import java io ByteArrayOutputStream import ja
  • 如何删除因 Google Fitness API 7.5.0 添加的权限

    将我的 play services fitness api 从 7 0 0 更新到 7 5 0 后 我注意到当我将新版本上传到 PlayStore 时 它 告诉我正在添加一个新权限和 2 个新功能 我没有这样做 有没有搞错 在做了一些研究来
  • java8 Collectors.toMap() 限制?

    我正在尝试使用java8Collectors toMap on a Stream of ZipEntry 这可能不是最好的想法 因为在处理过程中可能会发生异常 但我想这应该是可能的 我现在收到一个我不明白的编译错误 我猜是类型推理引擎 这是
  • Swagger/Openapi-Annotations:如何使用 $ref 生成 allOf?

    我正在生成 Rest 端点 包括添加OpenAPI Swagger对生成的代码进行注释 虽然它对于基本类型运行得很好 但我在自定义类方面遇到了一些问题 现在我有很多自定义类的重复架构条目 使用 Schema 实现 MyClass class

随机推荐

  • echart的使用

    一 echarts的通用配置 想要设置图表的在窗口的位置 必须设置图表盒子的位置 也必须设置盒子的长度和宽度来容纳echart图像 1 title属性 1 文字样式textStyle 2 标题边框 borderWidth borderCol
  • 宝塔面板SSL证书文件存放目录位置在哪里?

    宝塔面板SSL证书文件存放目录位置在哪里 宝塔面板网站安装SSL证书后 SSL证书文件存放在哪那个目录下 赵一八笔记分享宝塔面板SSL证书文件存放目录位置 宝塔SSL证书所在目录 SSL证书目录 www server panel vhost
  • 第二章——开始学习C++

    进入C 首先介绍一个显示消息的简单C 程序 不同于以往的 Hello world include
  • Matter 仓库介绍

    1 connectedhomeip spechttps github com CHIP Specifications connectedhomeip spec 此仓库为Matter规范技术文档 specifications 采用 Ascii
  • cmd如何返回上一级目录,如何进入其他文件目录

    当我们打开cmd或者composer运行命令时都会进入一个默认文件目录 那么cmd该如何返回上一级目录 和如何进入其他文件目录运行命令呢 具体方法如下图所示 1 在默认的命令后加 cd 即可返回上一级目录 2 cmd进入其他文件目录 2 1
  • 基于.net平台常用的框架整理

    分布式缓存框架 Microsoft Velocity 微软自家分布式缓存服务框架 Memcahed 一套分布式的高速缓存系统 目前被许多网站使用以提升网站的访问速度 Redis 是一个高性能的KV数据库 它的出现很大程度补偿了Memcach
  • 若依后台管理系统学习

    前端系统是指运行在浏览器或者移动设备上的用户界面层 它负责与用户交互 展示数据 调用后端服务等 前端系统的架构设计需要考虑以下几个方面 前端系统在整个系统中的位置和关系 你需要明确前端系统与后端服务 数据库 第三方接口等的架构上的关系 业务
  • requests模块----这是一个强硬的手段,有多强呢?看看你就知道了

    目录 requests的作 发送简单的get请求 发送带header的请求 发送POST请求 cookies参数的使 cookie和session区别 使 代理 设置请求超时时间 请求SSL证书 开始了 requests模块简单介绍 1 r
  • Java8基础之Serializable接口

    Serializable接口介绍 Serializable 是 java io 包中定义的 用于实现 Java 类的序列化操作而提供的一个语义级别的接口 Serializable 序列化接口没有任何方法或者字段 只是用于标识可序列化的语义
  • shift算法的实现

    ok 接上文 咱们一个一个的来编写main函数中所涉及到所有函数 这也是本文的关键部分 cpp view plain copy print 下采样原来的图像 返回缩小2倍尺寸的图像 CvMat halfSizeImage CvMat im
  • ***总结:在linux下连接redis并进行命令行操作(设置redis密码)

    root iZ254lfyd6nZ cd root iZ254lfyd6nZ ls bin boot dev etc home lib lib64 lost found media mnt opt proc root sbin selinu
  • 通信算法之184: 物理层DPD/CFR/LNA/PA

  • 机器人教育在STEM课程中的设计研究

    在美国 科学 技术 工程和数学 STEM 教育被视为确保国家成功未来的重要一步 基于现实世界中的问题开发的STEM课程 可以使课程更贴近学生和教师 对于更优质的STEM教育的迫切要求主要基于以下因素的考虑 许多职业现在需要一支能够参与STE
  • 啊哈C——学习6.4陶陶摘苹果

    2015年2月5日22 02 03 1 陶陶家的院子里有一颗苹果树 每到秋天树上就会结出10个苹果 苹果成熟的时候 陶陶就会跑去摘苹果 陶陶有个30cm高的板凳 当她不能直接用手摘到苹果是 就会踩到板凳上再试试 现在一直10个苹果到地面的高
  • 华为OD机试 -百钱买百鸡问题(C++ & Java & JS & Python)

    描述 公元五世纪 我国古代数学家张丘建在 算经 一书中提出了 百鸡问题 鸡翁一值钱五 鸡母一值钱三 鸡雏三值钱一 百钱买百鸡 问鸡翁 鸡母 鸡雏各几何 现要求你打印出所有花一百元买一百只鸡的方式 输入描述 输入任何一个整数 即可运行程序 输
  • 树莓派4b配置OpenWrt联网

    文章目录 前言 一 下载固件 二 配置wan口 三 简单介绍 1 修改无线名称 设置密码 2 下载软件包 总结 前言 树莓派4b内置wifi模块 加一个千兆网口 好像有一种办法 通过无线wifi链接其他wifi通网 然后把这个网口作为lan
  • 登录鉴权

    注册登录鉴权 1 1 用户注册 前台需要给我们传递用户名 密码 手机号 手机验证码 验证用户前台传过来的数据是否符合规范 我们使用的Hibernate Validator框架实现的服务端表单校验 短信验证码这块 我们采用的阿里的大于短信接口
  • python 处理数据小工具_Python数据处理工具使用方法整理

    从csv文件创建DataFrame类型的数据结构 gt gt gt df pd read csv xxx csv DataFrame类型的形状和长度 gt gt gt df shape 38 39 gt gt gt len df 38 各列
  • mac的Vscode 中 Remote-SSH 连接不上服务器,但是在终端中使用SSH可以连接

    Vscode 中 Remote SSH 连接不上服务器 但是在终端中使用SSH可以连接 我试了各种办法 最后准备删除配置文件看看 结果发现没有权限 怀疑是我用了conda管理环境 可能造成base环境权限变了 总之 我在vscode的终端中
  • 解决android每次请求,后台sessionId都会变换(springboot配置web.xml)

    问题 后台生成验证码以后 存放到session缓存中 将验证码发送给指定手机 当安卓手机输入验证码调用注册接口时候 后台接口从session中无法取出放入的验证码 原因 android每次请求 后台sessionId都会变换 解决方法 1