当前位置:首页 » 网页前端 » liferay怎么能集成web
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

liferay怎么能集成web

发布时间: 2022-08-06 17:22:46

⑴ liferay portal6.1门户网站建设最佳实战怎么样

您好,很高兴能帮助您,
功能要求:a.单点登录。b.系统集成。c.自定义样式。d.信息发布。e.搜索(对于OA,实现起来还是有点为大现实)。
b.系统集成:
系统集成主要有以下几种方式:
1、iframe:利用liferay自带的iframe portlet可以直接把其它的web系统以url的形式集成进来,不过这里面会出现session丢失的问题。iframe中的系统在执行Login操作的后,习惯性的选择redirect操作,这样会强制浏览器中的显示地址变更为转移的地址。事实上这是个很正确的做法,在正常境况下,不会有任何问题,而且还可以很好的防止页面刷新等所带来的问题。
你的采纳是我前进的动力,还有不懂的地方,请你继续“追问”!
如你还有别的问题,可另外向我求助;答题不易,互相理解,互相帮助!

⑵ liferay 是什么

Liferay的企业门户是一个自由和开放源码的 企业门户写在爪哇和分布式根据GNU通用公共许可证 。 [1]它主要用于电力企业内部网和外部网,并提供强大的企业功能,包括系统支持外部文件管理,LDAP集成,社会的工具,和wiki。
Liferay的Portal允许用户方便地设置常用的网站强大的功能。 它来了,出来的饲料箱用户注册,验证码,文档库,Lucene的检索,维基,社会新闻聊天,等等。 [2]门户系统是建立在portlet的 ,因此,有许多协力党的社会贡献的插件和插件。 Portlets允许用户添加新的功能或自定义Liferay的行为和外观。 由于此插件可扩展性和模块化设计,Liferay是有时称为内容管理框架或一个Web应用框架 。 Liferay的插件支持扩展到多种编程语言,包括支持的PHP和红宝石的portlet。 [3]
虽然Liferay的开发人员提供了一个复杂的编程接口,无需编程技能都需要安装和管理的基本网站。
Liferay的Portal是基于Java上运行的任何计算平台能够运行的Java运行环境和应用服务器 。 Liferay是可作为捆绑的应用服务器,例如Apache Tomcat的
历史

Liferay的公司是一家专业的开源公司,提供专业的免费文件和有偿服务,软件用户的。 主要对重点企业门户技术,该公司已经在总部洛杉矶 ,加利福尼亚州,美国。
创建于2000年Liferay的由首席软件设计师布赖恩陈提供的企业门户的解决方案, 非营利性组织 。 [5] 2004年,该公司注册成立公司的名义下Liferay的,其德国子公司正式Liferay的股份有限公司。 2007年,公司开辟了新的亚洲总部在大连 ,中国和西班牙的子公司Liferay的sl的。 2009年3月,公司开辟了新的办公室在班加罗尔 ,印度。
该公司的企业门户产品已经承认几个显着的组织。 这是公认的电子内容的杂志在其“电子内容100”领导人名单的行业[6] [7] ,2007年InfoWorld的命名,“这是”科技的新年。 [8] 2007年7月,他们宣布ICEsoft伙伴关系技术,提供的ICEfaces的库,用于开发的Ajax的技术企业门户软件[9] 。 2008年1月,公司聘请的工程师带领jQuery的用户界面,工作时间独家全JavaScript库 。 [10] 2008年Gartner的认可Liferay的9月作为有远见的领导者象限的水平门户产品。 [11]
Sun微系统和Liferay分享协议签署2008年5月一个技术。 [12] 。 Sun微系统公司更名发行GlassFish的网络空间服务器 。 ZDNET.UK进一步描述了平台的关系在2008年5月文章太阳和Liferay推出网上演示 。 [13]
2009年10月宣布了一项Liferay的伙伴关系的技术提供商与IT厂有限公司, Vaadin捆绑它与未来Liferay的版本的用户界面库。 [14]
[ 编辑 ]产品
Liferay的Portal是一个的JSR - 286 企业门户 ,其中包括一个应用套件(例如, 内容管理系统 , 博客 , 即时通讯 , 留言板等)。 这是分布在两个不同的版本:
Liferay门户社区版 -社区版本与最新的功能和支持,通过积极的。
Liferay门户企业版 -一个商业产品,包括支援服务,包括更新和充实。 此版本经过附加的质量保证周期,通常在社区版后的1或2个月内推出。
Liferay的协作套件还提供了一个平台上的Liferay的基础:
Liferay的社会办公室 -一间套房,为企业社会协作
真是..发个链接都不行,我消息你吧

⑶ 什么是LIFERAY

代表了完整的J2EE应用,使用了Web、EJB以及JMS等技术,特别是其前台界面部分使用Struts 框架技术,基于XML的portlet配置文件可以自由地动态扩展,使用了Web Services来支持一些远程信息的获取,使用 Apahce Lucene实现全文检索功能。
主要特点:
1、提供单一登陆接口,多认证模式(LDAP或SQL);
2、管理员能通过用户界面轻松管理用户,组,角色;
3、用户能可以根据需要定制个性化的portal layout;
4、能够在主流的J2EE应用服务器上运行,如JBoss+Jetty/Tomcat,JOnAS;
5、支持主流的数据库,如PostgreSQL,MySQL;
6、使用了第三放的开源项目,如Hibernate, Lucene, Struts;
7、支持包括中文在内的多种语言;
8、采用最先进的技术 Java, EJB, JMS, SOAP, XML;

⑷ 调试实战:判断Liferay中编辑WebContent 时使用何种富文本编辑器分析 ,顺便分享下页面调试经验

这个控件是如何被集成在我们的页面中的呢?这是我们要解决的问题。调试分析:我们还是从原点开始,(小插曲:这也受益于我中学时代数学老师的教的一句话,学习就是用已知的东西解释未知的东西,而学习的过程就是建立从已知知识到未知知识的桥梁,要让A->B的每一步都满足A是B的充分条件,而不要想当然,只有这样,知识体系结构才足够牢固)我们肯定从页面点击开始,当点击下图中图标按钮最右边那个带绿色加号的图标时:它会发出如下请求,我们可以从web工具中看出来,这个对应请求参数的struts_action是/journal/edit_article所以我们去struts-config.xml中去找action mapping:这里可以看到,它会把请求转发到portlet.journal.edit_article 这个key对应的页面中:我们去tiles-def.xml中找到这个key 对应的页面,结果是edit_article.jsp因为我们的目标是富文本编辑器,所以我们必须在edit_article.jsp中找到对应的代码,我一看这个页面,傻眼了,它全是用的自定义标记写的,要看内容我不得不单独调试标记对应的java代码。 而且这里面充斥着scriptlet,所以我很难直接命中代码片段。我只能用排除法。显然,在页面上"New Web Content"对应的从Web调试器返回的代码是:
它一定满足以下代码(edit_article.jsp的第173行):而这个<table>元素从第173行一直延伸到了第311行,所以我们的目标代码就在这从173-311行这些代码之间。(旁白:这就是缩小目标范围,也是警察甄别犯罪嫌疑人的常用方法)但是这段代码非常复杂,各种逻辑判断,我用肉眼已经没办法准确的判断走的流程了,只能借助调试器了。首先,调试器在第88行到第93行会去获取当前languageId,这里是"en_US", 然后toLanguageId为""然后当运行到第107行mainSections时候,我眼前一亮,因为以往经验,为了让jsp片断能更好的重用,多数是以section的形式来存放一个一个小的页面片断的,稍微初级点的人一般会在页面上用N个 jsp:include来引入这些页面片断,稍微高级点的人则会定义一个页面片断数组,然后把所有片断页面的名字都存放在这个数组中,至少我以前经常这么做,所以感觉很熟悉。结果果然和我猜想一致(旁白:果然经验和感觉很重要啊)因为我们是点“绿色加号”页面图标进来的,所以它的mainSections的取值就是上图第107行的PropsValues.JOURNAL_ARTICLE_FORM_ADD指定的值,我们去portal.properties中找,果然找到了,而且从注释上看也证实了我们的猜想:结合调试信息:所以我们确定,要在这里添加多个jsp片断的内容,包括content.jsp,abstract.jsp等。并且categorySections:然后因为我们的toLanguageId为"",所以符合第281行的条件Validator.isNull(toLanguageId)==true:所以我们断定,这个标记对应的jsp片断就是应该包含若干jsp页面,它要包含的页面名字数组放在刚才生成的categorySections,而页面的路径应该是jspPath指定的路径,我们现在来证明这个猜想:为此,我们去liferay-ui.tld中找到这个标记对应的处理类:所以,它对应的标记处理类是FormNavigatorTag类:
而这个类的getPage()方法会吧页面转到/html/taglib/ui/form_navigator/page.jsp中:我们看到,它会在第48行循环的吧所有的sectionJsp从传入的categorySections入参中读取出来,,然后分别拼接页面路径前缀(jspPath),最后在第56行,分别包含这些页面内容插入到当前页面中。因为我们刚才已经分析了,这些页面列表都在categorySection入参中,而jspPath前缀也传递进来,叫/html/portlet/journal/article,所以一切谜底都解开了,他们会从webapps/ROOT/html/portlet/journal/article中吧相应的页面片断包含进来。我们现在来看第一个页面content.jsp,这个页面还是比较简单的, 它是一个典型的自顶向下结构:
结合页面很容易就把每块区域和对应的代码联系起来:其中Structure:Default 和Template: None 这些所在的容器对应的是conent.jsp第211行的article-structure-template-toolbar接下来Default language:所在的容器对应的是content.jsp第347行article-translation-toolbar接下来Title(Required)所在容器对应的是content.jsp第480行journal-article-general-fields:接下来的Content以及富文本编辑器对应的是content.jsp的第488行journal-article-container:很快的, 我们就在journal-article-container下面找到了富文本编辑器对应的代码,它也是用liferay-ui标记库中的标记写的:为此,我们又回到liferay-ui.tld中找input-editor对应的标记处理类为InputEditorTag:从InputEditorTag类的调试信息中,我们终于发现,它使用ckeditor作为富文本编辑器的内容:(长叹一下:终于找到目标了)从调试信息中看到,它会在108行包含一个页面叫/html/js/editor/ckeditor.jsp。我们进入这个页面继续调试后发现,这个ckeditor使用的配置信息(存于变量ckeditorConfigFileName中)位于文件ckconfig.jsp中:稍微瞄了一眼ckconfig.jsp,发现它提供了ckeditor很多配置参数包括定制显示的按钮,甚至包括样式,这也能解释为什么我们看到的ckeditor和我们看到原版的有一定的区别.第62-68行定义了ckeditor的主要样式,让其绝对定位:然后第74行指定了ckeditor控件的具体呈现,原来它是封装在一段叫ckeditor.js的javascript代码中的,它的路径在/html/js/editor/ckeditor/ckeditor.js中最后,在我们用ckeditor编辑完文章后,liferay会自动收集这个控件产生的内容和数据,并且进一步处理。
总结:页面调试经验:我从事框架研究,架构很多年了,虽然自己没怎么写过jsp页面:)。我看过很多同事,对于这种复杂页面嵌套页面的调试,他们的做法是:直接打开Firebug然后对照Dom树去找对应的jsp文件,但是这样效果不好,一来是现在主流网站多数用了很多前端框架,比如tile框架,还大量使用自定义标记库,jstl等,所以你很难直接从最终的Dom找到对应的jsp片断来满足你要求。二来是这样泛搜经常搜不到结果或者搜到很多结果,你无法判断到底哪个片断才是你所需要的, 也许这些片断彼此都很相似。我的经验是:对于简单的,你直接一目了然就可以看到页面,页帧的嵌套包含关系,那么只要go-through一下就可以了,但是对于复杂的,尤其是页面中嵌套许多<c:if><c:choose>这种分支,判断的,你也许无法直接判断走那个分支,那么必须通过调试器。java调试工具对于jsp页面的调试支持并不完美,但是至少其中的scriptlet和expression部分是可以敲断点调试的,而条件分支,判断,循环中用到的变量值往往来自于这些scriptlet和 expression,所以知道这些代码段中出现的变量的值可以帮助我们正确的选择分支。还有就是如果页面很乱很杂,那么就可以先尽量排除不想干代码,而把目标代码局限在很小的范围中,然后断点打的细一点,就很容易搞定了。在我写着文章时候,虽然我猜想可能是用ckeditor,但我没查证过,我完全是边写博客边调试,然后结果就自动出来了。本文中的知识:本文其实大多数我的篇幅都是在如何进行调试和从各种复杂文件包含,引入中准确定位我们的目标的。

⑸ liferay是怎样配置到哪个具体tomcat服务器上的

把服务部署到tomcat上有多种方法,有的直接把编译后的应用拷贝到tomcat的webapps目录下面,有的是导出成.war文件拷贝到webapps下面,这样的话启动tomcat会自动生成一个同名的应用文件夹里面会有tomcat解压后的应用目录,还有些不用拷贝到webapps目录下,通过tomcat的server配置指定任意的文件夹为web应用的发布目录。基本上目录结构是这样的,首先根目录就是以你的项目名称命名的文件夹,根目录下面会有各种前台展示相关的代码文件,比方说包含jsp文件、css文件、js文件、image文件等前台展示相关的文件夹或文件都可以放在根目录下面,根目录下面还有一个WEB-INF文件夹,该文件夹下是一些应用配置文件:web.xml、应用库文件夹lib文件夹该文件夹下是应用用到的一些第三方jar包、应用编译文件夹:class,该文件夹下是你的应用开发中的src目录下面的所有java文件或者其他配置文件的编译后的文件目录,目录结构跟你的开发src目录结构一致。

⑹ liferay 是什么

liferay是个开源的门户平台,它主要面向企业提供其内部的web内容发布、内容、集成和协作的解决方案。与新浪、搜狐等门户网站从面向用户到业务范围都不相同。

⑺ liferay 怎么进行二次开发

当系统开发完成,部署实施上线时,需要初始化大量的用户数据,如果一个个的录入,数据量少时还好,如果数据量比较大,还是让人很崩溃的。此时,我们可以使用Liferay的API进行用户的导入,Liferay本身并没有提供CSV或EXCEL的用户导入方法,需要我们有一定的二次开发。
导入的方法大概有几种:
(注意:本文的说明是基于Liferay6.2.1的版本,其他版本可能稍有差异)
1、LDAP的导入,就是我们在的用户在LDAP中,让Liferay从LDAP中自动导入,这样的方法,可以参考前面的文章《Liferay 6开发学习(二十七):OpenLDAP与Liferay的集成》;
2、我们Liferay中写一个Portlet,调用Liferay的API进行导入。
3、我们在远程或者另外独立的工程中,调用Liferay的WebService接口进行导入。
写Portlet进行导入
只所以要建立一个Portlet,是因为我们在Portlet里面可以方便的调用Liferay的API,新建一个Portlet工程或者添加一个Portlet。调用下面的方法进行添加。
UserServiceUtil.addUser(companyId, autoPassword, password1, password2, autoScreenName, screenName, emailAddress, facebookId, openId, locale, firstName, middleName, lastName, prefixId, suffixId, male, birthdayMonth, birthdayDay, birthdayYear, jobTitle, groupIds, organizationIds, roleIds, userGroupIds, sendEmail, serviceContext)
说明:
1、添加时请保证使用超级管理员帐号登录,不然会可能会提示权限不足。
2、上面的companyId,可以从上下文件中使用PortalUtil.getCompanyId(request)获取。
3、autoPassword,一般设置为false。为true时,会自动的生成密码。
4、password1,和password2,就是密码,保持一致即可。
5、autoScreenName,一般为false;
6、screenName,屏幕名称,一般是字母和数字的组合,默认不能为全数字,如果要让他支持全数字,可以添加users.screen.name.allow.numeric=true,的配置到Portal-ext.properties文件中。
7、emailAddress,默认邮件地址为必填项,如果用户中没有邮件地址,则可以在后台中添加配置, users.email.address.required=false,设置为邮件地址为非必须。此时emailAddress可以传空值,否则会报错。
8、facebookId,openId等,这些一般没用,我们传值是可以facebookId传0l(facebookId为long类型),openId传"";
9、local,根据具体的情况吧,这个地方来存的是用户的语言项和时区,国内的一般可以使用固定值,或者是从request里面取,PortalUtil.getLocale(request);
10、firstName, middleName, lastName这几个值,很明显。一般是firstName为必值,其他几个可以传空。根据实际情况来传吧。
11、 prefixId, suffixId,前缀和后缀。国内我们一般都不用这些的,传值都传0即可。
12、male:是否是男性,传true或false;
13、birthdayMonth, birthdayDay, birthdayYear:生日的月、日、年,int类型,根据情况传,如果没有,可以传成1,1,1970.
14、jobTitle,职称等,根据情况传,没有的话传“”;
15、�0�2groupIds, organizationIds, roleIds, userGroupIds:long类型的数级,分别为当前用户属于的站点、组织机构、角色、用户组等,如果不需要可以传null,如果有需要传long类型的数级,里面的值为相应的站点ID,组织机构ID等。如果不是以管理员账号登录,此处传值的话(传null不会),可能会出现权限错误。
16、sendEmail,是否给用户发邮件,根据情况来定吧,一般为false。
17、serviceContext,可以从上下文件中取ServiceContext serviceContext = ServiceContextFactory.getInstance(request);
特殊情况
比如现在有一个场景,是我们自己写一个用户的注册界面,又想在这个注册后就关联上相应的站点或组织机构,上面的接口必须要有权限才能添加,如何绕过相应的权限呢?调用下面的这个API。
UserLocalServiceUtil.addUserWithWorkflow(creatorUserId, companyId, autoPassword, password1, password2, autoScreenName, screenName, emailAddress, facebookId, openId, locale, firstName, middleName, lastName, prefixId, suffixId, male, birthdayMonth, birthdayDay, birthdayYear, jobTitle, groupIds, organizationIds, roleIds, userGroupIds, sendEmail, serviceContext)
这个API和上面的相比多一个参数,也就是第一个参数,创建的用户ID,这里可以传defaultUser.getUserId()。
User defaultUser = UserLocalServiceUtil.getDefaultUser(companyId);
其他的参数和上面的没有差别,用这个方法添加站点等时,不会再要有相应的权限。