liferay 7.0开发到部署
文章目錄
- 一、開發環境搭建
- 1、下載插件
- 2、創建Liferay Project
- 3、創建之后的項目列表
- 二、初始化liferay服務
- 三、配置Liferay服務
- 四、創建portlet
- 1、創建module
- 2、自定義module
- 3、部署module
- 4、啟動服務測試
- 五、創建theme
- 1、新建module
- 2、創建主題
- 3、deploy
- 六、liferay進階
- 1、portal.properties的配置
- 2、中文亂碼
- 3、liferay表
- 4、自定義字段
- 5、liferay中不需要的模板可以在控制面板->應用程序管理器中刪掉
- 6、數據庫里修改的在頁面上沒生效處理
- 7、控制面板->組件里面可關閉不需要的portlet
- 8、查看liferay模塊的版本
- 9、覆蓋源碼中的jsp頁面
- 10、引入全局樣式
- 11、定時任務
- 12、覆蓋全局Liferay語言包
- 13、自定義過濾器
- 14、自動登錄(驗證,url上面帶了userId就可以自動登錄)
一、開發環境搭建
軟件環境:
必須:
liferay-ce-portal-tomcat-7.0-ga5-20171018150113838.zip
說明:Liferay的運行環境。
liferay-ide-eclipse-windows-x64-3.1.2-ga3-201709011126.zip
說明:開發所使用的IDE,其實就是一個基于Eclipse上運行的插件,當然也可以選擇使用IDEA進行開發
所需要的軟件都可以在這里找到:liferay官方
網上有太多傳統的搭建方式,我們這里主要介紹官方最為推崇的OSGI模塊模式。
網上幾乎所有的介紹都是基于eclipse,我們這里介紹的是目前比較主流的ide工具:IDEA
1、下載插件
在idea plugin中下載Liferay相關插件
2、創建Liferay Project
3、創建之后的項目列表
如果創建完之后,不是這個目錄結構,那應該是環境搭建失敗了,需要重新加載項目結構。
二、初始化liferay服務
- 下載完畢 liferay-ce-portal-tomcat-7.0-ga5-20171018150113838.zip之后,需要先行解壓
- 解壓完畢之后,在其目錄下的tomcat目錄下的bin文件夾下啟動tomcat
- 注意,這里的tomcat其實和普通的tomcat并沒有太大的區別,只是多了一些liferay的jar包
- 啟動好liferay服務之后
- 在瀏覽器輸入localhost:8080
- 就會看到如下的頁面
- 我們先將默認語言改為中文
- 這里默認的數據庫有些時候并不能完成我們的日常業務需求
- 所以我們選擇自定義數據庫
- 這里我們就完成了數據庫的配置
- 此時我們還要注意數據庫要有一個對應的空的數據庫
- 在你點擊完成配置的時候,會有32個數據庫初始化在你的這個數據庫中
- 這時會讓你同意條款
- 一直下滑,直至看到同意選項,點擊同意即可完成
- 同意之后,會有讓你設置密碼
- 這里注意,如果你自定義了自己的數據庫,那么就不會有這個設置密碼環節
- 這里會有默認的賬號和密碼
- 賬號:test@liferay.com
- 密碼:test
- 設置新密碼之后,會有一個密保環節
- 設置完密保之后,就完成了初始化的事情
- 之后,你就會進入liferay的主頁。
- 恭喜你,liferay的世界你要打開大門了。
三、配置Liferay服務
首先在官網下載liferay服務:https://www.liferay.com/zh/downloads-community
后面一路OK就行
四、創建portlet
1、創建module
右鍵項目名選擇new module,或者右鍵modules選擇new module
2、自定義module
3、部署module
將生成的jar包放到Liferay服務器下的deploy目錄中
4、啟動服務測試
五、創建theme
1、新建module
2、創建主題
3、deploy
六、liferay進階
1、portal.properties的配置
路徑:/portal-master/portal-impl/src/portal.properties
后臺打印sql的配置:Hibernate.show_sql=true
頁面session超時時間設置:session.timeout=300
只有powerUser用戶才會自動創建 用戶私有頁:
layout.user.private.layouts.power.user.required=true
只有powerUser用戶才會自動創建 用戶公開頁:
layout.user.public.layouts.power.user.required=true
用戶第一次登錄時的相關配置:
- 關閉使用條款:terms.of.use.required=true
- 關閉密碼提醒功能:users.reminder.queries.enabled=false
- 關閉首次登錄強制修改密碼功能:passwords.default.policy.change.required=false
2、中文亂碼
在當前工程的build.gradle文件中添加如下信息:
tasks.withType(JavaCompile) {options.encoding = 'UTF-8' }然后重新執行deploy
頁面亂碼:在頁面增加如下代碼:
3、liferay表
附件保存在以dlfile開頭的表里面
portlet自定義屬性保存在portletpreferences表里面
assetEntry里面可以查看有哪些屬性
web內容文章存儲在journalarticle里面
liferay模板都是存儲在ddmtemplate表里面
4、自定義字段
設置值和讀取值
JournalArticle journalArticle = null; journalArticle.getEcpandoBridge().setAttribute(“author”,”張三”); journalArticle.getEcpandoBridge().getAttribute(“author”);自定義字段在數據庫里面存儲的表:
- expandocolumn:欄目表
- expandorow:行
- expandotable:表
- expandovalue:值
5、liferay中不需要的模板可以在控制面板->應用程序管理器中刪掉
比如商務版塊
卸載完后的效果:商務那一塊就沒有了
6、數據庫里修改的在頁面上沒生效處理
控制面板->服務器管理->清除數據庫緩存
7、控制面板->組件里面可關閉不需要的portlet
8、查看liferay模塊的版本
9、覆蓋源碼中的jsp頁面
(1)新建一個mvc-portlet,可以刪除不需要的生成文件
(2)在源碼中找到對應的bnd文件
(3)修改新建的mvc-portlet中的bnd文件,也就是需要覆蓋的源碼是哪一個
(4)、把要覆蓋的jsp復制出來放到對應的目錄下面
(5)、測試一下
10、引入全局樣式
(1)查找到源碼中的擴展點
(2)引入全局css
11、定時任務
在自己的某個插件中建立如下類
/*** 定時任務*/ @Component(immediate = true, service = DdTestMessageListener.class) public class DdTestMessageListener extends BaseMessageListener {@Activateprotected void activate() {Class<?> clazz = getClass();String className = clazz.getName();/** 每隔15秒鐘執行一次 */Trigger trigger = _triggerFactory.createTrigger(className, className, null, null,15, TimeUnit.SECOND);SchedulerEntry schedulerEntry = new SchedulerEntryImpl(className, trigger);_schedulerEngineHelper.register(this, schedulerEntry, DestinationNames.SCHEDULER_DISPATCH);}@Deactivateprotected void deactivate() {_schedulerEngineHelper.unregister(this);}/*** 定時任務執行的方法體* @param message* @throws Exception*/@Overrideprotected void doReceive(Message message) throws Exception {System.out.println(new Date());}@Reference(target = ModuleServiceLifecycle.PORTAL_INITIALIZED, unbind = "-")protected void setModuleServiceLifecycle(ModuleServiceLifecycle moduleServiceLifecycle) {}@Reference(unbind = "-")protected void setSchedulerEngineHelper(SchedulerEngineHelper schedulerEngineHelper) {_schedulerEngineHelper = schedulerEngineHelper;}private SchedulerEngineHelper _schedulerEngineHelper;@Referenceprivate TriggerFactory _triggerFactory;}
部署啟動后看效果
12、覆蓋全局Liferay語言包
(1)、找到源碼中想要覆蓋的語言配置
liferay-ce-portal-src-7.3.5-ga6\portal-impl\classes\content\Language_zh_CN.properties
(2)在自己的某個插件中建立如下類,在項目的language里面寫對應的值
(3)把需要覆蓋的配置放在對應的文件中,如想把微件頁改為portlet頁
(4)部署后看效果,改成功了
13、自定義過濾器
@Component(immediate = true,property = {//"before-filter=Auto Login Filter",//"after-filter=SSO CAS Filter","dispatcher=FORWARD","dispatcher=REQUEST","servlet-context-name=","servlet-filter-name= Custom CAS LDAP Import Filter","url-pattern=/c/portal/login"},service = Filter.class) public class CustomCASFilter extends BaseFilter {@Overridepublic boolean isFilterEnabled(HttpServletRequest request, HttpServletResponse response){//通過配置文件獲取//boolean enabled = GetterUtil.getBoolean(PropsUtil.get("custom.cas.ldap.import.enabled"));return true;}@Overrideprotected void processFilter(HttpServletRequest request,HttpServletResponse response, FilterChain filterChain) throws Exception{HttpSession session = request.getSession();System.out.println("進入CustomCASFilter");processFilter(CustomCASFilter.class.getName(), request, response, filterChain);}@Overrideprotected Log getLog() {return _log;}private static final Log _log = LogFactoryUtil.getLog(CustomCASFilter.class); }14、自動登錄(驗證,url上面帶了userId就可以自動登錄)
可以跟過濾器結合使用,過濾器過濾到對應請求地址,把信息寫到session中,這里就可以從session中獲取值了
提供回調地址
@Component(immediate = true,property = "path=/portal/sso/login",service = StrutsAction.class ) public class LoginAction implements StrutsAction{@Overridepublic String execute(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {String token = ParamUtil.getString(httpServletRequest,"token");System.out.println("token:"+token);if(Validator.isNotNull(token)){//在這里調用方法,處理用戶信息,比如自動創建或調用用戶信息等Long userId = GetterUtil.getLong(token);HttpSession session = httpServletRequest.getSession();session.setAttribute("CUSTOM_LOGIN_USER_ERROR","test error");session.setAttribute("CUSTOM_LOGIN_USER_ID",userId);}httpServletResponse.sendRedirect("/web/guest");return null;} }
實際訪問時前面要加一個c
中文不能識別
總結
以上是生活随笔為你收集整理的liferay 7.0开发到部署的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 尝试EFM32下的fatfs的使用
- 下一篇: java判断object对象为不为空