我创建了一个portlet,我在servlet中执行业务逻辑。但我在jsp页面中获取了liferay登录用户详细信息。所以现在我需要在访问servlet时传递用户详细信息。这是我的JSP代码,
<%
String fullname= user.getFullName();
out.println("Full name is: "+fullname+ "...");
long id = themeDisplay.getLayout().getGroupId();
out.println("Site ID is: "+id+ "...");
long userId = themeDisplay.getUserId();
out.println("User ID is: "+userId+ "...");
%>
我需要访问servlet中的上述细节。我怎样才能做到这一点?每个登录用户都有一些不同的凭据,因此所有值都应该更新并需要在servlet中访问。在不执行任何事件的情况下访问这些值的最佳方法是什么。我正在从另一个Web服务中访问servlet。我需要访问Get OR Post方法,
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
//I need to access those login user information here..
}
答案 0 :(得分:1)
这真的很难做到(&#34;真的很难&#34;因为&#34;几乎不可能&#34;):当你进入servlet时,所有的门户网站都是如此识别实际用户的代码不会运行。
实际上,当你查看一个portlet的HttpServletRequest时:这将被引导到门户网站,然后只有正确构建的上下文(例如登录用户)才转发到portlet。
当您查看servlet时,它将被定向到您的servlet。您的servlet通常位于完全不同的应用程序上下文中。因此 - 通过servlet规范 - 它将完全与门户环境分离。
你发现的所有缓解这种限制的东西都会有点破解。有些人使用cookie或请求参数。但他们都在引入或多或少的问题。特别是当您谈到访问您的servlet的Web服务时,您无法使用cookie。
为了实现可维护良好的实施,我的建议是改变您的架构。很遗憾,您没有提供足够的背景信息来推荐更改您的架构的内容。