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

时间:2015-02-16 07:37:09

标签: java jsp servlets liferay

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

1 个答案:

答案 0 :(得分:1)

这真的很难做到(&#34;真的很难&#34;因为&#34;几乎不可能&#34;):当你进入servlet时,所有的门户网站都是如此识别实际用户的代码不会运行。

实际上,当你查看一个portlet的HttpServletRequest时:这将被引导到门户网站,然后只有正确构建的上下文(例如登录用户)才转发到portlet。

当您查看servlet时,它将被定向到您的servlet。您的servlet通常位于完全不同的应用程序上下文中。因此 - 通过servlet规范 - 它将完全与门户环境分离。

你发现的所有缓解这种限制的东西都会有点破解。有些人使用cookie或请求参数。但他们都在引入或多或少的问题。特别是当您谈到访问您的servlet的Web服务时,您无法使用cookie。

为了实现可维护良好的实施,我的建议是改变您的架构。很遗憾,您没有提供足够的背景信息来推荐更改您的架构的内容。