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()

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • stat 函数_stat函数返回值

    stat 函数_stat函数返回值stat函数讲解(转) 表头文件:   #include         #include定义函数:    intstat(constchar*file_name,structstat*buf);函数说明:    通过文件名filename获取文件信息,并保存在buf所指的结构体stat中返回值:    执行

  • 固态硬盘数据恢复教您如何操作「建议收藏」

    固态硬盘数据恢复教您如何操作「建议收藏」固态硬盘,也就是简称的SSD盘,由于它具有传统机械硬盘不具备的快速读写、质量轻、能耗低以及体积小等特点,因此很多的电脑都使用了固态硬盘,但是,总有那么些意外发生,导致硬盘损坏,那么硬盘坏了可以更换,但是里面存储的重要的数据该怎么办呢?甲驭小编教您如何对固态硬盘数据恢复  一般造成固态硬盘损坏的主要逻辑坏道以及硬盘坏道,这里小编主要以一个客户的案例跟大家讲解固态硬盘出现硬件故障时该如何处

  • Java基础篇:String、StringBuffer、StringBuilder

    Java基础篇:String、StringBuffer、StringBuilder

  • 视频编解码基本流程

    视频编解码基本流程视频编解码基本框架

  • tikv源码分析_crt脚本命令大全

    tikv源码分析_crt脚本命令大全版权声明:本文由神州数码云基地团队整理撰写,若转载请注明出处。以TiKvConfigstruct为起始点,从TiKvConfig内部的字段开始,分析每个模块的作用和配置检查逻辑所做的事情。TiKV是一个分布式事务型的键值数据库,是TiDB的存储层,提供了满足ACID约束的分布式事务接口,并且通过Raft协议保证了多副本数据一致性以及高可用。关于TiDB、TiKV的详细介绍可以从官网查阅,这里就不多赘述了。知乎上已经有一篇高屋建瓴的文章,由TiKV亲爹Ed写的TiKV代码初探,可以从整

  • idea 2021.5 激活码【注册码】「建议收藏」

    idea 2021.5 激活码【注册码】,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

发表回复

您的电子邮箱地址不会被公开。

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