我创建了一个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.. }
这将真的很难做到(“几乎不可能”中的“非常困难”):当您在servlet中时,标识实际用户的所有门户网站代码都不会运行。
实际上,当您查看HttpServletRequest的portlet时:这将直接指向门户,并且仅在以后使用正确构造的上下文(例如,登录用户)转发到portlet。
当您查看servlet时,它将直接指向您的servlet。您的servlet通常生活在完全不同的应用程序上下文中。因此,根据servlet规范,它将与门户环境完全分开。
您发现减轻此限制的所有内容都会有些骇人听闻。有些人使用cookie或请求参数。但是他们都或多或少地引入了问题。特别是当谈到访问您的servlet的Web服务时,就无法使用Cookie。
为了实现良好的可维护性,我的建议是更改您的体系结构。不幸的是,您没有提供足够的上下文来建议将架构更改为哪些内容。