一尘不染

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

jsp

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

阅读 213

收藏
2020-06-10

共1个答案

一尘不染

这将真的很难做到(“几乎不可能”中的“非常困难”):当您在servlet中时,标识实际用户的所有门户网站代码都不会运行。

实际上,当您查看HttpServletRequest的portlet时:这将直接指向门户,并且仅在以后使用正确构造的上下文(例如,登录用户)转发到portlet。

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

您发现减轻此限制的所有内容都会有些骇人听闻。有些人使用cookie或请求参数。但是他们都或多或少地引入了问题。特别是当谈到访问您的servlet的Web服务时,就无法使用Cookie。

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

2020-06-10