| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
24 | 25 | 26 | 27 | 28 | 29 | 30 | |||
1 | 2 | 3 | 4 | 5 | 6 | 7 | |||
8 | 9 | 10 | 11 | 12 | 13 | 14 | |||
15 | 16 | 17 | 18 | 19 | 20 | 21 | |||
22 | 23 | 24 | 25 | 26 | 27 | 28 | |||
29 | 30 | 31 | 1 | 2 | 3 | 4 |
前面講到我在做2BizBox ERP開發的時候,遇到導入數據的需求,然后我用JXL對Excel進行了一些操作。
但我們不能讓用戶輸入“1,2”這種坐標吧,如客戶編號坐標;用戶肯定喜歡用Excel的坐標,A1,B1等來表示。來個圖看看:
所以就要求程序把A1,B1等轉換成JXL認識的坐標。
第一步:校驗數據,看是否符合Excel坐標表示法,我用的是正則
第二步:把字母轉化成數字
代碼供參考
publicstaticint[] splitExcelCell(String coordinate) {
coordinate = coordinate.trim().toUpperCase();
int[] colAndRow =newint[2];
if (coordinate.matches("[A-Z]{1,2}[0-9]+")) {
StringBuffer tmpS = new StringBuffer();
for (int i = 0; i < coordinate.length(); i++) {
char c =coordinate.charAt(i);
if (c >= 48 && c <= 57) {
colAndRow[0] = Integer.parseInt(coordinate.substring(i));
break;
}
tmpS.append(c);
}
colAndRow[1] = splitExcelCol(tmpS.toString());
}
return colAndRow;
}
publicstaticint splitExcelCol(String coordinate) {
coordinate = coordinate.trim().toUpperCase();
int colNumber = 0;
if (coordinate.matches("[A-Z]{1,2}")) {
if (coordinate.length() == 1) {
int k = coordinate.charAt(0) - 64;
colNumber = k;
}
elseif (coordinate.length() == 2) {
int i = coordinate.charAt(0) - 64;
int j = coordinate.charAt(1) - 64;
colNumber = i * 26 + j;
}
}
return colNumber;
}
當然程序也要做一些判斷,如果用戶輸入有誤的話,報一些錯誤提示。
大家知道TWaver Java總的TList繼承自Swing的JList,所以我們可以很容易控制其選擇,例如單選、多選等。但是本文介紹如何控制按指定數量進行選擇。
人生就是一個不停選擇的過程。所以,我們必須要謹慎的控制好你的選擇,無論是TList的SelectionModel,還是人生之路。
在實際項目中,我們經常需要對list進行不能超過限定數量的多重選擇控制。本文用到的技巧可能是本站最簡單的一次了:利用DataBox的SelectionModel,當選擇總數超過限定,就將最早的選擇刪除。
其中max我們可以指定。乳溝max=1則變成了單選。
通過這個思路,本文寫了一個很簡單的例子:通過控制多選數量,制作一個簡單的點菜選擇。相信你的系統中也經常會有類似的場景:通過list讓用戶選擇指定數量的數據。
Java很早就推出了Java Web Start(簡稱JWS)技術。這一技術的初衷很好:希望將桌面程序和Web頁面之間搭起一個無縫的橋梁。雖然Applet技術已經存在了十多年,但是它日趨老邁衰落,所以JWS也就應運而生了。
但是JWS并未順利實現它的初衷。從Java的幾次大改版都可以看到,JWS的bug多多,漏洞頻頻,Sun和Oracle不得不頻繁的進行打補丁 修復??梢钥纯碕ava 5和6每次大小版本升級變化中,有多少是和Java Web Start有關的。難怪很多人都這樣感嘆:“哥再也不用Java Web Start部署應用了!”其實也未必,隨著Java的不斷完善,我們只要了解更多的技巧,就可以有效的消除一些JWS潛在的問題,并順利的應用在企業應用 中。
以2BizBox ERP項目為例,本文介紹如何在企業應用中利用動態生成JNLP文件的技術來實現應用的快速部署。
大家知道,2BizBox ERP作為一個免費的高質量ERP軟件,有成千上萬的用戶。就我們開發團隊負責維護的服務器,就有近千臺。每臺服務器都是一家企業,每家企業又有幾十上百 的客戶端。如果采用下載客戶端安裝程序進行安裝的方式來維護諸多的客戶端,無疑是巨大的工作量,用戶和我們開發團隊都不會輕松方便。為了解決這一問題,采 用JWS無疑是必然的選擇。
為了讓客戶端自動啟動下載和安裝程序,我們在企業的2BizBox ERP服務器上部署以下JNLP文件內容:
上面的JNLP文件定義了2BizBox ERP客戶端啟動所需要的jar包以及下載位置、jre版本等。
在實際應用中,效果良好。但是由于JNLP和JWS本身的bug,在某些情況下,后臺jar程序更新升級后,用戶側啟動jnlp并不能獲得更新,需 要強行清空JWS緩存才行,這肯定不是一般用戶懂得的。還有一種情況,就是由于ERP本身的jar包發生了變化(例如發生了增減),此時相當于jnlp文 件的內容發生了變化。這時候,要求用戶一側機器必須意識到jnlp的變化并先將jnlp進行更新。在很多java版本中(例如jre6的早期版本——例如 jre6 update20之前),由于潛在的一些bug等原因,都不能順利的進行更新,導致程序啟動失敗。
如何解決這一情況呢?采用動態jnlp是一個有效的方法。
動態jnlp的思路是:在服務器的后端,通過jsp或servlet來動態的生成一個jnlp文件,而不是放置一個靜態的固定不變的jnlp文件。這樣,jnlp文件內容就可以通過后臺應用的邏輯進行動態生成創建:需要什么jar包、需要什么jre版本等等。
以jsp為例。在這個jsp中,首先要注意的幾個技術點是:要設置本頁面不要被瀏覽器緩存,放置jnlp內容變化無法及時被更新;其次要設置 mime類型讓瀏覽器認為它是一個jnlp文件,以便下載執行而不是直接在瀏覽器中顯示出來。通過設置response即可達到這些目的:
其中,禁止瀏覽器和webstart緩存jnlp內容,通過設置:response.setHeader(“Pragma”, “no-cache”);和response.setHeader(“Expires”, “0″);
設置文件類型,并給定一個動態的文件名。這個通過這個進行:response.setHeader(“Content-Disposition”, “filename=\”bb.jnlp\”;”);response.setContentType(“application/x-java-jnlp-file”);
一個需要注意的問題是,在動態生成jnlp文件時,要注意jnlp文件中的href標簽不要進行設置。為什么呢?看一下jnlp的格式文檔是這樣說的:
http://lopica.sourceforge.net/ref.html#jnlp
The jnlp file's one and only root.
Attributes
spec=version , optional
Specifies what versions of the jnlp spec a jnlp file works with. The default value is 1.0+. Thus, you can typically leave it out.
version=version , optional
Specifies the version of the application as well as the version of the jnlp file itself.
codebase=url , optional
Specifies the codebase for the application. Codebase is also used as base URL for all relative URLs in href attributes.
href=url , optional
Contains the location of the jnlp file as a URL. If you leave out the href attribute, Web Start will disable the update check on your JNLP file, and Web Start will not treat each new JNLP file as an application update - only updated jar files will. Leaving out href usually makes only sense if your jnlp file is created dynamically (that is, throug a cgi-script, for example) and if your jnlp file's arguments or properties change from request to request (user to user).
Note, that Java Web Start needs href to list your app in the Web Start Application Manager.
可見在動態生成jnlp時候就不要設置href了,這樣就可以保證每次瀏覽器會重新下載jnlp文件內容,否則可能會被緩存,無法及時更新程序。
另外一個技巧是:jnlp文件中的jar包,可以進行動態檢查文件jar包并動態生成。這樣,如果以后程序的jar文件有增減,就不必修改jnlp文件了。方法也很簡單:檢查當前web在服務器的絕對路徑,并list所有的jar文件,然后在jnlp生成時候輸出即可:
然后在jar的部分這樣列出:
最后,如果需要在jnlp中指定當前服務器的ip地址或主機地址,也可以通過動態生成。例如jnlp文件中的codebase,就是如此。另 外,2BizBox ERP還需要在主函數中給出當前服務器的ip地址。而對于上千家的2BizBox服務器,每個jnlp要手工維護ip地址,是不可想象的。這里通過動態生 成,就永遠的解決了這個問題:
然后在jnlp中:
這樣,通過jsp動態生成jnlp的方案就完成了。它在2BizBox ERP中應用良好,方便的讓上千家2BizBox ERP的云主機用戶快速得到程序更新,而簡化了程序的維護方式。
2BizBox API v3.3.1已經提供發布。此次發布的主要更新內容涵蓋:
簡單說,新的api,您可以:
1、開發各種與2BizBox ERP v3.3.1進行集成的應用;
2、開發各種App應用程序與插件。
歡迎大家下載:http://www.2bizbox.cn/wiki/index.php/2BizBox_API%E4%B8%8B%E8%BD%BD
時間:2011年8月22-24日
地址:中國上海新國際博覽中心(上海浦東新區龍陽路2345號)
2011年8月22~24日,2BizBox將參加第三屆中國(上海)國際石油化工技術裝備展覽會。其由中國石油和石油化工設備工業協會、中國國際貿易促進委員會化工行業分會及北京振威展覽有限公司主辦。cippe是國際石油石化行業例會,是中國大陸第22個獲得國際展覽聯盟UFI認證的高品質展會,每年春季在北京、秋季在上海舉辦,已成為全球最大石油展。
2BizBox 位于W1展館W 1608展位,歡迎2BizBox的廣大用戶及關注與支持2BizBox的各位同仁蒞臨參觀指導。
2BizBox是一款世界頂級免費ERP軟件,致力于為全球中小企業與制造企業提供高質量的免費ERP軟件。屆時,我們將展出2BizBox最新功能演示及典型案例分析,與大家共同分享。
更多展會詳細信息請訪問:http://www.cippe.com.cn/
2BizBox推出“合作伙伴聯盟”計劃,誠邀各界優秀公司和個人加盟,共同為2BizBox用戶提供豐富、專業、高質量的軟件增值服務。
研究顯示,全球需要企業信息化服務的中小企業市場有300~500億美元,且在持續增長中。中國作為中小企業數量龐大的制造業大國,這一情況尤為突 出。大多數中小企業尚未建立有效的信息化管理手段。這些中小企業的普遍特征是:資金薄弱、管理不完善、信息化基礎較差。隨著市場競爭的日益激烈,中小企業 也紛紛開始信息化建設,但很多嘗試并實施信息化的企業無法得到高質量的服務,導致信息化效果不佳。
2BizBox作為免費ERP的急先鋒,在倡導軟件即服務的理念下,推出短短數月以來,已經獲得整個ERP行業的關注。目前軟件下載量已累計超過 50萬次,論壇日訪問量超過1萬PV,活躍用戶超過1000。很多企業正在積極研究、評估和學習2BizBox軟件,并即將進入實施階段。大量的 2BizBox用戶產生了龐大的服務需求市場,用戶期望獲得更加豐富、本地化的2BizBox軟件服務。
為此,2BizBox籌建2BizBox“合作伙伴聯盟”,希冀共同為2BizBox用戶提供豐富、高質量的軟件增值服務。我們在全國范圍內,誠邀 企業與有識之士加盟2BizBox“合作伙伴聯盟”,2BizBox歡迎您加入合作伙伴聯盟,共享品牌、共享產品、共享市場、共享信息。
無論您是任何行業的公司、企業或個人,只要您符合以下任意一項,您就可以成為我們的合作伙伴:
1. 合作伙伴需填寫《合作伙伴聯盟申請表》,由2BizBox團隊進行評估批準。
2. 合作伙伴需具備一定的專業知識,并通過培訓取得相應的認證資質。
3. 合作伙伴目錄及實施案例將在2BizBox官方網站適時更新。
4. 合作伙伴可在授權期間和地域內開展指定的服務項目。
5. 雙方需簽署《合作伙伴聯盟協議》,嚴重違反協議者,將終止合作伙伴資質,并追究其相應責任。
聯系人:李經理
咨詢專線:021-6439 8788(轉)809
咨詢熱線:15900424005
傳真:021-6439 5374
咨詢郵箱:slong.li@servasoftware.com