JSF結合Richfaces使用時的一種數據庫分頁方式
摘要: 在JSF和Richfaces的官方示例里面沒發現正經的數據庫分頁示例,于是自己輪了一個,還算比較滿意,分享出來。
struts等框架,視圖(jsp、freemarker等)直接獲取action中準備好的數據結果集合,請求下一頁數據的時候,同樣后臺action處理請求,把action中的數據集合用新的這一頁數據替換掉,然后渲染頁面,從而實現分頁。每次請求action的處理過程可以拿到頁號等信息,所以在action調用service的時候就可以使用這些信息,調用相應的方法做分頁數據查詢。
JSF結合Richfaces做這個事情和Struts等框架有有很大的區別。
閱讀全文
Hazelcast作為hibernate緩存和業務緩存
摘要: 做去皮兒網(http://www.qupier.com),內容管理是一個系統,前端網站是一個系統,這兩個系統之間獨立部署,但是緩存要能夠互通。例如后臺修改了某個消息類型的說明,在前段網站上要能夠展現出來(使用了hibernate的查詢緩存)。其他的一些場景也許要緩存,例如網站的shiro權限信息緩存,不過這個不需要和后端系統互通。但是既然開搞,也不好意思再掛著ehcache。于是一并升級。
前面一篇日志各種碰壁后,終于找到了理論上能夠實現功能的兩個產品:gemfire和hazelcast。于是,開始嘗試。
閱讀全文
找集中式緩存做hibernate second level cache和業務緩存,失敗
摘要: 依然,先發廣告:去皮兒網(http://www.qupier.com),每月26日通知你是否中簽。已經推出廣州的搖號結果通知了。
之前做業務系統,緩存用的是ehcache,集群的時候用multicast廣播通知。隨著節點的增多,希望把整個緩存切換到集中式緩存上來。折騰了兩天,各種碰壁。
閱讀全文
基于Spring實現seam形式的事件機制
摘要: 照例先做廣告:去皮兒網(http://www.qupier.com),每月26日通知你是否中簽。很快要退出廣州的搖號結果通知了。
Seam的Events用的很舒服,spring提供的事件機制太羅嗦,所以起了念頭,著這思路移植一下。最終效果如下:
//發布事件
Events.instance().fire(eventName,arg1,arg2.);
//發布異步事件
Events.instance().fireAsynchronous(eventName,arg1,arg2.);
//在事務中,發布當事務成功commit時觸發的事件
Events.instance().fireOnTransactionSuccess(eventName,arg1,arg2.);
//在事務中,發布當事務完成(commit/rollback)時觸發的事件
Events.instance().fireOnTransactionCompletion(eventName,arg1,arg2
閱讀全文
建立功能級別的組件
摘要: 先做個廣告,去皮兒網,可以每月26日通知你是否搖號中簽。http://www.qupier.com
一直以來,組件一直都建立在技術的層面上。由于業務的復雜多變,似乎沒有人想著把業務部分也做成可重用的組件。
我們團隊在過去的兩年里面在這個方面做了一些常識,寫出來供網友參考、拍磚。
閱讀全文
走在組件化的路上(七)——JSF的優勢之使用View作用域的Action
摘要: 在以往的應用開發過程中,后端的業務組件(Action/Service/Dao),可以被設置為幾種作用域:request、session、application。我們不可能把與每次請求關系很強的一些信息(例如某個列表頁面要列出來的數據集合)簡單的放到session里面去,這就導致了每次請求之間的大部分數據是不可能共享的。使用JSF,我們實現了一種叫做view的作用域,在不同的請求之間共享信息。
閱讀全文
走在組件化的路上(六)——JSF的優勢之自定義組件與模塊化
摘要: JSF的很多文檔上面說,要建立一個自定義組件,需要定義繼承自UIComponentBase之類的類,然后寫decode/encode方法等等,一大套內容,很復雜。幸好我們有其他的辦法。其實定義一個組件在大多數情況下是不用去寫這樣的代碼的。本節的內容是一個選擇true/false兩個值得下拉框組件。定義一個這樣的組件需要做如下工作:
閱讀全文
走在組件化的路上(五)——JSF的優勢之從url到頁面r
摘要: 我看到的若干mvc框架在展現一個包含動態數據內容的頁面的時候,都是這樣做的:請求/xx.do,到達某個action,執行配置好或者根據url映射到的某個方法,初始化數據,放到某個context里面(例如Request,或者struts用的ognl的context),然后根據配置或者規則,forward到某頁面,然后展現。
這樣做的好處是強制性的分離了展現和邏輯,缺點是多了若干配置,不自然。
JSF的路子和asp/php是一樣的,你請求/a.xhtml,那么,ok,加載/a.xhtml文件。例如a.xhtml主體內容如下:
閱讀全文
走在組件化的路上(四)——JSF的優勢之了解前端狀態
摘要: 先補充一下上一篇留下的尾巴:最早看JSF的書的時候,使用jsp作為頁面,#{xx}這樣的標記不能直接寫在頁面里,必須套在一個標記里面(和struts2里面的ognl一樣郁悶)。后來才知道,這是jsp的問題,不是JSF的問題。現在大家都是用facelets作JSF的展現,JSF2.0更是把這個標準化為首選。于是直接在頁面上寫#{someAction.doSth('Hello')},完全OK,頁面加載的時候會觸發調用該方法。
然后我們再來看后端知道前端有什么的例子:
閱讀全文
走在組件化的路上(三)——JSF的優勢之忘記http
摘要: 現在開始說JSF的優勢。一個一個的說,最后整理的時候再分主次吧,現在先就針對上面的幾個問題來說。
1.URL到action method
閱讀全文
走在組件化的路上(二)——JSF能夠解決什么問題
摘要: 首先,看看在使用struts等框架做開發的時候,遇到的一些問題.
閱讀全文
走在組件化的路上(一)——緣起
摘要: 09年4月我從A公司離職,被同事拉到一個創業團隊做網頁游戲,他們當時使用的技術體系是基于Seam的。而我則是SSH的忠實用戶,此前一直跟隨江南白衣、appfuse的路線,大大小小也做了一些項目,也自己攢了一堆輪子?;?年多的時間在一個基于元數據的基礎框架上面,那時候我基本上掌握了maven的簡單使用,于是自己做的一些基礎性的東西也都是使用maven來做依賴管理、版本發布。
閱讀全文
JSF請求處理過程(二) 請求處理過程總覽(FacesServlet#service)
摘要: 這總覽,很明顯是看FacesServlet的service方法。在FacesServlet的初始化過程中,構造出了全局的FacesContextFactory對象和LifeCycle對象??梢园袴acesContextFactory看做是一個“請求包裝工廠”,于是很明顯,每當一個請求到達FacesServlet的時候,第一步便是拿著請求,到包裝工廠里面包裝一下,而包裝的結果就是一個FacesContext。
閱讀全文
Eclipse環境下的web應用配置
摘要: 用Eclipse開發web應用的人大概有兩撥,一邊是直接用Eclipse JEE版本做開發的,另外一邊是用MyEclipse這個龐然大物的。二者各有優缺點,我覺得使用MyEclipse的大集成試的開發對于初學者來說可能可以省去很多基礎的事情,便于入門。而對于高于入門水平的伙子們來說,我想基本的Eclipse才是更好的選擇。一方面MyEclipse的Add XXX Capabilities不管3721加入全部庫文件的做法對項目是一種污染,另外一方面隱藏的東西多了不利于個人對具體實現的學習。
閱讀全文
關于攔截器
摘要: 在水木回一個大牛的帖子討論攔截器,也發到這里。
所謂攔截,是新媳婦回娘家,路遇強盜。重要的是她能不能回家已經取決與強盜而不是自己。
閱讀全文
關于模型的獨立性
摘要: 文字寫完以后,突然想起來很久以前在JavaEye上看的關于貧血模型、富血模型、充血模型的討論。最后的結論大概與持久化無關的業務邏輯應該放在模型中實現,而與持久化有關的邏輯要放到Service中實現??催@幾多文字,其實也就是說這么個意思,不過多說一些。閑話休提,正文開始。
在大結構上系統描述為上面的圖形。關鍵元素是領域模型、領域服務、基礎服務。能夠精準的反應業務的模型,和圍繞模型的有效的服務,是軟件團隊在某一行業領域生產成果價值的兩個很重要的體現。領域服務作為系統的核心邏輯之一,一方面,承擔著完成所有與技術環境相關的業務邏輯的實現,另外一方面,作為領域模型和技術環境的緩沖,保證了領域模型的普適、獨立。
閱讀全文
工廠模式ABC
摘要: 這段文字最初是回復水木上一個mm的問題,問為什么要用工廠,整理之后,發到這里來。
工廠模式是創建模式,封裝對象的創建過程。對象的創建最簡單的方式是new出來,但是有一些情況下用new來創建對象會導致代碼難以維護。
閱讀全文
切換Maven版本時候出現的問題
摘要: 切換Maven版本時候出現錯誤的解決
閱讀全文
Struts請求處理過程簡要描述
摘要: 翻了一下Struts2的代碼,理出了一個基本執行流程,應改可以對struts的結構有個了解了,另外,也可以由此找到一些擴展點。
閱讀全文
Ext.XTemplate使用入門
摘要: Ext.XTemplate是Ext中關于頁面模板的一個組件。用來將數據和模板組合出最終的html。所謂數據指的是javascript的對象。EMP在loadEntityToPage中使用了這個組件。
閱讀全文
當JsonPlugin遇到CGLib
摘要: JsonPlugin在分析類結構并序列化時,對于CGLig動態生成的類也是按照一般類來看待的。這就導致了兩個問題:一個是去序列化了生成的子類中的本不應該序列化的屬性,另外一個是由于CGLIB導致的Annotation丟失而引起的本不應該發生的序列化邏輯。簡單的修改了一下JSONPlugin的代碼,來避免上述的兩個問題。
閱讀全文
在基于Spring及Hibernate應用程序中使用ETags降低帶寬占用和服務器壓力
摘要: Gavin Terrill 發表于2007.7.11 上午 8:45
討論區:Java 主題:Web框架、集群及緩存
導言
REST方式的應用程序構架在近日所產生的巨大影響突出了Web應用程序的優雅設計的重要性?,F在人們開始理解“WWW架構”內在的可測量性及彈性,并且已經開始探索使用其范例的更好的方式。在本文中,我們將討論一個Web應用開發工具——“簡陋的、卑下的”ETags,以及如何在基于SpringFramework的動態Web應用程序中集成這個工具,來提高應用的性能及可測性。
我們將要使用的基于Spring的應用程序是基于“petclinic”(寵物門診?)的一個應用。在您下載的程序包中,包含了如何加入必要的配置和源代碼讓你親自體驗該程序的介紹。
閱讀全文
關于Atlassian的兩個軟件 JIRA 和 Confluence
摘要: Atlassian Confluence(簡稱Confluence)是一個專業的wiki程序。它是一個知識管理的工具,通過它可以實現團隊成員之間的協作和知識共享。
Confluence使用簡單,但它強大的編輯和站點管理特征能夠幫助團隊成員之間共享信息,文檔協作,集體討論。目前,Confluence被用于廣泛地用于項目團隊,開發團隊,市場銷售團隊。
閱讀全文
長標題顯示字數處理
摘要: 很多情況下,我們需要控制長標題的顯示字數。在客戶端用JavaScript控制顯示最大字數后,由于js把任何字符都當作1個長度來處理,由此導致全角和半角字符顯示的實際長度不同。
例如我們設置某個文章列表頁面所有的文章標題最長顯示10個字符。那么如下的題目:
這篇文章是測試標題長度顯示的文章
I love my country.I love all of you.
處理后,將分別顯示為:
這篇文章是測試標題長
I love my (注意最后還有一個空格)
假設我們是按照中文的寬度來確定10個字符這個標準的,那么當標題是英文等半角字符時,顯然太短了。反過來,如果我們按照英文等半角字符來確定顯示字符數量標準,那么如果題目是中文的時候,又很容易出現自動換行等我們不希望出現的結果。
本文嘗試以一種笨拙的辦法處理這個問題。即使用js檢查字符串中的每一個字符,如果發現有兩個(注意不一定相連)的半角字符,那么就將顯示長度標準加1。
閱讀全文
提高Hibernate 3 啟動速度(翻譯)
摘要: 原文地址:http://www.hibernate.org/300.html
在Tomcat5.5.x環境下,調用Configuration().addCacheableFile來載入配置,建立Hibernate SessionFactory,成功地提高了載入速度。
推薦你只是在開發階段采用這樣的方式載入,最后的產品發布階段你仍需使用經典的Hibernate.cfg.xml文件,通過Tomcat的ServletContextListener API在應用程序部署的時候建立Hibernate SessionFactory,而不是在程序第一次調用Hiberante的時候。
閱讀全文
一些鏈接(二)——關于緩存
摘要: Spring框架的聲明式緩存服務
Spring框架提供了聲明式的緩存服務,看樣子似乎不錯:
原文地址:http://dev2dev.bea.com/pub/a/2006/05/declarative-caching.html
中文譯文:http://www.crackj2ee.com/Article/ShowArticle.asp?ArticleID=661
閱讀全文
DWR學習記錄
摘要: 一、概念
DWR(Direct Web Remoting),中文翻譯成“直接Web遠程控制”。我認為就是將AJAX作了一次封裝,并提供與服務器端Java組件進行交互的一個組件。在其官方網站(http://getahead.ltd.uk/dwr)上說得很清楚,“DWR is Easy Ajax for Java”。DWR允許客戶端的javascript與服務器端的Java進行交互,并根據其交互結果,控制網頁的表現。
閱讀全文
J2SE5.0新特性——out.printf
摘要: JDK5.0 沿用了C語言庫函數中的printf方法,例如,如下:
System.out.printf("%8.2f",x);
閱讀全文
J2SE5.0新特性——for each循環
摘要: 這個語法是5.0新增的,據說是從C#里面借鑒過來的。
閱讀全文
J2SE5.0新特性——靜態導入(解決我的Config問題)
摘要: 昨天買了Core Java2 第七版的上卷。開始閱讀就看到了許多J2SE的新特性,呵呵,很是激動人心。我會發一系列的文章來介紹。首先這一篇講靜態導入,解決我上面的Config問題。
本文分三個部分:
1,講述我上面遇到的Config問題的大概和目前的解決方法
2,講述用了靜態導入后的解決方法
3,對靜態導入的介紹,簡單實例。
閱讀全文
項目總結(一個數據采集網站)——Spring
摘要: 談到構架,總是會想起前面看到banq寫的一篇文章,叫做重與輕的永恒話題。是討論使用EJB等重量級框架和Spring,Jdon之類的輕量級框架采用POJO實現業務。俺是小人物,沒學過EJB,而對Spring倒是有一點了解。所以這次就用Spring了。
閱讀全文
項目總結(一個數據采集網站)——工作
摘要: 從5.1開始,整整寫了6天程序到5.6,期間沒洗過澡,基本上沒出過校園,很少出宿舍。同學從家鄉來玩住我宿舍我只去天安門接了一趟,去西站送了一趟。6天,簡直是非人的生活。
于是昨天終于把自己該做的部分也就是主體部分全部完成了。剩下的一點街面上的修改雨點來做。
閱讀全文