servlet setattribute用法_servlet禁用session

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


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)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 发送国外邮箱失败

    发送国外邮箱失败在公司当发送邮件给国外客户的时候,发送失败提示:点击下面链接:则代表地址被加入了黑名单,发送不到邮件。解决方法,点击方框内的网站,打开网页后拉到最下面:点击解除封禁跳转到则表示成功。需要1-2个小时进行解除! 转载于:https://blog.51cto.com/8763846/1629650…

    2022年7月12日
  • Kali-linux :arping命令

    Kali-linux :arping命令ARP协议是“AddressResolutionProtocol”(地址解析协议)的缩写。在同一以太网中,通过地址解析协议,源主机可以通过目的主机的IP地址获得目的主机的MAC地址。arping程序就是完成上述过程的程序。arping,用来向局域网内的其它主机发送ARP请求的指令,它可以用来测试局域网内的某个IP是否已被使用。root@pgg:/home/pgg#arping–helpARPing2.21,byThomasHabetsthomas@habets.seusage:

    2022年5月7日
  • Pytest(13)命令行参数–tb的使用「建议收藏」

    Pytest(13)命令行参数–tb的使用「建议收藏」前言pytest使用命令行执行用例的时候,有些用例执行失败的时候,屏幕上会出现一大堆的报错内容,不方便快速查看是哪些用例失败。–tb=style参数可以设置报错的时候回溯打印内容,可以设置参

    2022年7月28日
  • 五笔字根口诀_五笔拆字口诀和方法详解

    五笔字根口诀_五笔拆字口诀和方法详解一、五笔字根表二、五笔字根口诀12G王旁青头戋(兼)五一(“兼”与“戋”同音)H目具上止卜虎皮(“具上”指具字的上部)F土士二干十寸雨(可别忘了革字底)J日早两竖与虫依D大犬三羊古石厂(羊底龙头套上套下)K口与川,字根稀S木丁西L田甲方框四车力(“方框”即“口”)A工戈草头右框七(“右框”即“匚”)M山由贝,…

    2022年8月10日
  • oracle ORA-00918 未明确定义列「建议收藏」

    oracle ORA-00918 未明确定义列「建议收藏」 出现这种错误,一般是列名重复导致的,如下: createtabletestchar(v_datevarchar2(20),d_datedate)insertintotestcharselect’2018-07-20′,date’2018-07-20’fromdual;#这时候有两个字段都是vv,那么查询时,就会区分不出来这两列,oracl…

    2022年10月4日
  • python 删除文件中的空行

    python 删除文件中的空行#!/usr/bin/python3#-*-coding:UTF-8-*-defDel_line(file_path):withopen(file_path,”r”)asf:res=f.readlines()#res为列表res=[xforxinresifx.split()]#将空行从res中去掉…

    2022年5月30日

发表回复

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

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