Liferay7开发体系简介

摘要:
p_auth=epi4GwuC&p_p_id=categorynavigation_WAR_类别导航端口&pp_lifecycle=1&p_p_state=normal&pp_col_id=column-1&p_p_col_pos=1&pp_col_count=3&_类别导航_WAR_分类导航端口_Javax。portlet。action=triggerSearch,那么在上面的portlet URL中,有以下参数:p_authp_p_idp_p_lifecyclep_p_statep_p_col_idp_p_col_posp_p_Countjavax.portlet。操作似乎和ServletQueryParameter没有什么不同。事实上,PortletURL是动态生成的。根据portlet模式、WindowsState、页面位置和其他ServletQueryParameters,您可以直接在浏览器中输入它们,然后直接访问它们。PortletURL不支持在浏览器中直接访问。您只能使用PortletRequest或平台提供的帮助类,例如UrlUtil类;Liferay架构Liferay的企业级集成界面作者简介:王欣在广州工作和生活了30多年。十多年的开发经验,在Java、即时消息、NoSQL、BPM、大数据等领域拥有丰富的经验。

参考:https://www.cnblogs.com/starcrm/p/6022502.html 

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的层次关系

Liferay7开发体系简介第1张

Portlet的层次

Liferay7开发体系简介第2张

Request & Response

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

Liferay7开发体系简介第3张

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()

Liferay7开发体系简介第4张

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架构

Liferay7开发体系简介第5张

Liferay的企业级集成接口

Liferay7开发体系简介第6张

关于作者: 王昕(QQ:475660) 在广州工作生活30余年。十多年开发经验,在Java、即时通讯、NoSQL、BPM、大数据等领域较有经验。
目前维护的开源产品:https://gitee.com/475660
 

免责声明:文章转载自《Liferay7开发体系简介》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【深度学习系列】用Tensorflow实现经典CNN网络Vgg调用ZoomEye API获取信息下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ServletContextListener使用详解(监听Tomcat启动、关闭)

  在 Servlet API 中有一个 ServletContextListener 接口,它能够监听 ServletContext 对象的生命周期,实际上就是监听 Web 应用的生命周期。   当Servlet 容器启动或终止Web 应用时,会触发ServletContextEvent 事件,该事件由ServletContextListener 来处...

Django第四章、 url配置

目录 一 URL配置 基本格式 参数说明 二 正则表达式详解 基本配置 注意事项 补充说明 三 分组命名匹配 URLconf匹配的位置 捕获的参数永远都是字符串 视图函数中指定默认值 include其他的URLconfs(也叫URL分发) 一 URL配置 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Djang...

HTTP协议从入门到大牛,初识HTTP协议(学习笔记)

HTTP数据传输协议   当访问一个网页时,浏览器会向服务器发起一条HTTP请求,接着服务器会去寻找相应的资源,如果请求成功,就会把这个对象,对象类型,对象长度以及其他的信息放在HTTP响应中,发送给客户端。   因为资源种类太多,所以WEB服务器在返回响应时会为HTTP对象附加一条MIME类型(数据类型),当浏览器接收到数据时,会去查看这个MIME类型,...

electron用默认浏览器打开链接的3种实现方式

在使用electron开发桌面程序的过程中,我们可能经常需要让electron程序中包含的链接在被点击后直接调用系统的默认浏览器打开,仔细看了文档的都知道其核心原理就是通过electron的shell模块中的openExternal方法来调用系统默认浏览器打开链接,但是对于其实现又有不同的方法,彻底的接管,选择性的接管,瞎 main介绍3中行之有效的方法。...

Nginx配置转发

nginx location proxy_pass 后面的url 加与不加/的区别  在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。 首先是location进行的是模糊匹配 1)没有“/”时,locatio...

验证码实现(google)

1.引入jar包 <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version> </d...