在我的JSP应用程序中,我想跟踪已登录的用户。
当用户尝试登录时,我使用UserManager
类中的数据库事务来验证该条目是否存在(我的目标不是创建一个非常安全的站点,其中大部分用于学习)。
UserManager
类从检索到的用户信息(即他们的姓名,年龄,照片等)中构造User
实例对象。
在登录成功后,我使用此对象有效地调用在用户主页上准备演示文稿。
麻烦的是,我不知道如何在整个会话期间保持这个User
对象的存活。例如,如果他去其他页面,我仍然希望能够打电话
user.getPhoto()
或
user.getLastName()
每次都没有复杂的数据库查询。
有没有办法做到这一点?
答案 0 :(得分:4)
将对象存储在会话中。在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>
更多信息:
没有提供使用scriptlet的示例,因为您不应该使用它们。上面的链接说明。
执行注销时不要忘记清除会话:
request.getSession().invalidate();