保持Java对象存活会话
问题描述:
在我的JSP应用程序的时间,我想跟踪的是在登录的用户的。保持Java对象存活会话
当用户试图登录,我用的数据库事务的UserManager
类来验证条目是否存在(我不打算构建一个非常安全的网站,大部分是为了学习)。
UserManager
类从检索到的用户信息(即他们的名字,年龄,照片等)中构造实例对象。
我使用此对象在登录成功后有效地调用在用户主页上准备演示文稿。
问题是,我不知道如何在整个会话期间保持这个User
对象与用户一起保持活动状态。举例来说,如果他去到其他页面,我还是希望能够调用
user.getPhoto()
或
user.getLastName()
没有复杂的数据库中的每个查询时间。
有没有办法做到这一点?
答
将对象存储在会话中。里面你的servlet,只需拨打这个:
User user = ... //use your UserManager or something else to get the user
if (<valid user>) {
//store the user object in session
request.getSession().setAttribute("user", user);
}
//forward to the next view...
然后你就可以在您的视图中检索数据(JSP,Facelets的),使用表达式语言:
<!DOCTYPE html>
<html lang="en">
<!-- tags... -->
<div>
Welcome ${user.name}
<!-- ${user.name} will call session.getAttribute("user").getName() for you -->
</div>
</html>
更多信息:
没有提供使用scriptlets的示例,因为您不应该使用它们。上面的链接说明。
执行日志外出时不要忘记清除会话:
request.getSession().invalidate();
+0
+1非常感谢您的全面解释 – CodyBugstein 2014-09-04 16:47:01
你使用任何框架或仅小服务程序? – Dici 2014-09-04 16:28:11
没有框架。 Just Servlets – CodyBugstein 2014-09-04 16:45:29