如何在不执行事件的情况下将值从 JSP 传递给 Servlet?

How to pass values from JSP to Servlet without performing event?

我创建了一个 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.. 
        }

这真的很难做到("really hard" 和 "almost impossible" 一样):当你在一个 servlet 中时,所有识别实际用户的门户代码都不会 运行.

事实上,当您查看 portlet 的 HttpServletRequest 时:这将被定向到门户,并且仅在稍后转发到具有正确构建的上下文(例如登录用户)的 portlet。

当您查看 servlet 时,这将指向您的 servlet。您的 servlet 通常存在于完全不同的应用程序上下文中。因此 - 根据 servlet 规范 - 它将与门户环境完全分离。

您找到的任何可以减轻此限制的方法都将有点像 hack。有些人使用 cookie 或请求参数。但它们都或多或少地引入了问题。特别是当您谈到访问您的 servlet 的网络服务时,您不能使用 cookie。

为了实现良好的可维护性,我的建议是更改您的体系结构。不幸的是,您没有提供足够的上下文来推荐将架构更改为什么。