在httpSession中存储扩展对象

时间:2016-03-04 08:32:45

标签: java session tomcat servlets

在下面的代码中,学习是一个学习实例,我想保存为http会话

learning = new Learning(learningContext);
HttpSession webSession = request.getSession();
webSession.setAttribute("learning", learning);
Learning learnTest = webSession.getAttribute("learning");

当我运行下面的代码时,我得到:

Incompatible types
Learning learnTest = webSession.getAttribute("learning")      
required: Learning
found:    Object

我可以将非通用对象保存到会话中吗?还有另一种方法可以达到这个目的吗?

2 个答案:

答案 0 :(得分:3)

你需要像这样投射对象 -

Learning learnTest = (Learning) webSession.getAttribute("learning")

您需要转换为特定类型,因为getAttribute的返回类型是Object。

答案 1 :(得分:1)

HttpSession.getAttribute的javadoc说:

  

java.lang.Object getAttribute(java.lang.String name)             返回在此会话中使用指定名称绑定的对象,如果名称下没有绑定任何对象,则返回null。

我的意思是 by construction 它总是会返回一个纯粹的对象。如你所知(或希望)你已经放置了Learning,你只需做一个明确的演员:

Learning learnTest = (Learning) webSession.getAttribute("learning");