del*_*boy 11 java session caching playframework
我有一个学校项目,我必须使用Java.最近我找到了play框架,我想尝试使用它.这很容易快速启动,但我遇到了会话问题.
就其本质而言是无状态的,play会在cookie中将整个会话发送给用户并在下一个请求时接收它,因此它只允许会话中有限的数据量.
我想要做的是在用户登录时从数据库中获取User对象,并将其保存在会话中,这样我就可以从模板中访问它等等(我在User类中有一些方法需要调用以便自定义UI ),但如果我放置User对象,则调用其toString方法并将其放入会话中.
我发现推荐的方法是将大量数据放入Cache中,但我不知道如何从模板中访问它(我想我可以用@Before注释创建方法并将用户添加到renderArgs,但这似乎不太给我干净)另一个问题是Cache的生命周期有限,所以我的对象可能会消失.
有没有人有这种问题的经验?
有没有办法使用服务器端会话?我不需要这个项目的REST功能,因此,就我而言,应用程序可以保存状态...
使用 Java 序列化将 Hashmap 序列化到文件或数据库。以您存储在用户 cookie 中的唯一标识符命名文件或 id 列。然后在序列化 hashmap 之前将 User 对象放入 hashmap 中。现在您有了一个可以访问的持久存储。当框架忘记 User 对象或任何其他会话信息时,您可以反序列化 Hashmap。然后编写一些静态帮助器方法,静态 Object SessionDB.get(String id, String key) 和 SessionDB.put(String id, String key, Object value)。我在我的自制框架上使用此方法来在小型服务器场上存储会话信息。当然我使用数据库,而不是文件系统。