servlet setattribute用法_servlet禁用session

servlet setattribute用法_servlet禁用session这两天一直在做手机验证码的工作,ajax一下子就连通了,但是session存放发送给手机的随机验证码就无法读出来了(其实不是无法读出来,往下看),导致无法验证用户填写的手机验证码,于是我查了session的一些过期设置,还一度怀疑setMaxInteractiveInterval()的参数单位是不是毫秒。弄了下个下午之后实在受不了,我一直往session是不是第二次请求action时就过期了的方向去

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

这两天一直在做手机验证码的工作,ajax一下子就连通了,但是session存放发送给手机的随机验证码就无法读出来了(其实不是无法读出来,往下看),导致无法验证用户填写的手机验证码,于是我查了session的一些过期设置,还一度怀疑setMaxInteractiveInterval()的参数单位是不是毫秒。

弄了下个下午之后实在受不了,我一直往session是不是第二次请求action时就过期了的方向去思考,后来在别人的提醒下又研究了一下getSession(true)和getSession(false)的区别(默认缺省为true,表示试图获取存在的session,当session不存在时重新创建一个新的session返回,参数为false时则是尝试返回存在的session,当session实在不存在时返回null)。通过简单的if-else判断后发现上一次action操作session的确是仍然存活的,但程序就是在比较用户填写的验证码和session保存的系统发送的验证码时“卡了”,不往下执行了。
假设verify_code是1000,用户输入的inputCode也是1000

if(inputCode.equals(session.getAttribute("verify_code"))){
    System.out.println("1000==1000");
}
else{
    System.out.println("1000!=1000");
}

打印结果为1000!=1000,令人奔溃,跪了

尝试将对session.getAttribute(“verify_code”)的值进行强制转换,控制台没有任何打印输出,当然前台ajax也没有任何返回信息。

if(inputCode.equals((String)session.getAttribute("verify_code"))){
    System.out.println("1000==1000");
}
else{
    System.out.println("1000!=1000");
}

最后,实在受不了了,祭出大杀器,try-catch,加上后,才看到,不是程序“卡了”,原来是程序已经抛出异常了,类型转换异常,这时才想起,当初我往session存值的时候直接存的是生成四位int类型的数值,action用于接收用户填写的验证码当然是String类型,于是就出来了上面1000!=1000的结果。

所以,在存放已发送的验证码时在值后面加上“ +“””,问题就解决了。setAttribute()存的数据是什么类型,getAttribute()只能强制转换为什么类型。

最后总结一下,还是基础不扎实,还是要多做项目,多练手,写java代码时,要养成使用try-catch的习惯,遇到难题,就要用打印暴力调试,然后结合程序的逻辑进行思考。解决问题后,又是美好的一天。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183304.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Delphi2007 下安装ActiveX控件[通俗易懂]

    Delphi2007 下安装ActiveX控件[通俗易懂]此英文文章来自codegear官方网站,但是是讲在BDS2006 下如何安装,我在delphi2007下用此方法,一样通过,原文如下 Description:HowtoimportanActiveXcontrolinBDS2006?Answer/Solution:Herestheprocedureforimportingandinstalling

    2022年5月14日
    36
  • 4月20日

    4月20日

    2021年9月27日
    50
  • hadoop生态圈的理解「建议收藏」

    hadoop生态圈的理解「建议收藏」 hadoop部分:hadoop生态圈的理解(HDFS,MapReduce,HBASE,zookeeper,hive,sqoop,flume,kafka,yarn,spark) 一、简介       &am

    2022年5月22日
    25
  • 无法完成要求,暂存盘已满_无法使用因为暂存盘已满

    无法完成要求,暂存盘已满_无法使用因为暂存盘已满无法完成请求,因为暂存盘已满。那么就要找到并打开暂存盘。解决方案:1、打开ps软件,点击首选项,点击暂存盘2、暂存盘修改,换成其他的任意一个盘符即可。点击确定完成。…

    2025年8月23日
    2
  • python aic准则_在Python中手工计算Akaike信息标准(AIC)

    python aic准则_在Python中手工计算Akaike信息标准(AIC)据我所知,Python中没有AIC包。因此,我试图手动计算它,以找到数据集中的最佳集群数(我使用K-均值进行集群)我遵循Wiki上的公式:AIC=2k-2ln(最大可能性)以下是我当前的代码:range_n_clusters=range(2,10)forn_clustersinrange_n_clusters:model=cluster.KMeans(n_clusters=n_cl…

    2022年5月23日
    42
  • Linux基础(较全)

    Linux基础(较全)Linux0 目录文章目录 Linux0 目录 1 Linux 简介 1 1Linux 是什么 1 2Linux 发行版 1 3LInux 应用领域 1 4LinuxvsWind 2 Linux 安装 2 1 系统分区 2 2 注意事项 3 常用目录结构 4 常用命令 5 VI 编辑器 5 1 编辑模式 5 1 1 模式切换 5 1 2 移动光标 5 1 3 编辑 5 1 4 退出 5 2 输入模式 5 3 末行模式 6 软件安装 6 1 二进制包安装 6 1 1RPM 包安装 6 1 2yum 安装 6 2 源码包安装 7 用户管理 7 1

    2025年7月17日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号