如何在自定义servlet中获取Liferay会话?

Dim*_*ims 6 java session tomcat servlets liferay

我在Liferay中编写了自定义servlet,想要知道哪个用户页面调用它并知道其他参数如theme.但是请求的属性和会话字段都是空的.

如何使自定义servlet像portlet一样接收请求?

谢谢

PS我不想使用这个解决方案https://www.everit.biz/web/guest/blog/-/blogs/getting-current-liferay-user-in-a-standalone-webapp?_33_redirect=/web /客/博客

它手动读取cookie.我想像Liferay那样做,即使用它的API.可能吗?

更新1.

我在一个WAR中有一个portlet和一个servlet.我可以从portlet JSP中知道我是谁(登录用户),如下所示:

HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();

ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(WebKeys.THEME_DISPLAY);

themeDisplay.getUser()
Run Code Online (Sandbox Code Playgroud)

现在我想从servlet中做同样的事情.可能吗?

我正在使用自动部署的eclips.

Ola*_*ock 3

您要么必须模仿 Liferay 在 portlet 请求处理中所做的事情(不推荐),要么将您的 servlet 代码放入 portlet 中 - 这可以是 portlet 的“资源处理” - 在这里您可以完全访问 http 请求并且可以自己完成有关流中传输的数据类型的所有操作。

我宁愿推荐这个,因为它会更容易升级。从逻辑角度来看,Portlet 资源处理程序与 servlet 非常相似。可能还有其他(更明智的)选择,但这就是我针对此类问题想到的。