首先我们先通过前端jsp传值给后台servlet
代码:

 <a href = "servlet/S1?number=1">数据转换</a>

我们向servlet中传一个int类型的名为number值为1的数据

然后我们从servlet中获取
代码:

String number= request.getParameter("number");

注意!
这个是时候我接收的到的是字符串类型的数据,而不是int类型

如果这个时候直接存储到Session中
代码:

session.setAttribute("number", number);

当我们再从Session中拿去该数据,并把其在转换为int类型是会出现问题
代码:

int number = (Integer)session.getAttribute("number");

问题:

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer

这个时候告诉我们java.lang.ClassCastException: java.lang.String无法强制转换为java.lang.Integer

那么该问题如何解决

有两种解决方法:
第一种:原路返回
注意的是当我们从前端获取数据的时候已经把int类型变成了String类型,然后我们如果直接存储到Session中,再从Session中拿出来时已经变成Object类型,如果这个时候直接强转Integer类型是会出现上述异常的
让我们来简单看一下number都经历了什么样的格式转变:

int   —— > String  —— > Object

上述过程是从最一开始的前端到我们从Session中获取的过程

而我们如果想获取到的数据还是int类型我们就需要原路返回

注意:原路返回

也就是重新将Object转成String类型才能再转换成int

Object   —— > String  —— > int

解决方法:
就是在我们获取到Session数据后先转成String类型再转int
代码:

     String numberString = session.getAttribute("number").toString();int number = Integer.parseInt(numberString);

这样就可以使用了

第二种:提前转换

通过数据转换经历的过程:

 int   —— > String  —— > Object

实际上还是要用到原路返回的原理
当我们转换成Sting类型的时候也就是我们刚从前端获取数据的后,
可以直接将String类型转变成int类型
代码:

     String numberString = request.getParameter("number");int number = Integer.parseInt(numberString);

然后我们在获取Session中数据后可以直接转换成int类型
代码:

     int number = (Integer)session.getAttribute("number");

这个过程数据经历过程是这样的:

int   —— > String —— > int —— > Object   —— > int

我们可以看到实际上当我们从Object类型转换时其实也是原路返回,但是原路返回的时候正好经过int 类型所以可以直接转换

总结:
从Session中获取的数据转换时需要保证数据的严谨性,无法直接跳转任意的数据格式,需要原路返回保证数据的严谨性

Servlet中关于Session数据存储遇到的数据转换问题相关推荐

  1. servlet中的session不一定会被创建

    参考:http://c5ms.iteye.com/blog/1260593 servlet中的session不一定会被创建 以前在树上看session的生命周期,都知道session的生命周期是在客户 ...

  2. Unity(游戏)中五种数据存储的方法

    Unity(游戏)中五种数据存储的方法 一.PlayerPrefs unity3d提供了一个用于本地持久化保存与读取的类-------PlayerPrefs.工作原理很简单,以键值对的形式将数据保存在 ...

  3. Android的5中主要的数据存储方式

    Android有5中主要的数据存储方式: 1.Android本身的数据库(SQLite数据库):SQlite是一个轻量级的.跨平台的数据库.占用内存小,支持基本的SQL语法,通常用于存储用户信息. 2 ...

  4. memcached实现集群中的session共享存储优缺点

     优点说明: 1. memcached是内存缓存,在读写速度上会比普通files时快很多 2. 可以解决多个服务器公用session的难题 缺点说明: 1. session数据都保存在memory中, ...

  5. matlab 中 Transform,变换数据存储 - MATLAB transform - MathWorks 中国

    为图像集合创建一个数据存储,并对数据存储中的所有图像应用相同的变换.例如,将集合中的所有图像调整到指定的目标大小. 创建一个包含两个图像的 ImageDatastore. imds = imageDa ...

  6. Servlet中的Session

    默认的情况下一个浏览器独占一个Session对象.在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器 独占的session中,当用户使用浏览器访问其他程序是,其他程序可以从用户的Sessio ...

  7. JQuery中元素的数据存储

    html5 dataset是新的HTML5标准,允许你在普通的元素标签里嵌入类似data-*的属性,来实现一些简单数据的存取.它的数量不受限制,并且也能由JavaScript动态修改,也支持CSS选择 ...

  8. php获取jsp的session的值,在JSP或Servlet中获取session数量

    enums=ul.getUserList(); int i=0; while(enums.hasMoreElements()) { out.println(enums.nextElement()); ...

  9. Servlet中的Session使用方法

    步骤 获取session对象 通过setAttribute写入session 获取session的值 session销毁(手动销毁和自动销毁) 设置session package com.demo;i ...

最新文章

  1. 设计模式(行为型模式)——备忘录模式(Memento)
  2. 只改一个值!马上加快宽带上网速度
  3. 如何利用CNKI句子检索功能提高研究效率
  4. ExtAspNet学习-利用AppBox框架快速创建项目(五)—完成项目含源代码
  5. 深度解读「无影云电脑远程办公解决方案」
  6. mysql vb_vb连接mysql
  7. ionic 安卓apk签名_安卓 APP 三代加壳方案的研究报告
  8. Leetcode刷题指南和top100题目
  9. 在VBA中使用正则表达式
  10. OD调试4----去除NAG窗口的几种方法
  11. android 点餐系统 构思
  12. kindle升级失败变砖(卡大树)维修步骤
  13. 记录|斐讯K2拆机使用ttl刷入breed并刷入新固件
  14. axure能做剪切蒙版吗_***自动售货机能做吗
  15. 计算机教师所需技能,信息技术教师应具备哪些教学技能
  16. raft2020年更新_Raft6月1日更新了什么 Raft6月1日更新内容介绍
  17. android 解压rar5,rar解压软件安卓中文
  18. VUE微信H5生成二维码海报保存在本地相册
  19. C# WPF 页面切换(Page)
  20. MHT: Basic Methods for Data Association(三)Gating

热门文章

  1. POJ_1647_One-move checkmate
  2. [福柯]用身体与权力浅析《性史》
  3. 泛微在环保行业特色应用:项目、采购、工程、财务数字化管理
  4. 墨尘目标检测4--yoyo3模型解析及训练自己的数据集
  5. いろいろな%前端开发面试题% 读后感
  6. GB/T35590-2017移动电源CMA检测报告,移动电源新国标检测
  7. PYthon 素数,质数的密码
  8. android 寺库trytry_美图与寺库达成战略合作 美图美妆将由 TryTry 运营
  9. Java 使用jsoup下载网页内容到本地
  10. 服务器系统centos ubuntu,CentOS vs Ubuntu:为您的服务器选择最佳操作系统