java - Spring Portlet MVC 和 session 对象

标签 java spring portlet

我正在处理一些基于 Springs Portlet MVC 框架的 portlet。现在出现了一个问题:在这些 portlet 中,我需要一些 session 对象(用户信息等)——为了创建这个对象,我正在考虑使用过滤器。我现在的问题是:我是否必须在正常的 webapp 上下文 (web.xml) 上声明我的过滤器,或者我是否需要将过滤器放在 portlet 级别? (在 portlet.xml 上放置 portlet 过滤器)

如果我没有完全错的话,所有 spring portlet 都在 spring 上下文中运行,它可以访问普通的 webapp 上下文,所以在我的 session 对象所在的位置将过滤器声明为 DelegatingFilterProxy 就足够了已创建。

我这个逻辑错了吗?

更新:

好吧——也许我想要一些不可能的东西:我只想在用户登录到门户(JBoss Portal)时创建一个带有用户信息的 session bean。我尝试过过滤器/监听器来实现这一点,但我的方法中没有一种有效。通过将我的 JSR-168 portlet 移植到 Spring 支持的 portlet,我希望这是可以实现的。

我在我的 web.xml 中放置了一个过滤器,但这只会在用户注销时触发 - 而不是在登录时。

最佳答案

截至JSR 286 (门户 2.0):

The PortletSession interface defines two scopes for storing objects, APPLICATION_SCOPE and PORTLET_SCOPE.

还有一些其他选项可用于配置 session 处理(请参阅规范)。

总的来说,您的 portlet.xml 中的每个 portlet 都有自己的 session (portlet 范围)。它以 javax.portlet.p.<ID>?<ATTRIBUTE_NAME> 形式的键存储在 HTTP session (应用程序范围)中).如果您有同一个 portlet 的两个实例,每个实例都有自己的 session 。

因此,如何处理这取决于您希望 session 变量具有的范围。

关于java - Spring Portlet MVC 和 session 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3253194/

相关文章:

java - eclipse mtj 内存监控

java - 基于自定义属性将用户定义的数据类型添加到 Java Set?

java - 如何在 Spring Data Rest 中格式化@param字符串

java - @ModelAttribute Spring MVC 多重选择不设置ArrayList

java - NoHandlerFoundException 集中的 'parameters map' 在哪里?

java - 如何通过单次比较比较 2 个 json 过滤器和多个 json 路径?

java - 横向页面上的 iText 文本字段 - 输入文本未旋转

java - 无法自省(introspection)类 [org.keycloak.adapters.springboot.KeycloakAutoConfiguration]

java - Liferay 7 和 Vaadin 8 : Vaadin Shared is not active

java - 关于weblogic portlets功效的一个问题