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


相关推荐

  • python中dtype什么意思_NumPy Python中的数据类型对象(dtype)

    python中dtype什么意思_NumPy Python中的数据类型对象(dtype)每个ndarray都有一个关联的数据类型(dtype)对象。此数据类型对象(dtype)告知我们有关数组布局的信息。这意味着它为我们提供了有关以下信息:数据类型(整数,浮点数,Python对象等)数据大小(字节数)数据的字节顺序(小端或大端)ndarray的值存储在缓冲区中,可以将其视为内存字节的连续块。因此,如何解释这些字节由dtype对象给出。1,构造数据类型(dtype)对象:数据类型对象…

    2022年6月5日
    101
  • Java学习路线图(完整详细2021版)

    Java学习路线图(完整详细2021版)作为一个男人我感觉必须得做点什么来证明一下自己,现在我又回来了,准备把自己的节操准备补一下 另外给各位未来的Java程序员说一句,别的我不清楚,学习编程请从一而终 咱们学习编程就挺难的,有这些先驱者来带领咱们学习,咱们应该感激,而且最重要的事跟着你选定的一家一直学下去 因为每家学校的学习大纲都是不一样的,但是程序员其实都是一样的,这句话你细品!仔细的品! 我不希望你忙忙碌碌的整理那么多东西,挑肥拣瘦的,最后自己学的东西还是缺失的,要不就…

    2022年5月17日
    85
  • bt种子php啥格式的,bt种子是什么意思(bt种子的格式及文件结构)

    bt种子php啥格式的,bt种子是什么意思(bt种子的格式及文件结构)-文字稿-如果你想要下载一集不存在的回形针视频,你会怎么做?最简单的方法当然是找一个有资源的哥们——每羊,让他把这期视频发给你。早期互联网,大家就是这么共享文件的,但是这样也有很多问题。比如下载的人一多,每个人分配到的带宽就变小了,下载速度会变慢。更危险的是,这期视频是敏感资源,你的哥们本来就不应该分享给你,如果每羊被抓了,大家也都别下载了。针对这些问题,美国工程师BramCohen在20…

    2025年5月26日
    1
  • Windows下搭建FTP服务器的一些总结

    Windows下搭建FTP服务器的一些总结Windows下搭建FTP服务器前言:如果你的电脑上的控制面板–程序–打开或关闭windows功能–windows功能里面没有互联网信息服务(IIS),那就别在网上浪费时间了,我找着了一天的资料打了各种补丁没成功,没有相关的IIS或者连c:\windows\system32\inetsrv这个路径都没有,原因是因为你的电脑系统可能是家庭版win7,或者是ghost安装系统的时候精简…

    2022年7月21日
    17
  • pycharm运用_python界面开发

    pycharm运用_python界面开发PyCharm是由JetBrains团队研发的用于开发python应用程序的IDE,与IDEA一脉相承首先打开PyCharm的下载地址 https://www.jetbrains.com/pycharm/download/  点击download下载专业版:这时会跳到一个感谢界面,不必理睬,耐心等待下载完成就可以了:下载完的安装程序是这样的:双击安装,点击

    2022年8月28日
    2
  • erlang 初体验

    erlang 初体验

    2022年1月26日
    53

发表回复

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

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