getattr getattribute_getparameter返回值

getattr getattribute_getparameter返回值问题描述今天开发验证码验证功能,需要将手机号和对应的验证码设置到session中以便后面的验证,具体代码如下:1.发送验证码并把验证码保存到session中protectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresponse)throwsServletException,IOException{ try{mresponse=response;St

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

Jetbrains全家桶1年46,售后保障稳定

问题描述

今天开发验证码验证功能,需要将手机号和对应的验证码设置到session中以便后面的验证,具体代码如下:

1.发送验证码并把验证码保存到session中

protected void doPost(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
		try {
            mresponse = response;
            String mobile = req.getParameter("phoneNum");
            JSONObject json = null;
            //生成6位验证码
            String verifyCode = String.valueOf(new Random().nextInt(899999) + 100000);
            //发送短信
            sendPhoneNumCode(mobile,verifyCode);
            json = new JSONObject();
            json.put("mobile", mobile);
            json.put("verifyCode", verifyCode);
            json.put("createTime", System.currentTimeMillis());
            // 将认证码存入SESSION
            HttpSession session = req.getSession();
            session.setAttribute("verifyCode", json);
            return ;
        } catch (Exception e) {
            e.printStackTrace();
        }
	}

Jetbrains全家桶1年46,售后保障稳定

2.从session中取出验证码和前端发送过来的验证码进行比对

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String mobile = request.getParameter("phoneNum");
        String verifyCode = request.getParameter("verifyCode");

        HttpSession session = request.getSession();
        JSONObject json = (JSONObject) session.getAttribute("verifyCode");

        System.out.println("request_phoneNum:"+mobile);
        System.out.println("request_verifyCode:"+verifyCode);
        String json_phoneNum = (String) json.get("mobile");
        String json_verifyCode = (String) json.get("verifyCode");
        System.out.println("json_phoneNum:"+json_phoneNum);
        System.out.println("json_verifyCode:"+json_verifyCode);
}

结果上面的代码 session.getAttribute(“verifyCode”);报空指针异常,说取不到verifyCode这个字段的值。

原因是设置verifyCode字段时的session和取verifyCode字段时的session不是一个,所以在取的时候就找不到verifyCode这个字段了。

解决办法是用设置时session去取verifyCode。

那怎么搞呢?

在获取验证码时讲session保存起来,然后验证时将这个session再传递过去就ok了。

我在android上实现的具体代码是:

1.获取session并保存

Headers headers = response.headers();
List<String> cookies = headers.values("Set-Cookie");
String s = cookies.get(0);
System.out.println("-----session:"+s);
//将这个session保存起来
AppConfig.session = s;

2.用addHeader()方法将session传递给后端

    OkHttpUtils.post()
                .url(HttpUrlConfig.URL + HttpUrlConfig.LoginAndRegister)
                .addHeader("cookie",AppConfig.session)
                .addParams("phoneNum", phoneNum)
                .addParams("verifyCode", code)
                .build()

到此问题就解决了。有问题欢迎评论

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

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

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


相关推荐

  • Scrivener for Mac如何自定义快捷键

    Scrivener for Mac如何自定义快捷键Scrivenerformac是目前苹果osx平台上最优秀的写作软件,拥有简单而又独特的操作界面,提供了标注、概述、收藏保存、全屏幕编辑、快照等各种写作辅助功能,可以对文章进行大致的勾勒或者重组,并且支持用户使用关键词跟踪主题,动态联合多种场景到单个文本,从而辅助作者完成从作品构思、搜集资料、组织结构、增删修改到排版输出的整个写作流程,能够适用于博主、作家、专栏作者使用。在ScrivenerforMac中分配或更改键盘快捷键可能存在某些菜单项,您发现自己使用了很多没有键盘快捷键的菜单项,或者您

    2022年5月25日
    34
  • 开源在线客服系统源码h5|thinkphp在线客服完整源码|网页在线客服源码

    开源在线客服系统源码h5|thinkphp在线客服完整源码|网页在线客服源码前言:法国阿纳托尔曾经说过:企业客服人员早上醒来后通常做的第一件事就是检查手机,看看是否有顾客发来的重要信息,这种行为已经成为我们日常生活方式的一部分。不管原因是什么,我们都有一套日常使用的通信工具电子邮件、电话、网络会议工具或社交网络。对于一个高效运行的企业而言,拥有一套好的源码搭建的在线客服系统,对于提供企业运行效率至关重要!随着流感大流行使在家工作成为一种新的常态,我们面临着前所未有的沟通方式的变化,这使得这些工具不仅是必不可少的,而且现在是必需的。正文:搭建在线客服系统软件的必要性:基于t

    2022年7月19日
    13
  • mysql查询前十条记录_查询前十条数据

    mysql查询前十条记录_查询前十条数据select*fromno_primary_keyorderbyidlimit10;#显示从id=1到id=10的前10条记录;   select*fromno_primary_keylimit10;#随意显示其中10条记录;   注意:不能用sel来代替select;但是可以用desc来代替describe;

    2022年9月8日
    2
  • SQL FOREIGN KEY

    SQL FOREIGN KEY 一个表中的FOREIGHKEY指向另一个表中的PRIMARYKEY。 通过实例来解释外键。请看下面两个表:注意:  ·"Orders"表中的"P_Id"列指向"Persons"表中的"P_Id"列。  ·"Persons"表中的"P_Id"列是"Persons"表中的PRIMARYKEY。  ·"Orders&quo

    2022年6月15日
    25
  • C语言中的sizeof()和strlen()的区别[通俗易懂]

    C语言中的sizeof()和strlen()的区别sizeof()和strlen()经常会被初学者混淆,但其中有有很大区别:1.sizeof()【操作数所占空间的字节数大小】是一种c中的基本运算符。可以以类型、指针、数组和函数等作为参数。头文件类型为unsignedint。运算值在编译的时候就出结果,所以可以用来定义数组维数。chara[5]=”123″;intb=sizeof(a);//b=5intc=strlen(a);//c=3sizeof()是一种单目操作符,是用来计算你

    2022年4月8日
    34

发表回复

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

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