问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

使用struts2获取session出现异常

发布网友 发布时间:2022-11-01 10:52

我来回答

3个回答

热心网友 时间:2023-10-19 10:31

楼上答案很对,补充一下:

如果你使用了 Struts2 框架,初学者很容易弄混,Struts2包装后的 session 和 JSP/Servlet 原生的 session。

教科书里都写到:JSP内置的9个对象中有个 session 对象,该对象就是 JSP/Servlet 的内置类 HttpSession,因为它是个内置对象,所以用法是

HttpServletRequest request = ServletActionContext.getRequest();

HttpSession session = request.getSession();

session.getAttribute(xxx, "xxx"); 有点类似 Map 但是使用的 是该对象的特殊方法 setAttribute() 

Strut2框架中的核心对象 ActionContext 是所有Action的上下文,为了方便 Struts库把常用的JSP对象也都包装成了ActionContext的属性(可以简单这么理解)。ActionContext有个属性就是 session,然后暴露出来的方法就是 getSession(),这个session属性的类型是个Map,所以它使用时一般就是

Map session = ActionContext.getContext().getSession();返回一个 Map类型变量。

session.get(xxx,"xxx"); 就是Map的put, get 方法。


可以看到 二者 区别很大。第一个是 HttpSession 对象实例,第二个只是个  Map 变量而已。

Struts2 这些框架都是可有可无的。没有Struts2框架,JSP/Servlet里面也是有 session对象的,毕竟session是JSP/Servlet内置的 9 个对象中的一个嘛。

反正自己要看清楚,自己使用的哪个 session, 是内置的 HttpSession,还是Struts2提供的ActionContext对象的session属性。

热心网友 时间:2023-10-19 10:31

ActionContext.getContext().getSession();
返回值是map类型,Map<String,Object>
你要取session的真实类型可以:
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
如果要取map类型(手动初始化):
Map session = ActionContext.getContext().getSession();
session.put("sessionName","sessionValue");

热心网友 时间:2023-10-19 10:32

有一点你要清楚,struts2中的session是以Map类型来封装的,
而获取session的时候你是这样写的:
HttpSession session = (HttpSession)ctx.getSession();
这样写是不正确的,应该这样写:
HttpServletRequest request = (HttpServletRequest)ctx.getRequest();
HttpSession session = request.getSession();追问getRequest() ?你自创的

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
说课包括哪些方面 说课内容包括()。 如何在手机百度上删除对话记录? 结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? context.request取值转换问题,怎么办 await ******Dao.create({ ...ctx.request.body, }); 这个怎么获取到新增的返回的自增id值。有人知道吗? 努力创造价值作文 UML学籍管理系统报告总结 两指指虎会伤手吗? 我是小书迷六年级作文 我真是个小书迷作文 谁给介绍点国内外恐怖电视剧 柴犬与秋田犬的区别 柴犬秋田犬有什么区别 秋田犬与柴犬的区别 这些区别你知道吗 柴犬和秋田犬的区别是什么 如何准确的区分柴犬和秋田犬 想找像“我的女友是九尾狐”类似的电视剧! 2008年韩剧推荐几部 贾乃亮妈妈爸爸是干嘛的 《手帕》阅读题答案 贾乃亮爸爸妈妈是谁 手帕阅读答案 文章一开头写母亲的习惯,有什么用意 诘责造句-用诘责造句 【morning call】什么意思 林字的笔顺 而的多音字是什么 而的多音字是什么? 而是多音字吗 有而e的音 然而多音字 家庭的温馨优秀作文 省级信息素养大赛难度有多高 高职高专信息素养大赛多少分 南京信息素养大赛是干什么 山东滨农科技有限公司电话是多少? 中科飞特(山东)科技有限公司电话是多少? 开讲啦 王陇德 人为什么会衰老 新西兰留学宿舍申请要求根据具体学校而定,新西兰留学宿舍申请怎么样呢? 山东多瑞电子科技有限公司电话是多少? 山东新博科技有限公司电话是多少? 山东思极科技有限公司电话是多少? 山东旺泰科技有限公司电话是多少? 你好,我是2011届211 毕业的,现在面试 外贸业务助理,能否告知一些流程和注意事项,以及面试难度相关问题 申请新西兰大学留学,可以选择住在学生宿舍,那么留学生宿舍怎么样? 真实恐怖灵异事件,在我爷爷,爸爸那背流传着一个鬼故事,我百思不得其解,一开始更多得是怀疑,经过大量 计生条列