关于liferay中请求处理程序的基础知识问题

时间:2012-11-26 10:00:09

标签: java servlets liferay web.xml

自从过去几周以来,我开始在liferay工作。我有一些关于liferay插件开发的问题,他们是

  1. 我们可以在插件中安装servlet吗?
  2. 如果是,那么哪个可以拥有该插件?它是一个portlet还是一个钩子,还是一个ext?
  3. 如何像在web.xml中一样将servlet映射到http://liferayhost:8090/url/callback
  4. 我们可以为portlet或钩子编写web.xml吗?
  5. 请帮助我理解这些主题。

1 个答案:

答案 0 :(得分:0)

我们可以在插件中安装servlet吗?

如果您要创建Liferay Hook,则doRun方法会获得RequestResponse个对象,您可以使用这些对象来处理Request和{{ 1}}分别。

例如,您可以通过Request对象获取Session Id,Cookies等。

Response

session=request.getSession(false);

您可以使用Cookie[] cookies = request.getCookies();对象进行重定向,

Response

因此,您可以获得几乎所有可以作为Servlet获得的内容。

如果您正在开发response.sendRedirect("/PathToYourPage");插件,请记住您正在开发的Portlet,而不是Portlet。在Servlet,如果您想要PortletRequest个对象,可以使用以下代码

Response

在同一行,您可以尝试javax.servlet.http.HttpServletRequest request = (javax.servlet.http.HttpServletRequest) (FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("com.liferay.portal.kernel.servlet.PortletServletRequest")); javax.servlet.http.HttpServletResponse response = (javax.servlet.http.HttpServletResponse) (FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("com.liferay.portal.kernel.servlet.PortletServletResponse")); s

如果你正在开发一个Ext插件,我真的不明白你想要在Theme那里实现什么。

但您仍然可以做的是,在Servlet文件夹下的主题vm文件中包含一个JSP页面。

templates

此JSP页面可以放在$theme.include($themeServletContext, "/myJSP.jsp") 文件夹下。在此WebContent中,通过JSTL / Scriplets,您可以获得myJSP.jsp个对象

我希望这也能解决你的第二个问题。

如何像在web.xml中一样将servlet映射到http:/ liferayhost:8090 / url / callback?

Request/Response将是您在应用程序服务器中通过提及索引配置的端口号。

8090值将是您在Web服务器中配置的Web应用程序名称(war文件)名称(例如Apache)urluriworkers.properties将是您在应用的callback中配置的Servlet网址格式。

我们可以为portlet或钩子编写web.xml吗?

您可以为web.xmlweb.xml撰写Portlet。在Hooks的情况下,如果你在Hook中有基本配置,但不会抛出任何异常,但我不明白你想在那里做什么。