32、十六種濾鏡:
1.?Alpha:設(shè)置透明度
Alpha(Opacity=?,?FinishOpacity=?,?Style=?,?StartX=?,?StartY=?,?FinishX=?,?FinishY=?)
Opacity:透明度級(jí)別,范圍是0-100,0代表完全透明,100代表完全不透明。
FinishOpacity:設(shè)置漸變的透明效果時(shí),用來指定結(jié)束時(shí)的透明度,范圍也是0?到?100。
Style:設(shè)置漸變透明的樣式,值為0代表統(tǒng)一形狀、1代表線形、2代表放射狀、3代表長方形。
StartX和StartY:代表漸變透明效果的開始X和Y坐標(biāo)。
FinishX和FinishY:代表漸變透明效果結(jié)束X和Y?的坐標(biāo)。
2.?BlendTrans:圖像之間的淡入和淡出的效果
BlendTrans(Duration=?)
Duration:淡入或淡出的時(shí)間。
注意:這個(gè)濾鏡必須配合JS建立圖片序列,才能做出圖片間效果。
3.?Blru:建立模糊效果
Blur(Add=?,?Direction=?,?Strength=?)
Add:是否單方向模糊,此參數(shù)是一個(gè)布爾值,true(非0)或false(0)。
Direction:設(shè)置模糊的方向,其中0度代表垂直向上,然后每45度為一個(gè)單位。
Strength:代表模糊的象素值。
4.?Chroma:把指定的顏色設(shè)置為透明
Chroma(Color=?)
Color:是指要設(shè)置為透明的顏色。
5.?DropShadow:建立陰影效果
DropShadow(Color=?,?OffX=?,?OffY=?,?Positive=?)
Color:指定陰影的顏色。
OffX:指定陰影相對(duì)于元素在水平方向偏移量,整數(shù)。
OffY:指定陰影相對(duì)于元素在垂直方向偏移量,整數(shù)。
Positive:是一個(gè)布爾值,值為true(非0)時(shí),表示為建立外陰影;為false(0),表示為建立內(nèi)陰影。
6.?FlipH:將元素水平反轉(zhuǎn)
7.?FlipV:將元素垂直反轉(zhuǎn)
8.?Glow:建立外發(fā)光效效果
Glow(Color=?,?Strength=?)
Color:是指定發(fā)光的顏色。
Strength:光的強(qiáng)度,可以是1到255之間的任何整數(shù),數(shù)字越大,發(fā)光的范圍就越大。
9.?Gray:去掉圖像的色彩,顯示為黑白圖象
10.?Invert:反轉(zhuǎn)圖象的顏色,產(chǎn)生類似底片的效果
11.?Light:放置光源的效果,可以用來模擬光源在物體上的投影效果
注意:此效果需要用JS設(shè)置光的位置和強(qiáng)度。
12.?Mask:建立透明遮罩
Mask(Color=?)
Color:設(shè)置底色,讓對(duì)象遮住底色的部分透明。
13.?RevealTrans:建立切換效果
RevealTrans(Duration=?,?Transition=?)
Duration:是切換時(shí)間,以秒為單位。
Transtition:是切換方式,可設(shè)置為從0到23。
注意:如果做頁面間的切換效果,可以在<head>區(qū)加上一行代碼:<Meta?http-equiv=Page-enter?content=revealTrans(Transition=?,Duration=?)?>。如果用在頁面里的元素必須配合JS使用。
14.?Shadow:建立另一種陰影效果
Shadow(Color=?,?Direction=?)
Color:是指陰影的顏色。
Direction:是設(shè)置投影的方向,0度代表垂直向上,然后每45度為一個(gè)單位。
15.?Wave:波紋效果
Wave(Add=?,?Freq=?,?LightStrength=?,?Phase=?,?Strength=?)
Add:表示是否顯示原對(duì)象,0表示不顯示,非0表示要顯示原對(duì)象。
Freq:設(shè)置波動(dòng)的個(gè)數(shù)。
LightStrength:設(shè)置波浪效果的光照強(qiáng)度,從0到100。0表示最弱,100表示最強(qiáng)。
Phase:波浪的起始相角。從0到100的百分?jǐn)?shù)值。(例如:25相當(dāng)于90度,而50相當(dāng)于180度。)
Strength:設(shè)置波浪搖擺的幅度。
16.?Xray:顯現(xiàn)圖片的輪廓,X光片效果
posted @
2006-10-31 20:43 larryjava 閱讀(312) |
評(píng)論 (0) |
編輯 收藏
http://pickup.mofile.com/cn/pickupok.do
http://xqsoft.blog.hexun.com/2282047_d.html
posted @
2006-10-28 10:39 larryjava 閱讀(174) |
評(píng)論 (0) |
編輯 收藏
前言,有好多朋友曾經(jīng)問我如何做出很美觀的用戶界面程序,比如做個(gè)蘋果的界面,做個(gè)XP的界面,當(dāng)時(shí)我也很頭疼,因?yàn)閖dk當(dāng)時(shí)只是1.3,Sun并沒有像今天那樣把java做的如此成功,所以當(dāng)時(shí)似乎解決不了,現(xiàn)在好了,jdk1.4開始支持java自定義外觀,那我們就開始研究吧.自定義呢網(wǎng)上有教材,可以自己找,而且看看plf.LookAndFeel的實(shí)現(xiàn)類,自己可以研究一下,這里不談?wù)?主要討論第三方組件的實(shí)現(xiàn).
1. Mac及Office2003? Windows xp等外觀模式? OS:?? Windows XP
???????????????????? JDK:? 5.0 Update 6?? 所用到的組件?? substance.jar
御覽圖片:?? https://substance.dev.java.net/
下載地址:?? https://substance.dev.java.net/
2. 好看的各種外觀組件??? l2fprod-common-all.jar
御覽圖片:? https://l2fprod-common.dev.java.net/
下載地址:? https://l2fprod-common.dev.java.net/
3. OfficeLnFs - Microsoft Office XP & 2003 Look and Feels for Java Swing
?? 用到的組件??? OfficeLnFs.jar
御覽圖片:?? http://officelnfs.sourceforge.net/
下載地址:?? http://officelnfs.sourceforge.net/
4. 漂亮的跨平臺(tái)Swing 界面外觀模式
用到的組件?? Quaqua 3.5_3.jar
御覽圖片?:? https://pgslookandfeel.dev.java.net/
下載地址:?? https://pgslookandfeel.dev.java.net/
以上的應(yīng)該夠了,把他們打包到你的application里我想會(huì)給你的軟件增色不少,如果上面找不到下載點(diǎn),這里有備用下載地址http://my.mofile.com/xqsoft
??????? 另外提供大家一個(gè)很全的組件庫http://www.open-open.com基本上是想到的就有~~~
??????????????????????????????????????????????????????? (原創(chuàng) By ♂草龍 轉(zhuǎn)載請(qǐng)注明出處)
posted @
2006-10-28 10:38 larryjava 閱讀(301) |
評(píng)論 (0) |
編輯 收藏
JS的IE和Firefox兼容性匯編(原作:hotman_x)?????????????????????????????????????
以下以?IE?代替?Internet?Explorer,以?MF?代替?Mozzila?Firefox
1.?document.form.item?問題
????(1)現(xiàn)有問題:
????????現(xiàn)有代碼中存在許多?document.formName.item("itemName")?這樣的語句,不能在?MF?下運(yùn)行
????(2)解決方法:
????????改用?document.formName.elements["elementName"]
????(3)其它
????????參見?2
2.?集合類對(duì)象問題
????(1)現(xiàn)有問題:
????????現(xiàn)有代碼中許多集合類對(duì)象取用時(shí)使用?(),IE?能接受,MF?不能。
????(2)解決方法:
????????改用?[]?作為下標(biāo)運(yùn)算。如:document.forms("formName")?改為?document.forms["formName"]。
????????又如:document.getElementsByName("inputName")(1)?改為?document.getElementsByName("inputName")[1]
????(3)其它
3.?window.event
????(1)現(xiàn)有問題:
????????使用?window.event?無法在?MF?上運(yùn)行
????(2)解決方法:
????????MF?的?event?只能在事件發(fā)生的現(xiàn)場(chǎng)使用,此問題暫無法解決??梢赃@樣變通:
????????原代碼(可在IE中運(yùn)行):
????????????<input?type="button"?name="someButton"?value="提交"?onclick="javascript:gotoSubmit()"/>
????????????...
????????????<script?language="javascript">
????????????????function?gotoSubmit()?{
????????????????????...
????????????????????alert(window.event);????//?use?window.event
????????????????????...
????????????????}
????????????</script>
????????新代碼(可在IE和MF中運(yùn)行):
????????????<input?type="button"?name="someButton"?value="提交"?onclick="javascript:gotoSubmit(event)"/>
????????????...
????????????<script?language="javascript">
????????????????function?gotoSubmit(evt)?{
????????????????????evt?=?evt???evt?:?(window.event???window.event?:?null);
????????????????????...
????????????????????alert(evt);?????????????//?use?evt
????????????????????...
????????????????}
????????????</script>
????????此外,如果新代碼中第一行不改,與老代碼一樣的話(即?gotoSubmit?調(diào)用沒有給參數(shù)),則仍然只能在IE中運(yùn)行,但不會(huì)出錯(cuò)。所以,這種方案?tpl?部分仍與老代碼兼容。
4.?HTML?對(duì)象的?id?作為對(duì)象名的問題
????(1)現(xiàn)有問題
????????在?IE?中,HTML?對(duì)象的?ID?可以作為?document?的下屬對(duì)象變量名直接使用。在?MF?中不能。
????(2)解決方法
????????用?getElementById("idName")?代替?idName?作為對(duì)象變量使用。
5.?用idName字符串取得對(duì)象的問題
????(1)現(xiàn)有問題
????????在IE中,利用?eval(idName)?可以取得?id?為?idName?的?HTML?對(duì)象,在MF?中不能。
????(2)解決方法
????????用?getElementById(idName)?代替?eval(idName)。
6.?變量名與某?HTML?對(duì)象?id?相同的問題
????(1)現(xiàn)有問題
????????在?MF?中,因?yàn)閷?duì)象?id?不作為?HTML?對(duì)象的名稱,所以可以使用與?HTML?對(duì)象?id?相同的變量名,IE?中不能。
????(2)解決方法
????????在聲明變量時(shí),一律加上?var?,以避免歧義,這樣在?IE?中亦可正常運(yùn)行。
????????此外,最好不要取與?HTML?對(duì)象?id?相同的變量名,以減少錯(cuò)誤。
????(3)其它
????????參見?問題4
7.?event.x?與?event.y?問題
????(1)現(xiàn)有問題
????????在IE?中,event?對(duì)象有?x,?y?屬性,MF中沒有。
????(2)解決方法
????????在MF中,與event.x?等效的是?event.pageX。但event.pageX?IE中沒有。
????????故采用?event.clientX?代替?event.x。在IE?中也有這個(gè)變量。
????????event.clientX?與?event.pageX?有微妙的差別(當(dāng)整個(gè)頁面有滾動(dòng)條的時(shí)候),不過大多數(shù)時(shí)候是等效的。
????????如果要完全一樣,可以稍麻煩些:
????????mX?=?event.x???event.x?:?event.pageX;
????????然后用?mX?代替?event.x
????(3)其它
????????event.layerX?在?IE?與?MF?中都有,具體意義有無差別尚未試驗(yàn)。
8.?關(guān)于frame
???(1)現(xiàn)有問題
?????????在?IE中?可以用window.testFrame取得該frame,mf中不行
???(2)解決方法
?????????在frame的使用方面mf和ie的最主要的區(qū)別是:
如果在frame標(biāo)簽中書寫了以下屬性:
<frame?src="xx.htm"?id="frameId"?name="frameName"?/>
那么ie可以通過id或者name訪問這個(gè)frame對(duì)應(yīng)的window對(duì)象
而mf只可以通過name來訪問這個(gè)frame對(duì)應(yīng)的window對(duì)象
例如如果上述frame標(biāo)簽寫在最上層的window里面的htm里面,那么可以這樣訪問
ie:?window.top.frameId或者window.top.frameName來訪問這個(gè)window對(duì)象
mf:?只能這樣window.top.frameName來訪問這個(gè)window對(duì)象
另外,在mf和ie中都可以使用window.top.document.getElementById("frameId")來訪問frame標(biāo)簽
并且可以通過window.top.document.getElementById("testFrame").src?=?'xx.htm'來切換frame的內(nèi)容
也都可以通過window.top.frameName.location?=?'xx.htm'來切換frame的內(nèi)容
關(guān)于frame和window的描述可以參見bbs的‘window與frame’文章
以及/test/js/test_frame/目錄下面的測(cè)試
----adun?2004.12.09修改
9.?在mf中,自己定義的屬性必須getAttribute()取得
10.在mf中沒有??parentElement?parement.children??而用
???????????????parentNode?parentNode.childNodes
???childNodes的下標(biāo)的含義在IE和MF中不同,MF使用DOM規(guī)范,childNodes中會(huì)插入空白文本節(jié)點(diǎn)。
??一般可以通過node.getElementsByTagName()來回避這個(gè)問題。
???當(dāng)html中節(jié)點(diǎn)缺失時(shí),IE和MF對(duì)parentNode的解釋不同,例如
???<form>
???<table>
????????<input/>
???</table>
???</form>
???MF中input.parentNode的值為form,?而IE中input.parentNode的值為空節(jié)點(diǎn)
??MF中節(jié)點(diǎn)沒有removeNode方法,必須使用如下方法?node.parentNode.removeChild(node)
11.const?問題
??(1)現(xiàn)有問題:
?????在?IE?中不能使用?const?關(guān)鍵字。如?const?constVar?=?32;?在IE中這是語法錯(cuò)誤。
??(2)解決方法:
?????不使用?const?,以?var?代替。
12.?body?對(duì)象
???MF的body在body標(biāo)簽沒有被瀏覽器完全讀入之前就存在,而IE則必須在body完全被讀入之后才存在
13.?url?encoding
在js中如果書寫url就直接寫&不要寫&例如var?url?=?'xx.jsp?objectName=xx&objectEvent=xxx';
frm.action?=?url那么很有可能url不會(huì)被正常顯示以至于參數(shù)沒有正確的傳到服務(wù)器
一般會(huì)服務(wù)器報(bào)錯(cuò)參數(shù)沒有找到
當(dāng)然如果是在tpl中例外,因?yàn)閠pl中符合xml規(guī)范,要求&書寫為&
一般MF無法識(shí)別js中的&
14.?nodeName?和?tagName?問題
??(1)現(xiàn)有問題:
?????在MF中,所有節(jié)點(diǎn)均有?nodeName?值,但?textNode?沒有?tagName?值。在?IE?中,nodeName?的使用好象
?????有問題(具體情況沒有測(cè)試,但我的IE已經(jīng)死了好幾次)。
??(2)解決方法:
?????使用?tagName,但應(yīng)檢測(cè)其是否為空。
15.?元素屬性
???IE下?input.type屬性為只讀,但是MF下可以修改
16.?document.getElementsByName()?和?document.all[name]?的問題
??(1)現(xiàn)有問題:
?????在?IE?中,getElementsByName()、document.all[name]?均不能用來取得?div?元素(是否還有其它不能取的元素還不知道)。
posted @
2006-10-27 09:38 larryjava 閱讀(242) |
評(píng)論 (0) |
編輯 收藏
摘要: 首先讓我們來復(fù)習(xí)下一什么是多線程?
多線程是這樣一種機(jī)制,它允許在程序中并發(fā)執(zhí)行多個(gè)指令流,每個(gè)指令流都稱為一個(gè)線程,彼此間互相獨(dú)立。
線程又稱為輕量級(jí)進(jìn)程,它和進(jìn)程一樣擁有獨(dú)立的執(zhí)行控制,由操作系統(tǒng)負(fù)責(zé)調(diào)度,區(qū)別在于線程沒有獨(dú)立的存儲(chǔ)空間,而是和所屬進(jìn)程中的其它線程共享一個(gè)存儲(chǔ)空間,這使得線程間的通信遠(yuǎn)較進(jìn)程簡單。
多個(gè)線程的執(zhí)行是并發(fā)的,也就是在邏輯上...
閱讀全文
posted @
2006-10-27 09:36 larryjava 閱讀(398) |
評(píng)論 (0) |
編輯 收藏
使用Java將Word轉(zhuǎn)為Html或txt。前一段時(shí)間為這個(gè)問題頭疼的不得了,后來查閱了資料終于解決了;現(xiàn)將程序放出,以便以后參考。
//------------------------------------------------------------------------------
//版權(quán)所有 (C) 浪潮集團(tuán)商用系統(tǒng)有限公司? 保留所有權(quán)利
//文件名稱: wordtohtml?????????? 文件版本: 1.00.00
//作??? 者: 郭鑄???? 作者郵箱:
guozhu@langchao.com? 完成日期: 2004-10-20
//文件描述:
//其它描述:
//類 列 表:
//? wordtohtml: 將指定目錄下面所有的doc文件轉(zhuǎn)化為HTML并存儲(chǔ)在相同目錄下
//修改歷史:
//? #?? 版本???? 修改日期??? 作者???????????????? 修改內(nèi)容
//? ----------------------------------------------------------------------------
//? 1?? 1.00.01? 2004-10-14? 作者姓名???????????? 修改內(nèi)容描述
//? ----------------------------------------------------------------------------
//------------------------------------------------------------------------------
import com.jacob.com.*;
import com.jacob.activeX.*;
import java.io.*;
//取得指定目錄下面所有的doc文件名稱
public class wordtohtml
{
//------------------------------------------------------------------------------
//方法原型: change(String paths)
//功能描述: 將指定目錄下面所有的doc文件轉(zhuǎn)化為HTML并存儲(chǔ)在相同目錄下
//輸入?yún)?shù): String
//輸出參數(shù): 無
//返 回 值: 無
//其它說明: 遞歸
//------------------------------------------------------------------------------
public static void change(String paths, String savepaths)
{
File d = new File(paths);
//取得當(dāng)前文件夾下所有文件和目錄的列表
File lists[] = d.listFiles();
String pathss = new String("");
//對(duì)當(dāng)前目錄下面所有文件進(jìn)行檢索
for(int i = 0; i < lists.length; i ++)
{
if(lists[i].isFile())
{
String filename = lists[i].getName();
String filetype = new String("");
//取得文件類型
filetype = filename.substring((filename.length() - 3), filename.length());
//判斷是否為doc文件
if(filetype.equals("doc"))
{
System.out.println("當(dāng)前正在轉(zhuǎn)換......");
//打印當(dāng)前目錄路徑
System.out.println(paths);
//打印doc文件名
System.out.println(filename.substring(0, (filename.length() - 4)));
ActiveXComponent app = new ActiveXComponent("Word.Application");//啟動(dòng)word
String docpath = paths + filename;
String htmlpath = savepaths + filename.substring(0, (filename.length() - 4));
String inFile = docpath;
//要轉(zhuǎn)換的word文件
String tpFile = htmlpath;
//HTML文件
boolean flag = false;
try
{
app.setProperty("Visible", new Variant(false));
//設(shè)置word不可見
Object docs = app.getProperty("Documents").toDispatch();
Object doc = Dispatch.invoke(docs,"Open", Dispatch.Method, new Object[]{inFile,new Variant(false), new Variant(true)}, new int[1]).toDispatch();
//打開word文件
Dispatch.invoke(doc,"SaveAs", Dispatch.Method, new Object[]{tpFile,new Variant(8)}, new int[1]);
//作為html格式保存到臨時(shí)文件
Variant f = new Variant(false);
Dispatch.call(doc, "Close", f);
flag = true;
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
app.invoke("Quit", new Variant[] {});
}
System.out.println("轉(zhuǎn)化完畢!");
}
}
else
{
pathss = paths;
//進(jìn)入下一級(jí)目錄
pathss = pathss + lists[i].getName() + "\\";???
//遞歸遍歷所有目錄
change(pathss, savepaths);
}
}
}
//------------------------------------------------------------------------------
//方法原型: main(String[] args)
//功能描述: main文件
//輸入?yún)?shù): 無
//輸出參數(shù): 無
//返 回 值: 無
//其它說明: 無
//------------------------------------------------------------------------------?
public static void main(String[] args)
{
String paths = new String("D:\\Work\\2004.10.8\\test system\\test01\\word\\");
String savepaths = new String ("D:\\Work\\2004.10.8\\test system\\test01\\html\\");
change(paths, savepaths);
}
}
其中import的jar包是一個(gè)開源的東東,網(wǎng)上搜索即得。
Dispatch.invoke(doc,"SaveAs", Dispatch.Method, new Object[]{tpFile,new Variant(8)}, new int[1]);
修改Variant(8)},里面得參數(shù)即可將Word轉(zhuǎn)化為各種類型。
posted @
2006-10-25 16:29 larryjava 閱讀(239) |
評(píng)論 (0) |
編輯 收藏
Unsupported major.minor version 49.0 解決方法:
保證編譯和運(yùn)行在同一版本的JDK(jre)上。
在eclipse的菜單選window->preferences->java->compiler中有可選的JDK.
posted @
2006-10-10 09:30 larryjava 閱讀(565) |
評(píng)論 (0) |
編輯 收藏
一Eclipse下安裝SWT
1.到www.eclipse.org上下載SWT.
我這里用的是1.1.0.1,并且頁面上就有推薦的Eclipse3.1.1,EMF,GEF。都下載了!
2.按照Eclipse安裝插件的方法,安裝SWT,EMF,GEF。
3.如果不出意外,就可以正常使用了!
這里有一個(gè)建議:最好使用純的Eclipse,我開始用WTP版的,怎么配置也不行。
可以建立Visual?Class,但是不能可視化添加控件,或者看不到控件的屬性,或者Text,TextArea控件無法添加。后來按照以上方法,重新來了一次,OK了!
二打包發(fā)布SWT程序1.因?yàn)樾枰猄WT的jar.但是Eclipse3.1.1配合的的SWT不是通過SWT.jar發(fā)布的!是org.eclipse.swt.win32.win32.x86_3.1.0.jar。里面包括了JINI的DLL和SWT類文件。
需要下載
http://www.eclipse.org/downloads/download.php?file=/eclipse/dow ... 09290840/swt-3.1.1-win32-win32-x86.zip這里有SWT.jar,和3個(gè)DLL,把他們解壓縮出來,備用!
2.通過Eclipse的導(dǎo)出功能,生成一個(gè)可執(zhí)行的jar,MANIFEST.MF文件選擇由Eclipse生成,并且保存到項(xiàng)目中。
3.上面2的步驟,只是為了得到MANIFEST.MF文件。下面修改一下這個(gè)文件。
加上?Class-Path:?SWT.jar
如果還有其他的jar,用空格分開,加到后面
4.再生成一次jar,MANIFEST.MF選擇修改后的。
5.將打包的jar,SWT.jar,3個(gè)DLL放到一個(gè)文件夾下,雙擊可執(zhí)行的jar,程序運(yùn)行!
三jar轉(zhuǎn)EXE1.打開JSmooth0.9.7。
2.選擇skeleton,在skeleton?properties中先把Launch?java?app?in?the?exe?process,Debug?console選中??梢圆榭瓷蒃XE文件執(zhí)行過程信息。
3.選擇Executable.
選擇生成的EXE文件存放位置。
選擇EXE文件圖標(biāo)
設(shè)置當(dāng)前路徑,選擇要轉(zhuǎn)換的jar文件所在文件夾
4.選擇Application
設(shè)置Main?Class,可執(zhí)行jar中的Main?Class注意寫類全名
設(shè)置Application?Argument,如果需要傳入?yún)?shù),寫到這里
設(shè)置Embedded?jar:?可執(zhí)行的jar
設(shè)置Classpath:SWT.jar?如果有其他的繼續(xù)添加
5.選擇JVM?Selection。默認(rèn)吧。
6.JVM?Configuration:
可以設(shè)置java?properties,內(nèi)存使用
7.點(diǎn)齒輪。生成!看是否有錯(cuò)誤。
8.EXE執(zhí)行需要的文件:EXE,3個(gè)DLL,SWT.jar
把他們考到其他目錄,一樣可以執(zhí)行!
9.去掉skeleton?properties中的Launch?java?app?in?the?exe?process,Debug?console選項(xiàng)。
重新生成。應(yīng)該OK了!
-----
看了這個(gè),終于完成了SWT程序打包,太爽了
posted @
2006-10-08 11:50 larryjava 閱讀(1622) |
評(píng)論 (1) |
編輯 收藏
? 主要還是以Spring為核心,也總結(jié)了一些以前web開發(fā)常用的開源工具和開源類庫
?
1持久層:???????
1)Hibernate
這個(gè)不用介紹了,用的很頻繁,用的比較多的是映射,包括繼承映射和父子表映射
對(duì)于DAO在這里介紹個(gè)在它基礎(chǔ)上開發(fā)的包bba96,目前最新版本是bba96 2.0它對(duì)Hibernate進(jìn)行了封裝, 查詢功能包括執(zhí)行hsql或者sql查詢/更新的方法,如果你要多層次邏輯的條件查詢可以自己組裝QueryObject.可以參考它做HibernateDAO.也可以直接利用它
2) iBATIS
另一個(gè)ORM工具,沒有Hibernate那么集成,自由度比較大,所以使用時(shí)普遍性能上比Hibernate要快一些.
2:SpringMVC
?????? 原理說明和快速入門:
?????? 配置文件為:
Spring的配置文件默認(rèn)為WEB-INF/xxxx-servelet.xm其中xxx為web.xml中org.springframework.web.servlet.DispatcherServlet的servlet-name。
?????? Action分發(fā):
Spring將按照配置文件定義的URL,Mapping到具體Controller類,再根據(jù)URL里的action= xxx或其他參數(shù),利用反射調(diào)用Controller里對(duì)應(yīng)的Action方法。
輸入數(shù)據(jù)綁定:
Spring提供Binder 通過名字的一一對(duì)應(yīng)反射綁定Pojo,也可以直接從request.getParameter()取數(shù)據(jù)。
輸入數(shù)據(jù)驗(yàn)證
Sping 提供了Validator接口當(dāng)然還可以使用開源的Commons-Validaor支持最好
Interceptor(攔截器)
Spring的攔截器提供接口需要自己編寫,在這點(diǎn)不如WebWork做的好.全面
?????? (這里提一下WebWork和Struts的區(qū)別最主要的區(qū)別在于WebWork在建立一個(gè)Action時(shí)是新New一個(gè)對(duì)象而Struts是SingleMoule所有的都繼承它的一個(gè)Action,所以根據(jù)項(xiàng)目需要合適的選擇.)
3:View層
1) 標(biāo)簽庫:JSP2.0/JSTL
由于Webwork或Spring的標(biāo)簽確實(shí)很有限,一般view層用JSTL標(biāo)簽,而且據(jù)說JSTL設(shè)計(jì)很好速度是所有標(biāo)簽中最快的使用起來也很簡單
?
2) 富客戶端:DOJO Widgets, YUI(YahooUI),FCKEditor, Coolest日歷控件
Dojo主要提供Tree, Tab等富客戶端控件,可以用其進(jìn)行輔助客戶端開發(fā)
YahooUI和DOJO一樣它有自己的一套javascript調(diào)試控制臺(tái),主要支持ajax開發(fā)也有很多Tree,Table,Menu等富客戶端控件
FCKEditor 最流行的文本編輯器
Coolest日歷控件 目前很多日歷控件可用,集成在項(xiàng)目中也比較簡單,這個(gè)只是其中的一個(gè),界面不錯(cuò)的說..
?
3) JavaScript:Prototype.js
Prototype.js作為javascript的成功的開源框架,封裝了很多好用的功能,通過它很容易編寫AJAX應(yīng)用,現(xiàn)在AJAX技術(shù)逐漸成熟,框架資源比較豐富,比如YUI,DWR等等,也是因?yàn)镴avaScript沒有合適的調(diào)試工具,所以沒有必要從零開始編寫AJAX應(yīng)用,個(gè)人認(rèn)為多用一些成熟的Ajax框架實(shí)現(xiàn)無刷新更新頁面是不錯(cuò)的選擇.
?
4)表格控件:Display Tag ,Extreme Table
這兩個(gè)的功能差不多,都是View層表格的生成,界面也比較相向,可以導(dǎo)出Excel,Pdf,對(duì)Spring支持很容易.
相比較而言比較推薦ExtremeTable,它的設(shè)計(jì)很好功能上比DisplayTag多一些,支持Ajax,封裝了一些攔截器,而且最方面的是在主頁wiki中有詳細(xì)的中文使用文檔.
?
5):OSCache
OSCache是OpenSymphony組織提供的一個(gè)J2EE架構(gòu)中Web應(yīng)用層的緩存技術(shù)實(shí)現(xiàn)組件,Cache是一種用于提高系統(tǒng)響應(yīng)速度、改善系統(tǒng)運(yùn)行性能的技術(shù)。尤其是在Web應(yīng)用中,通過緩存頁面的輸出結(jié)果,可以很顯著的改善系統(tǒng)的穩(wěn)定性和運(yùn)行性能。
它主要用在處理短時(shí)間或一定時(shí)間內(nèi)一些數(shù)據(jù)或頁面不會(huì)發(fā)生變化,或?qū)⒁恍┎蛔兊慕y(tǒng)計(jì)報(bào)表,緩沖在內(nèi)存,可以充分的減輕服務(wù)器的壓力,防治負(fù)載平衡,快速重啟服務(wù)器(通過硬盤緩存).
?
6)SiteMesh
sitemesh應(yīng)用Decorator模式主要用于提高頁面的可維護(hù)性和復(fù)用性,其原理是用Filter截取request和response,把頁面組件head,content,banner結(jié)合為一個(gè)完整的視圖。通常我們都是用include標(biāo)簽在每個(gè)jsp頁面中來不斷的包含各種header, stylesheet, scripts and footer,現(xiàn)在,在sitemesh的幫助下,我們刪掉他們輕松達(dá)到復(fù)合視圖模式.
Sitemesh也是 OpenSymphony的一個(gè)項(xiàng)目現(xiàn)在最近的版本是2.2,目前OpenSymphony自從04年就沒有更新的版本了..感覺它還是比較有創(chuàng)新的一種頁面組裝方式, OpenSymphony開源組織的代碼一般寫的比較漂亮,可以改其源代碼對(duì)自己的項(xiàng)目進(jìn)行適配.
測(cè)試發(fā)現(xiàn)Sitemesh還存在一些問題,比如中文問題,它的默認(rèn)編碼是iso-8859-1在使用時(shí)候需要做一些改動(dòng).
?
7)CSS,XHTML
這個(gè)不用說了,遵循W3C標(biāo)準(zhǔn)的web頁面開發(fā).
?
8)分頁標(biāo)簽: pager-taglib組件
Pager-taglib 是一套分頁標(biāo)簽庫,可以靈活地實(shí)現(xiàn)多種不同風(fēng)格的分頁導(dǎo)航頁面,并且可以很好的與服務(wù)器分頁邏輯分離.使用起來也比較簡單.
?
9)Form: Jodd Form taglib
Jodd Form taglib使用比較簡單,只要把<form>的頭尾以<jodd:form bean= "mybean">包住
就會(huì)自動(dòng)綁定mybean, 自動(dòng)綁定mybean的所有同名屬性到普通html標(biāo)記input, selectbox, checkbox,radiobox.....在這些input框里不用再寫任何代碼…
??????
10)Ajax:DWR
?????? J2EE應(yīng)用最常用的ajax框架
??????
?????? 11)報(bào)表 圖表
Eclipse BIRT功能比較強(qiáng)大,也很龐大..好幾十M,一般沒有特別需求或別的圖表設(shè)計(jì)軟件可以解決的不用它
JasperReports+ iReport是一個(gè)基于Java的開源報(bào)表工具,它可以在Java環(huán)境下像其它IDE報(bào)表工具一樣來制作報(bào)表。JasperReports支持PDF、HTML、XLS、CSV和XML文件輸出格式。JasperReports是當(dāng)前Java開發(fā)者最常用的報(bào)表工具。
JFreeChart主要是用來制作各種各樣的圖表,這些圖表包括:餅圖、柱狀圖(普通柱狀圖以及堆棧柱狀圖)、線圖、區(qū)域圖、分布圖、混合圖、甘特圖以及一些儀表盤等等。
??????
?
4:權(quán)限控制: Acegi
Acegi是Spring Framework 下最成熟的安全系統(tǒng),它提供了強(qiáng)大靈活的企業(yè)級(jí)安全服務(wù),如完善的認(rèn)證和授權(quán)機(jī)制,Http資源訪問控制,Method 調(diào)用訪問控制等等,支持CAS
(耶魯大學(xué)的單點(diǎn)登陸技術(shù),這個(gè)單點(diǎn)登陸方案比較出名.我也進(jìn)行過配置使用,可以根據(jù)項(xiàng)目需要,如果用戶分布在不同的地方不同的系統(tǒng)通用一套登陸口令可以用它進(jìn)行解決,一般注冊(cè)機(jī)登陸機(jī)就是這樣解決的)
?????? Acegi只是于Spring結(jié)合最好的安全框架,功能比較強(qiáng)大,當(dāng)然還有一些其他的安全框架,這里列舉一些比較流行的是我從網(wǎng)上找到的,使用方法看其官方文檔把…
JAAS, Seraph, jSai - Servlet Security, Gabriel, JOSSO, Kasai, jPAM, OpenSAML都是些安全控制的框架..真夠多的呵呵
?
5:全文檢索
?????? 1) Lucene
?????? Lucene是一套全文索引接口,可以通過它將數(shù)據(jù)進(jìn)行倒排文件處理加入索引文件,它的索引速度和查詢速度是相當(dāng)快的,查詢百萬級(jí)數(shù)據(jù)毫秒級(jí)出結(jié)果,現(xiàn)在最火的Apache開源項(xiàng)目,版本更新速度很快現(xiàn)在已經(jīng)到了2.0,每個(gè)版本更新的都比較大,目前用的最多的版本應(yīng)該是1.4.3,但它有個(gè)不太方面的地方單個(gè)索引文件有2G文件限制,現(xiàn)在2.0版本沒有這個(gè)限制,我研究的比較多,它的擴(kuò)展性比較好,可以很方面的擴(kuò)充其分詞接口和查詢接口.
?????? 基于它的開發(fā)的系統(tǒng)很多,比如最常用的Eclipse的搜索功能,還有一些開源的軟件比如Compass,Nutch,Lius,還有我最近做的InSearch(企業(yè)級(jí)FTP文件網(wǎng)頁搜索)
6:公共Util類
?????? 主要是Jakarta-Commons類庫,其中最常用得是以下幾個(gè)類庫
1) Jakarta-Commons-Language
?????? 最常用得類是StringUtils類,提供了使用的字符串處理的常用方法效率比較高
2) Jakarta-Commons-Beantuils
?????? 主要用Beantuils能夠獲得反射函數(shù)封裝及對(duì)嵌套屬性,map,array型屬性的讀取。
3) Jakarta-Commons-Collections
?????? 里面有很多Utils方法
?
7 日志管理
?????? Log4J
?????? 任務(wù)是日志記錄,分為Info,Warn,error幾個(gè)層次可以更好的調(diào)試程序
?
8 開源的J2EE框架
?????? 1) Appfuse
????????????? Appfuse是Matt Raible 開發(fā)的一個(gè)指導(dǎo)性的入門級(jí)J2EE框架, 它對(duì)如何集成流行的Spring、Hibernate、iBatis、Struts、Xdcolet、JUnit等基礎(chǔ)框架給出了示范. 在持久層,AppFuse采用了Hibernate O/R映射工具;在容器方面,它采用了Spring,用戶可以自由選擇Struts、Spring/MVC,Webwork,JSF這幾個(gè)Web框架。
??????
?????? 2) SpringSide
?????? .SpringSide較完整的演示了企業(yè)應(yīng)用的各個(gè)方面,是一個(gè)電子商務(wù)網(wǎng)站的應(yīng)用 SpringSide也大量參考了Appfuse中的優(yōu)秀經(jīng)驗(yàn)。最重要的是它是國內(nèi)的一個(gè)開源項(xiàng)目,可以了解到國內(nèi)現(xiàn)在的一些實(shí)際技術(shù)動(dòng)態(tài)和方向很有指導(dǎo)意義…
?
9:模版 Template
主要有Veloctiy和Freemarker
模板用Servlet提供的數(shù)據(jù)動(dòng)態(tài)地生成 HTML。編譯器速度快,輸出接近靜態(tài)HTML???????????? 頁面的速度。
?
10:工作流
?????? 我所知道比較出名的主要有JBpm Shark Osworkflow,由于對(duì)它沒有過多的研究所以還不是很清楚之間有什么區(qū)別.
?
項(xiàng)目管理軟件
dotProject:是一個(gè)基于LAMP的開源項(xiàng)目管理軟件。最出名的項(xiàng)目管理軟件
JIRA: 項(xiàng)目計(jì)劃,任務(wù)安排,錯(cuò)誤管理
Bugzilla:提交和管理bug,和eclipse集成,可以通過安裝MyEclipse配置一下即可使用
BugFree借鑒微軟公司軟件研發(fā)理念、免費(fèi)開放源代碼、基于Web的精簡版Bug管理
CVS:這個(gè)就不介紹了都在用.
SVN: SubVersion已逐漸超越CVS,更適應(yīng)于JavaEE的項(xiàng)目。Apache用了它很久后,Sourceforge剛剛推出SVN的支持。
測(cè)試用例:主要JUnit單元測(cè)試,編寫TestCase,Spring也對(duì)Junit做了很好的支持
?
后記:
?????? 以Spring為主的應(yīng)用開發(fā)可選用的組件中間件真是眼花繚亂,所以針對(duì)不同的項(xiàng)目需求可以利用不同的開源產(chǎn)品解決,比如用Spring+Hibernate/ iBATIS或Spring+WebWork+Hibernate/ iBATIS或Spring+Struts+Hibernate/ iBATIS,合理的框架設(shè)計(jì)和代碼復(fù)用設(shè)計(jì)對(duì)項(xiàng)目開發(fā)效率和程序性能有很大的提高,也有利于后期的維護(hù).
posted @
2006-09-25 08:16 larryjava 閱讀(283) |
評(píng)論 (0) |
編輯 收藏
swt-designer插件:?http://www.swt-designer.com/
Jigloo SWT/Swing GUI Builder:http://cloudgarden.com/jigloo/
RCP Developer :http://www.instantiations.com/rcpdeveloper/index.html
Matisse4MyEclipse:http://www.myeclipseide.com/Downloads%2Bindex-req-viewsdownload-sid-15.html
posted @
2006-07-08 20:55 larryjava 閱讀(236) |
評(píng)論 (0) |
編輯 收藏