昨天干啥了?呵呵,昨天沒過來寫,哈哈現(xiàn)在是周五了,噢對(duì),哈哈,昨天有活干了,讓我做一個(gè)上傳圖片,把圖片報(bào)存在數(shù)據(jù)庫中,然后再讀出來顯示,要能查 詢、添加、刪除。好了動(dòng)手吧,以前做過一個(gè)上傳圖片,但是不是把圖片報(bào)存在數(shù)據(jù)庫中,大同小異了。把關(guān)鍵代碼貼在這里,供以后參考。
-----------------------------上傳頁面---------------------------------------------------------------
<%@page contentType="text/html; charset=gb2312" %>
<%@ taglib uri="/WEB-INF/struts-html" prefix="html"%>
<html>
<head>
<title>上傳圖片</title>
</head>
<body>
<h2>選擇圖片(JPEG格式, 大小小于1M)</h2>
<br>
<html:form action="/upload.do" enctype="multipart/form-data">
<html:errors/>
<table>
<tr>
<TD><html:file property="file" size="50"></html:file></TD>
</tr>
<TR height="20" valign="top" topmargin="0">
<TD>備注:</TD>
</tr>
<tr>
<TD><html:textarea rows="3" cols="40" property="memo"></html:textarea></TD>
</TR>
<tr>
<tr height="20">
</tr>
<tr>
<TD height="22" align="center">
<html:submit> 上 傳 </html: submit> <input type="button" value=" 取 消 " onclick="window.close()"/></TD>
</tr>
</table>
</html:form>
</body>
</html>
--------------------------------------action--UploadAction-----------------------------------------------------
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
response.setCharacterEncoding("gb2312"); //如果不設(shè)置,彈出的提示框是亂碼
UploadForm uploadForm = (UploadForm) form;
FormFile file = uploadForm.getFile();
String memo = uploadForm.getMemo();
String fileName = file.getFileName();
int length = file.getFileSize();
InputStream imgStream = null;
ActionMessages msgs = new ActionMessages();
//向數(shù)據(jù)庫插入記錄
try {
imgStream = file.getInputStream();
UserImg newUserImg = new UserImg();
newUserImg.setImg(imgStream);
newUserImg.setImgName(fileName);
newUserImg.setMemo(memo);
newUserImg.setFileSize(length);
if(UploadImageDao.getInstance().insertImg(newUserImg))
{
response.getWriter().write(
CSScript.alertAndCloseScript(MessageKey.IMAGE_UPLOAD_SUCCESS));
return null;
}
else
{
msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
MessageKey.IMAGE_UPLOAD_FAILED));
saveErrors(request, msgs);
}
} catch (IOException e) {
msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
MessageKey.IMAGE_UPLOAD_FAILED));
saveErrors(request, msgs);
} finally {
try {
if (imgStream != null)
imgStream.close();
} catch (Exception e) {
//do nothing here
}
}
return mapping.getInputForward();
}
--------------------------------------彈出提示框的類----------------------------------------------------------
public final class CSScript {
private static final String S_OPEN = "<script>";
private static final String S_CLOSE = "</script>";
public static String alertAndCloseScript(String alert)
{
StringBuffer sb = new StringBuffer(S_OPEN);
sb.append("alert('").append(alert).append("!');");
sb.append("window.close();");
sb.append("window.opener.document.location.reload();");
sb.append(S_CLOSE);
return sb.toString();
}
public static String errorScript(String err)
{
StringBuffer sb = new StringBuffer(S_OPEN);
sb.append("alert('").append(err).append("!');");
sb.append(S_CLOSE);
return sb.toString();
}
public static String alertScript(String alert)
{
StringBuffer sb = new StringBuffer(S_OPEN);
sb.append("alert('").append(alert).append("!');");
sb.append(S_CLOSE);
return sb.toString();
}
}
---------------------------------------插入數(shù)據(jù)庫的方法-----------------------------------------------------
public boolean insertImg(UserImg userImg)
{
Session session = HibernateSessionFactory.getSession();
Transaction tran = session.beginTransaction();
try
{
Connection conn = session.connection();
PreparedStatement psta = conn.prepareStatement("insert into userImg values(?,?,?)");
psta.setString(1,userImg.getImgName());
psta.setBinaryStream(2, userImg.getImg(),userImg.getFileSize());
psta.setString(3, userImg.getMemo());
psta.execute();
tran.commit();
}
catch(Exception e)
{
e.printStackTrace();
tran.rollback();
return false;
}
finally
{
HibernateSessionFactory.closeSession();
}
return true;
}
注意,這里可以看到涌到了hibernate的session,但還是用的jdbc插入數(shù)據(jù)庫,是因?yàn)閔ibernate對(duì)image類型的字段支持不好。
-----------------------------------------讀取圖片的action-getImg.do-----------------------------------------------------------
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
int id = Integer.parseInt(request.getParameter("id"));
InputStream inStream = UploadImageDao.getInstance().getImg(id);
response.setContentType("image/pjpeg");
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = inStream.read(buffer, 0, 1024)) != -1) {
baos.write(buffer, 0, bytesRead);
}
OutputStream outs = response.getOutputStream();
outs.write(baos.toByteArray());
outs.flush();
inStream.close();
baos.close();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
頁面中顯示圖片,這么寫
<img width="100" height="100" src="getImg.do?id=<bean:write name="list" property="id"/>" />
以夸耀公司為榮、以唾罵公司為恥,
以拉攏客戶為榮、以投靠客戶為恥,
以崇尚技術(shù)為榮、以黑人電腦為恥,
以多寫代碼為榮、以拷貝粘貼為恥,
以團(tuán)隊(duì)協(xié)作為榮、以偷干私活為恥,
以無私奉獻(xiàn)為榮、以跳槽走人為恥,
以辦事聽話為榮、以遲到早退為恥,
以收發(fā)伊妹為榮、以提筆耗紙為恥
工作日志
2007年4月11日 星期三
上班的第二個(gè)星期,昨天,臨下班的時(shí)候終于能上網(wǎng)了呵呵,上一個(gè)星期里,真的是煎熬啊,還不如交給我一些事做,讓我忙活忙活 ,什么事都沒有,沒人理,電腦沒有網(wǎng)絡(luò),剛重裝的系統(tǒng),什么軟件沒有,哦天哪,想起以前石家莊的那個(gè)公司,雖然規(guī)模不大,但是很溫馨,給剛?cè)サ膯T工配一名 導(dǎo)師來幫助 新員工融入新集體,還帶著到各部分 認(rèn)識(shí)同事,呵呵,這倒好,整個(gè)沒人理,哦天,這就是大公司?唉 ,也不算什么大公司,與石家莊的我的那家公司比吧,真的是比較失望,什么都不給講,莫名其妙的,什么時(shí)候上班什么時(shí)候下班都不給講,可能還沒正式開始? 唉,算了不說了,亂七八糟的。
說說今天吧,還是說昨天,呵呵,昨下午來了個(gè)人(據(jù)說是我們部門的老總)把我們郵箱要去了,然后能上網(wǎng)了就受到了封郵件,說是要培訓(xùn),先自己學(xué)習(xí)一下,今 天到了就打開電腦,開始看,真的很郁悶,和我同去的幾個(gè)人,都有人安排事做,就沒人理我,真的是納悶有郁悶,狗日的,到底是為啥?看我能力不行?
下午吃完中午飯回來,趴了會(huì)兒,剛清醒過來,來了個(gè)人,讓我們?nèi)ヂ犝n培訓(xùn),讓去就去吧,結(jié)果是講銷售方法的,我暈,聽吧,還是能聽到一些有意義的東西的, 我發(fā)現(xiàn)我們部門也沒多少人啊,狗日的,連我們部門頭兒是誰,都不知道,呵呵,是不是我有問題?我應(yīng)該主動(dòng)去問?是這樣么?
聽課下來聽的我頭疼,下班了 回家 呵呵。一天就這么過去了。真快。
創(chuàng)建時(shí)間:2007年4月4日, 10:58:38
年前買的Effective java到今天就看了三條,今天帶到公司看。寫這書的人有多豐富的經(jīng)驗(yàn)阿,太
有才啦,哈哈,各種情況面面俱到,太厲害了,邊看邊佩服人家,哈哈。書上的每一句話,都要得
仔細(xì)的琢磨,仔細(xì)的回味,真的回味無窮,受益匪淺,相信像我這樣的水平還沒有體會(huì)出更深層次
的內(nèi)涵,先寫下自己的一點(diǎn)體會(huì)。
創(chuàng)建和銷毀對(duì)象
--避免創(chuàng)建重復(fù)對(duì)象
這里的說法都不是絕對(duì)的,對(duì)于比較龐大的對(duì)象創(chuàng)建成本是昂貴的,而這個(gè)對(duì)象是不變的,
所以我們可以重用它,以減少內(nèi)存增加。
避免創(chuàng)建重復(fù)對(duì)象的方法,有幾種,這要看在什么場(chǎng)合,可以使用靜態(tài)工廠方法,可以使
用static代碼塊,可以使用延時(shí)加載(也就是只有在需要這個(gè)對(duì)象的時(shí)候才在第一次初始
化)
--消除過期的對(duì)象引用
這里面有個(gè)名詞,就是過期引用,過期引用就是那些已經(jīng)沒有實(shí)際用處的引用,這些對(duì)象
引用不會(huì)被垃圾回收機(jī)制發(fā)現(xiàn),所以必須由程序員手動(dòng)告訴垃圾回收機(jī)制這個(gè)對(duì)象引用沒
用了,可以回收了,如何告訴它呢,把引用=null就可以了。
--避免使用終結(jié)函數(shù)
finalizer函數(shù)不能保證會(huì)被調(diào)用,這一點(diǎn)增加了不確定性,簡(jiǎn)單的說finalizer這家伙是
不可信任的,交給它的事可能辦,也可能不辦,這是不確定的,所以我們不能放心的交給
它重要的任務(wù)。
如果想清理某個(gè)對(duì)象,可以考慮在try...catch...finally{中執(zhí)行},它能保證即使產(chǎn)生異
常,也能保證清理會(huì)被執(zhí)行。
上周五第一天上班,到今天,每天都在這死死的坐著,一個(gè)除了系統(tǒng)文件沒有其他任何東西的機(jī)器,
沒有網(wǎng)絡(luò),沒有人理,真是無聊的人,怎么也得給介紹一下公司的情況,講講作息時(shí)間,各項(xiàng)制度、
規(guī)定之類的,幾點(diǎn)上班幾點(diǎn)下班都沒說過,大家都在忙什么?有事找誰都不知道,我暈。
一個(gè)上午又過去了,無聊,發(fā)發(fā)牢騷,呵呵。
java Studio Creator
java.lang.IllegalArgumentException:Cannot invoke ***Form.set*** - argument type mismatch
Form中是Date類型,把Date換成String;在Action中進(jìn)行轉(zhuǎn)換;當(dāng)然轉(zhuǎn)換要借助于SimpleDateFormate方法
上傳文件時(shí)在form中增加enctype="multipart/form-data"
org.hibernate.PropertyAccessException: exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of com.cs.data.project.ProjectImage.setShenbao1
查詢結(jié)果中包含null的項(xiàng) 對(duì)于一些數(shù)字項(xiàng)包含null,定義該項(xiàng)時(shí)必須使用wrapper類型,而不能是primitive類型,例如使用Integer等,而不能是int否則會(huì)拋出exception!
1.250定律
拉德認(rèn)為:每一位顧客身后,大體有250名親朋好友。如果您贏得了一位顧客的好感,就意味著贏得了250個(gè)人的好感;反之,如果你得罪了一名顧客,也 就意味著得罪了250 名顧客。 在你的網(wǎng)站訪客中,一個(gè)訪客可能可以帶來一群訪客,任何網(wǎng)站都有起步和發(fā)展的過程,這個(gè)過程中此定律尤其重要。
2.達(dá)維多定律
達(dá)維多認(rèn)為,一個(gè)企業(yè)要想在市場(chǎng)上總是占據(jù)主導(dǎo)地位,那么就要做到第一個(gè)開發(fā)出新產(chǎn)品,又第一個(gè)淘汰自己的老產(chǎn)品。 國(guó)內(nèi)網(wǎng)站跟風(fēng)太嚴(yán)重,比如前 段時(shí)間的格子網(wǎng),乞討網(wǎng),博客網(wǎng),一個(gè)成功了,大家一擁而上。但實(shí)際效果是,第一個(gè)出名的往往最成功,所以在網(wǎng)站的定位上,要?jiǎng)幼约旱哪X筋,不是去撿人家 剩下的客戶。同理,買人家出售的數(shù)據(jù)來建站效果是很糟糕的。
3.木桶定律
水桶定律是指,一只水桶能裝多少水,完全取決于它最短的那塊木板。這就是說任何一個(gè)組織都可能面臨的一個(gè)共同問題,即構(gòu)成組織的各個(gè)部分往往決定了整 個(gè)組織的水平。 注意審視自己的網(wǎng)站,是速度最糟糕?美工最糟糕?宣傳最糟糕?你首先要做的,不是改進(jìn)你最強(qiáng)的,而應(yīng)該是你最薄弱的。
4.馬太效應(yīng)
《新約》中有這樣一個(gè)故事,一個(gè)國(guó)王遠(yuǎn)行前,交給三個(gè)仆人每人一錠銀子,吩咐他們:“你們?nèi)プ錾猓任一貋頃r(shí),再來見我。”國(guó)王回來時(shí),第一個(gè)仆人 說: “主人,你交給我們的一錠銀子,我已賺了10錠。”于是國(guó)王獎(jiǎng)勵(lì)他10座城邑。第二個(gè)仆人報(bào)告說:“主人,你給我的一錠銀子,我已賺了5錠。” 于 是國(guó)王例獎(jiǎng)勵(lì)了他5座城邑。第三個(gè)仆人報(bào)告說:“主人,你給我的一錠銀子,我一直包在手巾里存著,我怕丟失,一直沒有拿出來。”于是國(guó)王命令將第三個(gè)仆人 的一錠銀子也賞給第一個(gè)仆人,并且說:“凡是少的,就連他所有的也要奪過來。凡是多的,還要給他,叫他多多益善。”這就是馬太效應(yīng)。 在同類網(wǎng)站中, 馬太效應(yīng)是很明顯的。一個(gè)出名的社區(qū),比一個(gè)新建的社區(qū),更容易吸引到新客戶。啟示是,如果你無法把網(wǎng)站做大,那么你要做專。作專之后再做大就更容易。
5.手表定理
手表定理是指一個(gè)人有一只表時(shí),可以知道現(xiàn)在是幾點(diǎn)鐘,而當(dāng)他同時(shí)擁有兩只表時(shí)卻無法確定。
一個(gè)網(wǎng)站,你只需要關(guān)注你特定的用戶群需求。不要在意不相干人的看法。
6.不值得定律
不值得定律:不值得做的事情,就不值得做好 不要過度seo,如果你不是想只做垃圾站。不要把時(shí)間浪費(fèi)在美化再美化頁面,優(yōu)化再優(yōu)化程序,在你網(wǎng)站能盈利后,這些事情可以交給技術(shù)人員完成。
7.彼得原理
勞倫斯.彼得認(rèn)為:在各種組織中,由于習(xí)慣于對(duì)在某個(gè)等級(jí)上稱職的人員進(jìn)行晉升提拔,因而雇員總是趨向于晉升到其不稱職的地位。
不要輕易改變自己網(wǎng)站的定位。如博客網(wǎng)想變門戶,盛大想做娛樂,大家拭目以待吧。
8.零和游戲原理
當(dāng)你看到兩位對(duì)弈者時(shí),你就可以說他們正在玩“零和游戲”。因?yàn)樵诖蠖鄶?shù)情況下, 總會(huì)有一個(gè)贏,一個(gè)輸,如果我們把獲勝計(jì)算為得1分,而輸棋為-1 分,那么,這兩人得分之和就是:1+(-1)=0 不要把目光一直盯在你的競(jìng)爭(zhēng)網(wǎng)站上,不要花太多時(shí)間搶它的訪客。我們把這些時(shí)間用來尋找互補(bǔ)的合作 網(wǎng)站,挖掘新訪客。
9.華盛頓合作規(guī)律
華盛頓合作規(guī)律說的是: 一個(gè)人敷衍了事,兩個(gè)人互相推諉, 三個(gè)人則永無成事之日。 如果你看準(zhǔn)一個(gè)方向,你自己干,缺人手就招。不要輕易找同伴一起搞網(wǎng)站,否則你會(huì)發(fā)現(xiàn),日子似乎越過越快了,事情越做越慢了。
10.邦尼人力定律
一個(gè)人一分鐘可以挖一個(gè)洞,六十個(gè)人一秒種卻挖不了一個(gè)洞。合作是一個(gè)問題,如何合作也是一個(gè)問題。
你需要有計(jì)劃。
11.牛蛙效應(yīng)
把一只牛蛙放在開水鍋里,牛蛙會(huì)很快跳出來;但當(dāng)你把它放在冷水里,它不會(huì)跳出來,然后慢慢加熱,起初牛蛙出于懶惰,不會(huì)有什么動(dòng)作,當(dāng)水溫高到它無 法忍受的時(shí)候,想出來,但已經(jīng)沒有了力氣。 如果你是soho,注意關(guān)注你的財(cái)務(wù)。不要等到?jīng)]錢了再想怎么掙,你會(huì)發(fā)現(xiàn)那時(shí)候掙錢更難。
12.蘑菇管理
蘑菇管理是許多組織對(duì)待初出茅廬者的一種管理方法,初學(xué)者被置于陰暗的角落(不受重視的部門,或打雜跑腿的工作),澆上一頭大糞(無端的批評(píng)、指責(zé)、代人受過),任其自生自滅(得不到必要的指導(dǎo)和提攜)。
做網(wǎng)站畢竟要遭遇這樣的階段,搜索引擎不理你,友情鏈接找不到,訪客不上門。這是磨練。
13.奧卡姆剃刀定律
如無必要,勿增實(shí)體。
把網(wǎng)站做得簡(jiǎn)單,再簡(jiǎn)單,簡(jiǎn)單到非常實(shí)用,而不是花俏。google的首頁為什么比雅虎好?
14.巴萊多定律(Paredo 也叫二八定律)
你所完成的工作里80%的成果,來自于你20%的付出;而80%的付出,只換來20%的成果。
隨時(shí)衡量你所做的工作,哪些是最有效果的。
1.馬蠅效應(yīng)
林肯少年時(shí)和他的兄弟在肯塔基老家的一個(gè)農(nóng)場(chǎng)里犁玉米地,林肯吆馬,他兄弟扶犁,而那匹馬很懶,慢慢騰騰,走走停停。可是有一段時(shí)間馬走得飛快。 林 肯感到奇怪,到了地頭,他發(fā)現(xiàn)有一只很大的馬蠅叮在馬身上,他就把馬蠅打落了。看到馬蠅被打落了,他兄弟就抱怨說:”哎呀,你為什么要打掉它,正是那家伙 使馬跑起來的嘛!” 在你心滿意足的時(shí)候,去尋找你的馬蠅。沒有firefox,不會(huì)有ie7,firefox就是微軟的馬蠅之一。馬蠅不可怕,怕的 是會(huì)一口吃掉你的東西,像 ie當(dāng)初對(duì)網(wǎng)景干的那樣。
2.最高氣溫效應(yīng)
每天最熱總是下午2 時(shí)左右,我們總認(rèn)為這個(gè)時(shí)候太陽最厲害,其實(shí)這時(shí)的太陽早已偏西,不再是供給最大熱量的時(shí)候了。此時(shí)氣溫之所以最高,不過是源于此前的熱量積累。
你今天的網(wǎng)站流量,是你一個(gè)星期或更長(zhǎng)時(shí)間前所做的事帶來的。
3.超限效應(yīng)(溢出效應(yīng))
刺激過多、過強(qiáng)和作用時(shí)間過久而引起心理極不耐煩或反抗的心理現(xiàn)象,稱之為“超限效應(yīng)”。 別到別人論壇里發(fā)太多廣告。別在自己網(wǎng)站上放太多廣告。別在自己的論壇里太多地太明顯地誘導(dǎo)話題。
4.懶螞蟻效應(yīng)
生物學(xué)家研究發(fā)現(xiàn),成群的螞蟻中,大部分螞蟻很勤勞,尋找、搬運(yùn)食物爭(zhēng)先恐后,少數(shù)螞蟻卻東張西望不干活。當(dāng)食物來源斷絕或蟻窩被破壞時(shí),那些勤快的 螞蟻一籌莫展。“懶螞蟻”則“挺身而出”,帶領(lǐng)眾伙伴向它早已偵察到的新的食物源轉(zhuǎn)移。 不要把注意力僅僅放在一個(gè)網(wǎng)站上,即使這個(gè)網(wǎng)站現(xiàn)在為你帶來 一切。你要給自己一些時(shí)間尋找新的可行的方向,以備萬一。
5.長(zhǎng)尾理論
ChrisAnderson認(rèn)為,只要存儲(chǔ)和流通的渠道足夠大,需求不旺或銷量不佳的產(chǎn)品共同占據(jù)的市場(chǎng)份額就可以和那些數(shù)量不多的熱賣品所占據(jù)的市 場(chǎng)份額相匹敵甚至更大。 對(duì)于搜索引擎,未必你需要一個(gè)熱門詞排在第一位,如果有一千個(gè)冷門詞排在第一位,效果不但一樣,還會(huì)更穩(wěn)定更長(zhǎng)遠(yuǎn)。
6.破窗理論
棟建筑上的一塊玻璃,又沒有及時(shí)修好,別人就可能受到某些暗示性的縱容,去打碎更多的玻璃。 管理論壇時(shí),如果你發(fā)現(xiàn)第一個(gè)垃圾貼,趕緊刪掉他吧。想想:落伍現(xiàn)在為什么那么多××貼?現(xiàn)在控制比最初控制難多了。
7.“羊群效應(yīng)”,又稱復(fù)制原則(Copy Strategy)
一個(gè)羊群(集體)是一個(gè)很散亂的組織,平時(shí)大家在一起盲目地左沖右撞。如果一頭羊發(fā)現(xiàn)了一片肥沃的綠草地,并在那里吃到了新鮮的青草,后來的羊群就會(huì)一哄而上,爭(zhēng)搶那里的青草,全然不顧旁邊虎視眈眈的狼,或者看不到其它地方還有更好的青草。
不要輕易跟風(fēng),保持自己思考的能力。
8.墨菲定律
如果壞事情有可能發(fā)生,不管這種可能性多么小,它總會(huì)發(fā)生,并引起最大可能的損失。
除非垃圾站,否則不要作弊,對(duì)搜索引擎不要,對(duì)廣告也不要。
9.光環(huán)效應(yīng)
人們對(duì)人的某種品質(zhì)或特點(diǎn)有清晰的知覺,印象比較深刻、突出, 這種強(qiáng)烈的知覺, 就像月暈形式的光環(huán)一樣,向周圍彌漫、擴(kuò)散,掩蓋了對(duì)這個(gè)人的其他品質(zhì)或特點(diǎn)的認(rèn)識(shí)。
不要輕易崇拜一個(gè)人或者公司、一個(gè)概念、一種做法。
10.蝴蝶效應(yīng)
一只亞馬遜河流域熱帶雨林中的蝴蝶,偶爾扇動(dòng)幾下翅膀,兩周后,可能在美國(guó)德克薩斯州引起一場(chǎng)龍卷風(fēng)。
不管你做什么,網(wǎng)站或者其他,你都應(yīng)該關(guān)注新聞。機(jī)遇或者災(zāi)難可能就在那。
11.阿爾巴德定理
一個(gè)企業(yè)經(jīng)營(yíng)成功與否,全靠對(duì)顧客的要求了解到什么程度。 我贊同別人的點(diǎn)評(píng):看到了別人的需要,你就成功了一半;滿足了別人的需求,你就成功了全部。
尤其是做網(wǎng)站。
12.史密斯原則
如果你不能戰(zhàn)勝他們,你就加入到他們之中去。
不要試圖做孤膽英雄。如果潮流擋不住,至少,你要去思考為什么。
org.hibernate.exception.JDBCConnectionException: Cannot open connection
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:72)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:307)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:109)
at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:105)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1561)
at org.hibernate.loader.Loader.doQuery(Loader.java:661)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:223)
at org.hibernate.loader.Loader.doList(Loader.java:2147)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2026)
at org.hibernate.loader.Loader.list(Loader.java:2021)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:369)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:298)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:137)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1014)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
Caused by: java.sql.SQLException: Network error IOException: Connection refused: connect
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:372)
at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.java:50)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:178)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:140)
at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:304)
... 40 more
這是我剛剛重做的系統(tǒng),配了java的環(huán)境,在tomcat下啟動(dòng)一個(gè)項(xiàng)目的錯(cuò)誤提示,找了半天sql連接字符串中的密碼 sa之類的錯(cuò)誤,無果,后來想到是不是sqlserver沒裝sp3的問題,立馬從網(wǎng)上下了sp3裝,再試,成了,哈哈,這種拒絕連接的錯(cuò)誤,想來也不是密碼不對(duì),記得以前見過密碼不對(duì)的情況,會(huì)提示sa密碼不正確,令我納悶的是我的另一個(gè)機(jī)子是2000系統(tǒng)好像也沒有裝過sp3,也能用啊。
復(fù)習(xí)一下java虛擬機(jī)配環(huán)境變量,設(shè)兩個(gè),一個(gè)path=java目錄的bin文件夾,另一個(gè)classPath=java目錄的lib文件夾,這次在裝eclipse的時(shí)候打開報(bào)找不到虛擬機(jī)的錯(cuò),配了環(huán)境變量就好了。
哈哈,裝了一晚上的機(jī),學(xué)了復(fù)習(xí)了不少東西。明天干活,哈哈,睡覺。
好久 沒上來寫了 ,課上完了 ,忙著找工作
這些日子 從年前到現(xiàn)在 一直在 忙那個(gè)郵票系統(tǒng),學(xué)了不少東西,現(xiàn)在終于看到曙光了,呵呵,發(fā)現(xiàn)自己 整理業(yè)務(wù)邏輯思路的能力不夠,不會(huì)抓住重點(diǎn),看來這還是講求一套方法的,那個(gè)有經(jīng)驗(yàn)的家伙很容易的就抓住了問題的重點(diǎn),提的問題都是在點(diǎn)子上了,果然是高手,呵呵 。
寫代碼是很有意思的,很有技巧的,有的設(shè)計(jì)是很妙不可言的 ,哈哈 好像用詞不當(dāng),期間又很多知識(shí) 感覺寫下來的,可能是過于急于進(jìn)度。
希望快點(diǎn)找個(gè)工作掙錢,呵呵快頂不住了
什么是J2EE、J2SE、J2ME
隨著Internet網(wǎng)絡(luò)的迅速發(fā)展,基于互聯(lián)網(wǎng)的企業(yè)應(yīng)用要求軟 件平臺(tái)具有開放性、分布性和平臺(tái)無關(guān)性。于是就相繼出現(xiàn)了RPC/COM/CORBA等技術(shù),但這些技術(shù)在實(shí)際應(yīng)用中存在著許多不足和局限。它們的特定協(xié) 議難以通過防火墻,因而不適于Web上的應(yīng)用開發(fā)。為了進(jìn)一步開發(fā)基于Web的應(yīng)用,出現(xiàn)了Sun公司的Sun ONE(Open Net Environment 開發(fā)網(wǎng)絡(luò)環(huán)境)和Microsoft公司的.net等Web 服務(wù)技術(shù)體系。
Sun ONE體系結(jié)構(gòu)以Java語言為核心,包括J2SE/J2EE/J2ME和一系列的標(biāo)準(zhǔn)、技術(shù)及協(xié)議。它包括Sun獨(dú)有的iPlanet軟件系列,其中有 在市場(chǎng)上受歡迎的LDAP目錄服務(wù)器軟件,以及Forte for Java――便于在任何環(huán)境下書寫Java 語言的軟件工具。我們很容易就能從網(wǎng)上免費(fèi)獲得和使用包括Java 集成開發(fā)環(huán)境、Java數(shù)據(jù)庫和中間件(Application Server)服務(wù)器等產(chǎn)品,以及它們的源代碼。Sun ONE更接近或能滿足互聯(lián)網(wǎng)在智能化Web服務(wù)方面對(duì)分布性、開發(fā)性和平臺(tái)無關(guān)性的要求。
隨 著Java技術(shù)的不斷發(fā)展,它根據(jù)市場(chǎng)進(jìn)一步細(xì)分為:針對(duì)企業(yè)網(wǎng)應(yīng)用的J2EE(Java 2 EntERPrise Edition)、針對(duì)普通PC應(yīng)用的J2SE(Java 2 Standard Edition)和針對(duì)嵌入式設(shè)備及消費(fèi)類電器的J2ME(Java 2 Micro Edition)三個(gè)版本。本文就Sun ONE的Java核心應(yīng)用――J2SE/J2EE/J2ME作一些介紹。
J2EE技術(shù)應(yīng)用
J2EE是Sun公司推出的一種全新概念的模型,比傳統(tǒng)的互聯(lián)網(wǎng)應(yīng)用程序模型更有優(yōu)勢(shì)。
J2EE模型
J2EE的應(yīng)用編程模型(J2EE Blueprints)提供了一種用于實(shí)施基于J2EE多層應(yīng)用的文檔和實(shí)例套件的體系模型,簡(jiǎn)化了這項(xiàng)復(fù)雜的工作。它被開發(fā)人員用作設(shè)計(jì)和優(yōu)化組件,以便開發(fā)人員從策略上對(duì)開發(fā)工作進(jìn)行分工。
J2EE應(yīng)用編程模型要求開發(fā)者將自己的工作分成兩類:商業(yè)邏輯和表示邏輯,其余則由系統(tǒng)資源自動(dòng)處理,不必為中間層管道進(jìn)行編碼。這樣,開發(fā)人員就能將更多的時(shí)間花在商業(yè)邏輯和表示邏輯上。對(duì)重視縮短項(xiàng)目周期的公司來說,這種轉(zhuǎn)變深受歡迎。
J2EE平臺(tái)
J2EE 平臺(tái)是運(yùn)行J2EE應(yīng)用的標(biāo)準(zhǔn)環(huán)境,由J2EE部署規(guī)范(一套所有J2EE平臺(tái)產(chǎn)品都必須支持的標(biāo)準(zhǔn))、IETF標(biāo)準(zhǔn)集和CORBA標(biāo)準(zhǔn)組成。最新的 J2EE平臺(tái)還添加了JavaBean組件模型。開發(fā)人員可以利用JavaBean組件模型來自定義Java類實(shí)例,并可通過已定義的事件訪問Java 類。
J2EE支持EJB,因此開發(fā)人員可以執(zhí)行多用戶交易功能。當(dāng)在J2EE服務(wù)器上運(yùn)行時(shí),Enterprise JavaBeans將應(yīng)用邏輯分成可再利用和可擴(kuò)展的代碼段。Enterprise JavaBeans并不是新特征,但是通過定義標(biāo)準(zhǔn)客戶端和服務(wù)API,J2EE增強(qiáng)了它的能力和可移植性。
EJB在服務(wù)器的一個(gè)容器內(nèi)運(yùn)行,提供所有典型的中間層服務(wù),如事務(wù)管理、安全、遠(yuǎn)程客戶連接、生存周期管理和數(shù)據(jù)庫連接緩沖。為了讓事務(wù)系統(tǒng)在存在EJB容器的情況下運(yùn)行,開發(fā)人員只需在部署描述文件中定義Beans的事務(wù)屬性即可。
J2EE通過定義一組標(biāo)準(zhǔn)的結(jié)構(gòu)來實(shí)現(xiàn)它的優(yōu)勢(shì),例如:
1.J2EE Application Programming Model,是一種用于開發(fā)多層次、瘦型客戶用戶程序的標(biāo)準(zhǔn)設(shè)計(jì)模型;
2. J2EE Platform,是一個(gè)標(biāo)準(zhǔn)的平臺(tái),用來整合J2EE的應(yīng)用程序,并指定一系列的接口和方法;
3. J2EE Compatibility Test Suite,是一套兼容測(cè)試組件,用來檢測(cè)產(chǎn)品是否同J2EE平臺(tái)兼容;
4.J2EE Reference Implementation,用來示范J2EE的能力。
J2EE服務(wù)器
Sun 的J2EE服務(wù)器通過Java 命名和目錄接口(JNDI)、認(rèn)證、HTTP及與Enterprise JavaBeans兼容的能力,提供命名和目錄服務(wù)。JNDI是Java平臺(tái)的一種標(biāo)準(zhǔn)擴(kuò)展版,向企業(yè)內(nèi)的命名和目錄服務(wù)提供具有Java功能的,帶有統(tǒng) 一接口的應(yīng)用,包括LDAP。
J2EE服務(wù)器還利用了Java Servlet技術(shù)。Java Servlet可以看作是運(yùn)行在服務(wù)器上的一個(gè)小程序,它向開發(fā)人員提供以組件為基礎(chǔ)創(chuàng)建基于Web應(yīng)用的、獨(dú)立于平臺(tái)的方法。它不像利用CGI那樣具有 性能局限。Java Servlet是一種擴(kuò)展Web服務(wù)器功能的簡(jiǎn)單技巧。由于它是用Java編寫的,因而能夠訪問整個(gè)Java API庫,也包括用于訪問企業(yè)數(shù)據(jù)庫的JDBC API。
JSP是Java Servlet的一種擴(kuò)展。Java Servlet提供開發(fā)和顯示來自服務(wù)器的交互式Web頁。如今JSP又有了進(jìn)一步的改進(jìn),它使得創(chuàng)建和支持靜態(tài)模板和動(dòng)態(tài)內(nèi)容相結(jié)合的HTML和XML頁面更加容易。
安全性
J2EE 平臺(tái)定義了一種標(biāo)準(zhǔn)的公開存取控制規(guī)則,當(dāng)程序在企業(yè)平臺(tái)上開發(fā)時(shí)就已被程序師定義和解釋了。J2EE也需要提供一個(gè)標(biāo)準(zhǔn)的注冊(cè)機(jī)制,以便應(yīng)用程序不會(huì)將 這些注冊(cè)機(jī)制和邏輯相混合,從而使相同的工作執(zhí)行于大量的不同環(huán)境中時(shí)并不需要改變?cè)创a。例如:J2EE應(yīng)用程序開發(fā)人員可以指定幾個(gè)安全級(jí)別,當(dāng)用戶 訪問數(shù)據(jù)時(shí),他們可寫出代碼來檢查當(dāng)前用戶權(quán)限的級(jí)別。在開發(fā)階段,開發(fā)人員賦予多組用戶適當(dāng)?shù)陌踩?jí),使應(yīng)用程序在執(zhí)行限制操作之前能夠容易的判斷限制 級(jí)。
J2EE 平臺(tái)是Java技術(shù)企業(yè)級(jí)應(yīng)用的最佳平臺(tái),它可以讓程序員迅速、快捷地開發(fā)和分布企業(yè)級(jí)應(yīng)應(yīng)用程序。以下便是它的相關(guān)技術(shù):
1.Enterprise JavaBeans Architecture,企業(yè)級(jí)JavaBeans 定義了一個(gè)應(yīng)用程序接口。它可以使程序員迅速開發(fā)、發(fā)布和管理跨平臺(tái)的、基于組件的企業(yè)級(jí)應(yīng)用程序。
2.JavaServer Pages,JSP 技術(shù)提供了一種簡(jiǎn)單、快速的方法來創(chuàng)建動(dòng)態(tài)網(wǎng)頁。通過它,可以快速地開發(fā)基于Web的應(yīng)用程序,并且這些應(yīng)用程序都是與平臺(tái)無關(guān)的。因?yàn)镴SP與ASP很相似,所以熟悉ASP的人學(xué)習(xí)它就很容易了。
3.Java Servlet,提供了應(yīng)用程序接口。通過它可以簡(jiǎn)單快速地開發(fā)并擴(kuò)展服務(wù)器功能。就發(fā)展趨勢(shì)來看,它將來有可能取代CGI。
4.J2EE Connector,提供了一種標(biāo)準(zhǔn)結(jié)構(gòu)來聯(lián)接不同的企業(yè)信息平臺(tái)。
5.Java Naming and Directory Interface(JNDI),在Java 平臺(tái)與商業(yè)信息之間,JNDI提供了統(tǒng)一、無縫的標(biāo)準(zhǔn)化連接。通過使用JNDI,程序員可以在企業(yè)多命名與目錄服務(wù)之間傳送Java 應(yīng)用程序。
6.Java Interface Definition Language(JIDL),通過使用CORBA,可以提供協(xié)同工作的能力。JIDL包括一個(gè)IDL-to-Java 編譯器和支持IIOP(Internet Inter-Orb Protocol)的ORB。
7.JDBC,幾乎是為所有的數(shù)據(jù)庫提供了統(tǒng)一的接口,同時(shí)可以創(chuàng)建高級(jí)工具和接口。
8.Java Message Service(JMS),它幾乎規(guī)范了所有企業(yè)級(jí)消息服務(wù),如可靠查詢、發(fā)布消息、訂閱雜志等各種各樣的PUSS/PULL技術(shù)的應(yīng)用,并且為它們提供了一個(gè)標(biāo)準(zhǔn)接口。
9.Java Transaction API(JTA),為分布式系統(tǒng)中可處理的應(yīng)用程序規(guī)定了一個(gè)高級(jí)的管理規(guī)范。
10.JavaMail,JavaMail應(yīng)用程序接口提供了一整套模擬郵件系統(tǒng)的抽象類。通過JavaMail,可以創(chuàng)建郵件或消息應(yīng)用程序。
11.RMI-IIOP,使用它就可以只用Java 技術(shù)和Java RMI接口開發(fā)客戶機(jī)與服務(wù)器的遠(yuǎn)程接口。
J2EE 使用固定的文件格式捆綁某個(gè)模塊:用.ear文件捆綁J2EE應(yīng)用程序;用.jar捆綁Enterprise Bean。例如,一個(gè).ear文件包含一個(gè).xml文件作為其分布描述,還包含一個(gè)或多個(gè).jar和.war文件;一個(gè).jar文件除了包含它的分布描述 外,還包含了作為Enterprise bean的.class文件。
J2EE應(yīng)用程序的開發(fā)階段分為四步:1.Enterprise Bean創(chuàng)建;2.Web Component創(chuàng)建;3.J2EE應(yīng)用程序裝配;4.J2EE應(yīng)用程序分布。以下是J2EE兼容產(chǎn)品部分列表:
BEA WebLogic Server 6.0、Borland App Server、HP Bluestone Total-e-Server、IBM WebSphere Application Server、IONA iPortal Application Server、iPlanet Application Server、Macromedia JRun Server、Oracle 9i Application Server、SilverStrean Application Server、Sybase EAServer、TogetherSoft ControlCenter、Java 2 SDK Enterprise Edition。
J2ME技術(shù)的應(yīng)用
J2ME (Java 2 Platform Micro Edition)是為無線電子市場(chǎng)所設(shè)計(jì)的,包括JVM規(guī)范和API規(guī)范。其API規(guī)范是基于J2SE(Java 2 Standard Editon)的。J2ME 定義了一套合適的類庫和虛擬機(jī)技術(shù)。這些技術(shù)可以使用戶、服務(wù)提供商和設(shè)備制造商通過物理(有線)連接或無線連接,按照需要隨時(shí)使用豐富的應(yīng)用程序。
J2ME 又被稱為Java 2 微型版,被使用在各種各樣的消費(fèi)電子產(chǎn)品上,例如智能卡、手機(jī)、PDA、電視機(jī)頂盒等方面。當(dāng)然了,J2ME也提供了Java語言一貫的特性,那就是跨平 臺(tái)和安全網(wǎng)絡(luò)傳輸。它使用了一系列更小的包,而且Javax.microedition.io 為J2SE包的子集。J2ME可以升級(jí)到J2SE和J2EE。
在J2ME出現(xiàn)之前,我們更多接觸到的是Java卡(Java Card)、嵌入式Java(Embedded Java)和實(shí)時(shí)Java(Real Time Java)等。其中Java卡是針對(duì)SIM卡、智能卡等設(shè)備而定制的最小Java子集,比J2ME還要小,移植性也不強(qiáng)。嵌入式Java則針對(duì)特殊用戶自 行配置Java類庫和VM(Virtual Machine,虛擬機(jī))。它對(duì)資源需求極小,可運(yùn)行在無圖形用戶接口和網(wǎng)絡(luò)的設(shè)備上,可以添加用戶專用的API,但是它就無法移植。實(shí)時(shí)Java是由 IBM領(lǐng)導(dǎo)的實(shí)時(shí)定制Java專家組負(fù)責(zé)實(shí)施的,現(xiàn)在還在不斷完善中。不過,從嚴(yán)格意義上來說,它們都不是真正的J2ME。
像其它版本一樣,J2ME具有很多Java技術(shù)特性,主要有:
1.可以在各種支持Java的設(shè)備上運(yùn)行;
2.代碼短小;
3.充分利用Java語言的優(yōu)勢(shì);
4.安全性好;
5.用J2ME實(shí)現(xiàn)的應(yīng)用可以方便地升級(jí)到J2SE、J2EE。
J2ME的配置和框架
為了支持用戶和嵌入式市場(chǎng)提出的靈活性和可定制性要求,J2ME被設(shè)計(jì)得更加模塊化和可縮放化。J2ME在設(shè)備原有的操作系統(tǒng)上建造了3層軟件來實(shí)現(xiàn)這種要求:
1.JVM層,這層基于宿主操作系統(tǒng),按照某一種J2ME的配置,實(shí)現(xiàn)了JVM。
2.配置層,這層對(duì)于用戶可見度要低一些,但對(duì)框架層非常重要。它針對(duì)“水平”市場(chǎng)的需求,定義了Java虛擬機(jī)的最小功能集和Java類庫的最小集合。在某種意義上,配置層定義了開發(fā)者在所有設(shè)備上都可以使用Java特性和類庫的“最小公分母”。
3. 框架層,這層對(duì)于用戶和應(yīng)用程序提供者來說是最常見的。它針對(duì)“垂直”市場(chǎng)的需求,定義了Java虛擬機(jī)的最小功能集和Java類庫的最小集合。其框架是 基于特定的配置層實(shí)現(xiàn)的。只要設(shè)備支持相同的框架層,針對(duì)特定框架層開發(fā)的應(yīng)用程序就可以移植到其它設(shè)備上。一個(gè)設(shè)備可以支持多個(gè)框架層。
在J2ME 設(shè)備中,JVM與配置層緊密相連,它們體現(xiàn)了每一類設(shè)備的基本功能。框架層針對(duì)不同的設(shè)備,在配置層的基礎(chǔ)上規(guī)定了附加的API。為了滿足不斷更新的應(yīng)用 程序,框架層可以擴(kuò)充新的Java庫類。在不遠(yuǎn)的將來,隨著新設(shè)備的不斷出現(xiàn),J2ME技術(shù)將提供范圍廣泛的框架層、配置層和VM。JCP(Java Community Process)可以為客戶和開發(fā)商提供規(guī)范。根據(jù)JCP的定義,J2ME目前的一種配置層是“面向連接的設(shè)備配置”層(Connected Device Configuration),它采用典型的Java虛擬機(jī)技術(shù)。這種全功能的VM包含了基于臺(tái)式機(jī)系統(tǒng)上的虛擬機(jī)的所有功能,適用于擁有至少幾兆字節(jié)內(nèi) 存的設(shè)備。對(duì)于無線設(shè)備和其它內(nèi)存不足的設(shè)備,J2ME采用“面向連接的受限設(shè)備配置”(CLDC)技術(shù)。
KVM是J2ME的核心特 征。它是一個(gè)可移植性非常高的JVM,專用于內(nèi)存小、資源有限、能上網(wǎng)的設(shè)備,例如蜂窩電話、尋呼機(jī)和個(gè)人組織器等。這些器件一般都含有16或32位的處 理器,最低128KB內(nèi)存。KVM能夠被靈活應(yīng)用到各種行業(yè)、各種類型的設(shè)備上,并能夠適應(yīng)這些設(shè)備的多樣化所帶來的問題,比如處理器的耗電量、內(nèi)存的大 小、設(shè)備和應(yīng)用程序的特殊功能等問題。
CLDC技術(shù)
CLDC定義了目標(biāo)Java平臺(tái),該平臺(tái)基于小型的、資源較少的、內(nèi)存僅有160~512K的設(shè)備。CLDC是由KVM和用在蜂窩電話、數(shù)字產(chǎn)品、雙向?qū)ず魴C(jī)、個(gè)人組織器和家用電器等核心庫類及接口組成。使用CLDC技術(shù)有很多優(yōu)點(diǎn):
1.跨平臺(tái),這點(diǎn)保留了Java一貫的特點(diǎn),應(yīng)用程序不會(huì)隨著平臺(tái)差異而產(chǎn)生變化。
2.動(dòng)態(tài)性,這點(diǎn)也是很吸引人的,可以根據(jù)需要下載自己喜歡的應(yīng)用程序和服務(wù),并且可以和其它的CLDC設(shè)備通信。
3.安全性,Java 本身的特點(diǎn)造就了這一特性。
與 J2SE相比,CLDC缺少下列所說的特征:
1.AWT(抽象窗口開發(fā)包),Swing或其它圖形庫;
2.用戶定義類裝載器;
3.類實(shí)例的最終化;
4.弱的引用;
5.RMI;
6.Reflection(映射)。
CLDC 有四個(gè)包:java.lang、java.util、java.io和javax.microedition。除了javax.microedition 包以外,其它的幾個(gè)包都是J2SE包的核心子集。CLDC采用這些J2SE類庫,但是把其中一些在微型設(shè)備中用不到類、屬性和方法去掉了。
J2ME定義兩個(gè)配置:Connected Device Configuration(連接設(shè)備配置,CDC)和限制性更強(qiáng)的Connected Limited Device Configuration(有限連接設(shè)備配置,CLDC)。
J2SE技術(shù)的應(yīng)用
Java 2標(biāo)準(zhǔn)版是一種開發(fā)和部署平臺(tái),提供了編寫桌面、工作站應(yīng)用程序所有必需的功能。J2SE軟件是快速開發(fā)、部署關(guān)鍵任務(wù)和企業(yè)應(yīng)用程序的首選解決方案。 J2SE 1.4版本是基于Java跨平臺(tái)技術(shù)和強(qiáng)有力的安全模塊而開發(fā)的,其最新的特征和功能極大地提高了Java語言的伸縮性、靈活性、適用性,以及可靠性。
J2SE 1.4 特點(diǎn):
1.良好的計(jì)算性能和縮放能力。
J2SE 1.4版是一個(gè)快速開發(fā)和配置跨平臺(tái)的企業(yè)級(jí)應(yīng)用與服務(wù)的綜合性平臺(tái)。它提升了Java計(jì)算的性能與縮放能力,代表了Java技術(shù)的大跨步進(jìn)展。有了 J2SE 1.4版,企業(yè)就可以通過更簡(jiǎn)易的步驟、花費(fèi)更少的時(shí)間,采用Java技術(shù)開發(fā)與配置要求更高的應(yīng)用了。J2SE 1.4版在Java客戶機(jī)應(yīng)用方面得到了重大性能提升。基于Swing的Java小程序和應(yīng)用程序在圖形用戶界面(GUI)的響應(yīng)速度上也大有提高。
2.跨平臺(tái)。
J2SE 1.4版是一個(gè)具有綜合性能的平臺(tái),能使一個(gè)完整的、可縮放的高性能應(yīng)用配置在任何種類的平臺(tái)上。
3.支持Web服務(wù)。
J2SE 1.4版與以前各J2SE版全面兼容。J2SE 1.4版對(duì)SSL、LDAP和CORBA等業(yè)界標(biāo)準(zhǔn)技術(shù)也給予支持,因此保證了在不同平臺(tái)、系統(tǒng)和環(huán)境間的互操作能力。J2SE 1.4版支持XML技術(shù)和一整套安全服務(wù),因此為基于各類標(biāo)準(zhǔn)的可互操作應(yīng)用與服務(wù)的創(chuàng)建奠定了重要基礎(chǔ)。有了J2SE 1.4版與Java Web Services Developer Pack的結(jié)合,開發(fā)商就能創(chuàng)建、測(cè)試和配置Web服務(wù)了。
4.完整性。J2SE 1.4版還是一個(gè)完整的開發(fā)環(huán)境。開發(fā)商可基于這一環(huán)境創(chuàng)建功能豐富的交互式應(yīng)用。這些應(yīng)用可以配置在任何平臺(tái)上。J2SE 1.4具有新的GUI控制功能、快速的Java 2DT圖形功能、支持國(guó)際化與本地化擴(kuò)展和新的配置選項(xiàng),并對(duì)Windows XP提供擴(kuò)展支持。
總之,J2SE 1.4版是多種不同風(fēng)格軟件的開發(fā)基礎(chǔ),包括客戶端Java小程序和應(yīng)用程序,以及獨(dú)立的服務(wù)器應(yīng)用程序等。J2SE 1.4版還是J2ME的基礎(chǔ),是J2EE執(zhí)行程序的推動(dòng)力。
Java 之所以能夠發(fā)展得很快,是因?yàn)榛ヂ?lián)網(wǎng)的發(fā)展非常快。Java可以和瀏覽器結(jié)合在一起,因而很自然地在桌面系統(tǒng)得到廣泛應(yīng)用。從計(jì)算的結(jié)構(gòu)來看,Java主 要分三大類:第一是服務(wù)器端,這里就有了J2EE企業(yè)版;第二是桌面PC,這一類用的是J2SE標(biāo)準(zhǔn)版;第三就是掌上電腦、移動(dòng)設(shè)備,用的都是J2ME。 但是,大部分非企業(yè)級(jí)軟件還是在J2SE上開發(fā)的比較多。首先,這是因?yàn)楹芏嗟膽?yīng)用軟件都是在J2SE上開發(fā)的;其次,J2SE是和J2EE兼容的,企業(yè) 版是在標(biāo)準(zhǔn)版上的擴(kuò)充,在J2SE的版本上開發(fā)的軟件,拿到企業(yè)的平臺(tái)上是一樣可以運(yùn)行的;再次,一般開發(fā)還是在J2SE的環(huán)境上,只是說J2ME提供微 型版的一個(gè)環(huán)境。在J2SE上虛擬出一個(gè)環(huán)境,開發(fā)出來的應(yīng)用軟件是可以拿到微型版上運(yùn)行的。
public class Test
{
public void changeApple(Apple a)
{
Apple a2 = new Apple();
a2.color = "red";
a = a2;
}
public void changeApple2(Apple a)
{
a.color = "red";
}
public static void main(String[] args)
{
Apple a = new Apple();
a.color="blue";
new Test().changeApple(a);
System.out.println(a.color);
new Test().changeApple2(a);
System.out.println(a.color);
}
}
class Apple
{
public String color;
}
//輸出結(jié)果:blue
red
我這只豬要在豬年也是第一次要獨(dú)自一人過春節(jié)了,不知道為什么,沒有別人那么深的戀家情結(jié),有人問我,你不想家么,你不想你媽么?我不知道說什么,呵呵!
剛剛看了高中時(shí)就喜歡得一個(gè)電臺(tái)主持人--清音的博客上的類似年終總結(jié)的文字,我想,我也應(yīng)該總結(jié)一下吧,索性打開豬窩,呵呵,發(fā)現(xiàn)沒有人看,瀏覽人數(shù)還是那些,哈哈。
今年三十兒,除夕,中國(guó)人來說最重要的節(jié)日,剛才去超市,那個(gè)人叫多阿,原以為三十兒了,應(yīng)該大多數(shù)人年貨都該買個(gè)差不多了吧,只等在家守歲了,沒想到還是那么火爆,看來城市人還是和我們鄉(xiāng)下不一樣啊。
06年,我大學(xué)畢業(yè)了。畢業(yè)了,不再是學(xué)生了,不用再抄作業(yè)了,坐火車不再打折了,離開了那些同居四年的兄弟們,自此各自各處漂泊~~
06年,憑我自己的能力找了自己第一份工作。欣喜,激動(dòng),開始踏實(shí)工作,感謝部門經(jīng)理對(duì)我的關(guān)照,讓我從另一個(gè)起跑線起跑。
06年,我也掙錢了,哈哈,花自己掙的錢的感覺,舒服~~,老爸說為什么你總在花你爸的錢總像隔一層,呵呵,長(zhǎng)大了,想自食其力了。
06年,害得她死去活來,痛。
06年,刻下傷疤的一年,掙扎。
06年,掉進(jìn)河里,想逆流而上,并開始行動(dòng)。
07年,應(yīng)該會(huì)有一次暴風(fēng)驟雨,一定要戰(zhàn)勝。
找回自己
大年二十五了,呵呵,剛才和一朋友在QQ上聊,過年沒什么感覺了,和平時(shí)沒什么兩樣,倒是給自己找了個(gè)邋遢的冠冕堂皇的理由。
2006過去了,過去一段時(shí)間了,黑色的2006,再見。
幾個(gè)月的培訓(xùn)日子基本上結(jié)束了,這些天一直在住的地方貓著,呵呵,就是,一天不下樓不出屋,用某人的話說我沒什么愛好,除了正事什么也不做,呵呵,這話我愛聽,我做的又有哪些是正事呢。培訓(xùn)了幾個(gè)月,感覺,沒什么感覺,呵呵,對(duì)找工作還是有心虛,哈哈,也不能因?yàn)檫@樣培一輩子訓(xùn)不是,哈哈,還得向前。還差得遠(yuǎn)。這幾個(gè)月寫了這么多的日志,算是一個(gè)不小的收獲吧,
2007會(huì)是什么樣子,網(wǎng)上說2007夏天的溫度將破紀(jì)錄,呵呵,看來得有心理準(zhǔn)備了。
中間還有一個(gè)過年,還有幾天,感覺像是一個(gè)門檻,得怎樣邁過去阿/。
網(wǎng)絡(luò)真是好東西,遇到什么問題,都可以問它哈哈,這不,剛剛解決了幾個(gè)小問題,使我的程序順利通過了,哈哈
我想這么寫
<html:hidden property="bookId" value="<bean:write name="bookForm" property="id">"></html:hidden>
這么寫就不行,報(bào)equal symbol expected的錯(cuò)誤,用Google翻譯過來是“預(yù)期符號(hào)相同”
在網(wǎng)上查
可以這么寫
<html:hidden property="bookId" value="${bookForm.id}"></html:hidden>
但必須jsp2.0以上,servlet2.4以上
在web.xml中
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
還有個(gè)小問題就是在web.xml中如果配置<taglib></taglib>標(biāo)簽,就會(huì)有個(gè)紅叉,說什么
cvc-complex-type.2.4.a: Invalid content was found starting with element 'taglib'. One of '{"http://java.sun.com/xml/ns/j2ee":description, "http://java.sun.com/xml/ns/j2ee":display-name, "http://java.sun.com/xml/ns/j2ee":icon, "http://java.sun.com/xml/ns/j2ee":distributable, "http://java.sun.com/xml/ns/j2ee":context-param, "http://java.sun.com/xml/ns/j2ee":filter, "http://java.sun.com/xml/ns/j2ee":filter-mapping, "http://java.sun.com/xml/ns/j2ee":listener, "http://java.sun.com/xml/ns/j2ee":servlet, "http://java.sun.com/xml/ns/j2ee":servlet-mapping, "http://java.sun.com/xml/ns/j2ee":session-config, "http://java.sun.com/xml/ns/j2ee":mime-mapping, "http://java.sun.com/xml/ns/j2ee":welcome-file-list, "http://java.sun.com/xml/ns/j2ee":error-page, "http://java.sun.com/xml/ns/j2ee":jsp-config, "http://java.sun.com/xml/ns/j2ee":security-constraint, "http://java.sun.com/xml/ns/j2ee":login-config, "http://java.sun.com/xml/ns/j2ee":security-role, "http://java.sun.com/xml/ns/j2ee":env-entry, "http://java.sun.com/xml/ns/j2ee":ejb-ref, "http://java.sun.com/xml/ns/j2ee":ejb-local-ref, "http://java.sun.com/xml/ns/j2ee":service-ref, "http://java.sun.com/xml/ns/j2ee":resource-ref, "http://java.sun.com/xml/ns/j2ee":resource-env-ref, "http://java.sun.com/xml/ns/j2ee":message-destination-ref, "http://java.sun.com/xml/ns/j2ee":message-destination, "http://java.sun.com/xml/ns/j2ee":locale-encoding-mapping-list}' is expected.
雖然對(duì)程序運(yùn)行沒什么障礙,但對(duì)我這個(gè)完美主義總是心里不舒服,在網(wǎng)上查
http://blog.csdn.net/heroying/archive/2007/02/03/1501873.aspx
給出了解釋
把<taglib></taglib>放在<jsp-config></jsp-config>里面就行了,哈哈,不錯(cuò)不錯(cuò)。
increment(遞增)
用于為long, short或者int類型生成唯一標(biāo)識(shí)。只有在沒有其他進(jìn)程往同一張表中插入數(shù)據(jù)時(shí)才能使用。 在集群下不要使用。
identity
對(duì)DB2,mysql, MS SQL Server, sybase和HypersonicSQL的內(nèi)置標(biāo)識(shí)字段提供支持。返回的標(biāo)識(shí)符是long, short 或者int類型的。
sequence (序列)
在DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列(sequence),而在Interbase中使用生成器(generator)。返回的標(biāo)識(shí)符是long, short或者 int類型的。
hilo (高低位)
使用一個(gè)高/低位算法來高效的生成long, short或者 int類型的標(biāo)識(shí)符。給定一個(gè)表和字段(默認(rèn)分別是是hibernate_unique_key 和next)作為高位值得來源。高/低位算法生成的標(biāo)識(shí)符只在一個(gè)特定的數(shù)據(jù)庫中是唯一的。在使用JTA獲得的連接或者用戶自行提供的連接中,不要使用這種生成器。
seqhilo(使用序列的高低位)
使用一個(gè)高/低位算法來高效的生成long, short或者 int類型的標(biāo)識(shí)符,給定一個(gè)數(shù)據(jù)庫序列(sequence)的名字。
uuid.hex
用一個(gè)128-bit的UUID算法生成字符串類型的標(biāo)識(shí)符。在一個(gè)網(wǎng)絡(luò)中唯一(使用了IP地址)。UUID被編碼為一個(gè)32位16進(jìn)制數(shù)字的字符串。
uuid.string
使用同樣的UUID算法。UUID被編碼為一個(gè)16個(gè)字符長(zhǎng)的任意ASCII字符組成的字符串。不能使用在PostgreSQL數(shù)據(jù)庫中
native(本地)
根據(jù)底層數(shù)據(jù)庫的能力選擇identity, sequence 或者h(yuǎn)ilo中的一個(gè)。
assigned(程序設(shè)置)
讓應(yīng)用程序在save()之前為對(duì)象分配一個(gè)標(biāo)示符。
foreign(外部引用)
使用另外一個(gè)相關(guān)聯(lián)的對(duì)象的標(biāo)識(shí)符。和<one-to-one>聯(lián)合一起使用。
有一個(gè)星期沒有寫日志了,這些日子過得有些狼狽,哈哈,差點(diǎn)睡大街去。因?yàn)榕R時(shí)的變故不得不去上課去找房子租,光電話費(fèi)就花了近百,在網(wǎng)上搜索信息,盡是些代理,說心里話,感覺他們的運(yùn)作模式還是比中介有優(yōu)越的,但還是對(duì)他們天花亂墜的說法不放心,在網(wǎng)上查了些代理公司的資料,也有很多網(wǎng)友罵他們說話不算數(shù)的。最后決定不著代理,哈哈,通過連夜搬家,終于一月的最后一晚,有地方睡了,昨晚收拾到一點(diǎn)多。
同時(shí),這幾天也沒寫代碼,光東奔西看房了,因?yàn)樾悬c(diǎn)不合腳,左腳腫了,今天來上課,遲到了一個(gè)小時(shí),也沒做什么,我做的那個(gè)BookShop跟老師做的那個(gè)思路不能銜接,不能跟著他往下走,按安排,明天最后一天了,狗日的,要放一個(gè)月假,不負(fù)責(zé)任的做法嘛。
住的危機(jī)暫時(shí)解決了,該恢復(fù)正常學(xué)習(xí)了。