如何使用和存储用户偏好

How to use and store User Preferences

我是 portlet 开发的新手,我想知道如何存储每个用户的首选项。我正在使用 WebSphere 8.5 Portal Server、Spring 4.3.2 和 RAD v9.5。

目前我正在使用 PortletPreferences 将数据存储在我的 Controller.java 中,如下所示:

@ActionMapping(params = "action=saveUserPref")
public void saveUserSettings(ActionRequest req, @RequestParam("radio") String color) throws ReadOnlyException, ValidatorException, IOException {
    PortletPreferences pref = req.getPreferences();
    pref.setValue(accountService.getUsername()+"_fontcolor", color);
    pref.store();
}

并像这样在我的 .jsp 中获取首选项:

<div style="color:<%=renderRequest.getPreferences().getValue(renderRequest.getPortletSession().getAttribute("username")+"_fontcolor",
                "black")%>;">

我在一些帖子中读到此方法有效,但它不是保存用户首选项的最简洁方法,因为如果您有大量用户,这将变得非常慢。

现在我正在寻找一种快速保存和获取偏好的方法,即使有大量用户也是如此。现实世界中的最佳实践解决方案是什么?

即使在 10 万用户范围内,我也从未见过这会成为性能问题。 Portlet 首选项应该用于特定于 Portlet 的首选项,如果要在多个 Portlet 上共享它们,最好将它们存储在用户存储中,如 ldap。如果你使用 ldap portal 会为你处理缓存。您还可以使用旁观数据库作为 Portal 的一部分,并将用户属性存储在数据库中,它们作为 PUMA 用户对象的一部分。

使用 portlet 首选项,我建议缓存它们,这样您就不必每次都访问门户层。

但最后,特定于 portlet 的首选项,保存到特定于用户的 portlet 首选项,放入用户存储,如 ldap、look aside 或类似的东西,例如使用自己的数据库的 portlet 服务。