• Liferay7 BPM门户开发之15: Liferay开发体系简介


    Liferay SDK 开发体系

    主要分6种:

    • Portlet
    • Hook
    • Theme
    • Layout Templates
    • Web Modules
    • Ext

    Portlet :类似于servlet的web组件,编译后是war包,是页面的组成元素,可以把它理解为一个web APP

    详细介绍:https://web.liferay.com/zh/products/what-is-a-portal/web-platform

    Hook:钩子插件,用来覆盖门户的JSP文件和配置文件,适用于仅需要少量(jsp)代码修改原门户的场景,或者一些少量的附加Java功能实现,比如登陆前,表单提交后处理,流程节点的增加一个通用逻辑处理...

    Theme:就是look and feel,默认的风格叫classic

    Layout Templates :开发这种插件可以自定义页面布局

    Web Modules:
    一种web application类型的插件,可以看成是一种后台企业服务集成,比如:Enterprise Service Bus, Search Engine web application

    Ext:还没搞清楚是什么

    Servlet 和 Portlet 的区别

    Web组件
    Servlet, Portlet 都可以看成Web组件

    包和部署
    都是war,Servlet部署于Servlet容器,如tomcat,Portlet部署于Portlet容器,比如Liferay, WebSphere Portal, Oracle Portal

    • Servlets描述文件是在web.xml
    • Portlets的描述文件是portlet.xml,而portlet.xml是web.xml的一部分
    • portlet.xml可以定义内容:portlet name、description、class、modes、parameters、information、roles......

    生成内容

    • Servlet一旦输出就必须是整个页面
    • Portlet仅仅是控制输出页面的一个小部分
    • 通过portlet preference设置定义个性化,用户可以针对不同的portlet各自设置(即可以不带重样的配置)

    继承关系的不同

    用图说明

    JSP和Servlet的层次关系

    Portlet的层次

    Request & Response

    • Servlet可以直接ServletRequest and ServletResponse
    • Portlet不行,它有自己的继承关系:RenderRequest, ActionRequest and ResourceRequest

    Portlet Mode模式

    • Portlet有多个模式,如view, edit , help, config...
    • Servlet没这一说

    Window State 窗体状态

    • Portlet有Maximized, Minimized or Normal三种Window状态
    • Servlet没这一说,因为输出的是整页html

    URLs

    • Servlet通过web.xml的<servlet-mapping>元素指定url,在开发时也能直接调试<servlet-mapping>静态指定地址url,即直接浏览器访问
    • Portlet在开发调试时,无法定义静态指定地址url,而是通过以下几种方式:
      •   Render URL:call render method,用于界面控制
      •   Action URL:call action method,用于服务调用
      •   Resource URL:call serve resource method,用于访问资源

    生命周期

    Servlet是Init()=〉Service() =〉destroy()

    Portlet是 init() =〉 render() =〉 processAction() =〉 processEvent() =〉 serveResource() =〉destroy()

    URL参数

    • Servlet可以直接读取url参数,通过Query Parameter

    比如:http://abc.com?firstName=abc&lastName=pqr
    Servlet就有如下的query parameter

      • firstName
      • lastName
    • 而Portlet不可以,它必须预定义,被定义为Public Render Parameter

    比如:
    http://xxx/group/guest/home?p_auth=epi4GwuC&p_p_id=categorynavigation_WAR_categorynavigationportlet&p_p_lifecycle=1&p_p_state=normal&p_p_col_id=column-1&p_p_col_pos=1&p_p_col_count=3&_categorynavigation_WAR_categorynavigationportlet_javax.portlet.action=triggerSearch
    那么在以上的Portlet URL中,就有以下参数:

      • p_auth
      • p_p_id
      • p_p_lifecycle
      • p_p_state
      • p_p_col_id
      • p_p_col_pos
      • p_p_count
      • javax.portlet.action

    看上去和Servlet Query Parameter没有区别,实际上:

    • PortletURLs是动态生成的,依赖于portlet mode、Window state、所处页面位置等
    • Servlet Query Parameter可以通过在浏览器中直接输入,然后直接访问(get),方便直接开发调试
    • PortletURLs不支持浏览器中直接访问,只能用PortletRequest或平台提供的帮助类,比如UrlUtil类;

    Liferay架构

    Liferay的企业级集成接口

  • 相关阅读:
    项目编译
    sqlserver查列名
    list<>初始化赋值两种方式
    看到一句很不错的话
    typescript
    vscode里div等html标签代码补全
    JavaScript 基于原型链的继承
    大数据系列01:大数据离线计算平台hadoop集群搭建和本地环境配置实践
    java数据类型
    计算机基础及java基础
  • 原文地址:https://www.cnblogs.com/starcrm/p/6022502.html
Copyright © 2020-2023  润新知