ssm获取session中验证码值为null问题
环境:前后端分离,部署在同一台服务器上
问题:前端登录页面实现验证码功能,使用的是catpcha框架,在web.xml中配置,但是在验证码验证中获取不到captcha在session的值,显示为null。
过程:
1、导入maven坐标
<dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version><exclusions><exclusion><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId></exclusion></exclusions> </dependency>
2、web.xml 配置Servlet
<servlet><servlet-name>cap</servlet-name><servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class><init-param><param-name>kaptcha.border</param-name><param-value>no</param-value></init-param><init-param><param-name>kaptcha.textproducer.char.length</param-name><param-value>4</param-value></init-param><init-param><param-name>kaptcha.textproducer.char.string</param-name><param-value>abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789</param-value></init-param><init-param><param-name>kaptcha.background.clear.to</param-name><param-value>211,229,237</param-value></init-param><init-param><!-- session.setAttribute("captcha","验证码") --><param-name>kaptcha.session.key</param-name><param-value>captcha</param-value></init-param> </servlet> <servlet-mapping><servlet-name>cap</servlet-name><!-- 请求如下地址,就能获取一个验证码图片 --><url-pattern>/captcha</url-pattern> </servlet-mapping>
3、vue登录页面
4、后端代码
String kaptchaExpected = (String)request.getSession().getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY); System.out.println("session中获取的验证码:"+kaptchaExpected); String kaptchaReceived = request.getParameter("code"); System.out.println("前端提交的验证码:"+kaptchaReceived);
4、登录请求
5、打印输出
解决办法:
最后发现是获取session的键值对写错了,把
com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY改为setAttribute对应的key,我的是web.xml中帮我创建放到session中了,键值对为captcha。
如果没在web.xml中配置,则要自己手动创建,参考这篇文章:http://t.csdn.cn/iCgqu
成功获取
总结:
1、前后端都没有配置// axios.defaults.withCredentials=true//
allow-credentials="true"
允许跨域时携带cookie,但是仍然可以访问到session中的值,说明是不是使用的同一个session,这个我还没有验证,有大佬可以验证一下。
2、验证码得刷新session中才能获取,如果保持旧的验证码获取session为空。
3、如果没有配置setAttribute放到session中,则getAttribute后面就填我上面过程第4步的代码,自己没有设置键值对,就用谷歌默认的键值对,也能获取到session中的值。
4、写得不好大佬多多指出,我不懂的还有好多好多。
参考文章: 基于ssm实现验证码功能 - 默小希 - 博客园 (cnblogs.com)
ssm获取session中验证码值为null问题相关推荐
- html中加session,Html中如何获取session中的值(如登录后显示XX欢迎您!)
话不多说,直接切入正题. 相信大家经常在各大网站上,登录过自己的帐号吧,那么就一定应该见过在点击登录之后,会发现在top的顶部状态栏中或是页面中央显示着 "xx欢迎您!"之类的语句 ...
- JSTL获取session中的值
2019独角兽企业重金招聘Python工程师标准>>> 场景:购物车 以下为购物车部分代码: shopCart = new HashMap<String, Goods>( ...
- js获取php页面session的值,在html页面中取得session中的值的方法
1.首先呢session的key-value都是存在server的,浏览器HTML页面是没有办法直接取得session中的值,只有在html里能通过js拿到jesessionid之类的东西. 1.1. ...
- QTP的那些事--通过WMI获取session中的用户信息的验证码
代码如下:获取相应的session中的值 strComputer = "." Set objWMI = GetObject("winmgmts:" _ & ...
- vue获取div中的值_vue获取内存中的值并写入
发表评论 发表评论 第{{i+1}}楼 匿名用户 发表时间:{{item.id|dateFormat}} {{item.content}} 加载更多 export default{ data(){ ...
- pandas获取dataframe中索引值最大值所在的数据行(get dataframe row of max index value)
pandas获取dataframe中索引值最大值所在的数据行(get dataframe row of max index value) 目录 pandas获取dataframe中索引值最大值所在的数 ...
- 获取数组中元素值为偶数的累加和与元素值为奇数的累加和,并计算他们之间的差值
/*** 1.获取数组中元素值为偶数的累加和与元素值为奇数的累加和,并计算他们之间的差值* 1.定义int getNum(int[] arr)静态方法,该方法要求完成* 1.1 获取指定数组arr中元 ...
- php获取数组中的全部可以吗,php获取数组中所有值的方法
php的数组操作函数array_values 可以提取一个数组中所有元素值,具体的使用方法,可以参考下面的教程. array_values() 函数的作用是返回数组中所有元素的值,使用起来非常简单,只 ...
- Jquery获取列表中的值和input单选、多选框控制选中与取消
一.Jquery获取列表中的值 1.jsp页面代码 <tbody><c:forEach var="model" items="${listRefEnti ...
最新文章
- nrf52840 gpiote如何配置中断输入_51单片机外部中断点亮LED
- POJ 3233 Matrix Power Series 矩阵快速幂 + 二分
- Java 性能优化实战记录(2)---句柄泄漏和监控
- ci mysql 转义,CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
- from server sql 拼接统计两个子查询_[SQL SERVER系列]之嵌套子查询和相关子查询
- java tostring的用处_JAVA的tostring()方法的作用是什么呢?
- Javascript学习历程之事件
- 深度学习-从感知器到LSTM(目的是处理序列问题)
- m7405d粉盒清零方法_联想打印机 多功能一体机全系列硒鼓清零方法
- 我是主考官__博文(作者著有《Java程序员,上班那点事儿》)
- react获取当前路由
- 在Ubuntu 20.04上面搭建嵌入式开发环境
- 图解网络:组建一个网络需要哪些网络设备和安全设备
- 【XSY3490】线段树(广义线段树,树上莫队)
- 数据分析 --- 收集数据的技巧
- http协议中get和post的区别(转)
- Geoffrey Hinton获得时间检验奖;AI预测世界杯荷兰夺冠;Galactica不靠谱,ChatGPT又如何……...
- Win98 源代码(特别版)
- 黑客入门很难吗?这一篇保证你学的明明白白
- Maven Download Sources 失败
热门文章
- MetroIn双经纬仪测量系统操作指南
- awd的批量脚本 pwn_[原创]第一届护网杯线下决赛awd之shell多解
- 2020年Notes补丁最新方法(SAP数字签名Notes解决方案说明)
- Spring-Boot 整合MongoDB
- 物联网 探秘零售业的“芯”机遇
- 美国国家标准与技术研究院定义云计算机的,Mell, P. and Grance, T., 美国国家标准与技术研究所(NIST) (2011) NIST关于云计算的定义....
- 海关计算机审计的回顾和展望
- Android定位百度地图
- 七周七语言之IO学习笔记
- 菜鸟的初行动——学校某代码评测服务器攻略战