2016大二第一學(xué)期實(shí)習(xí)體會(huì)_第1頁(yè)
2016大二第一學(xué)期實(shí)習(xí)體會(huì)_第2頁(yè)
2016大二第一學(xué)期實(shí)習(xí)體會(huì)_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

文章

蓮山課件ww

Yk公文

2016大二第一學(xué)期實(shí)習(xí)體會(huì)

主要從下到上講一下項(xiàng)目中一些值得注意的細(xì)節(jié)。

0.關(guān)于數(shù)據(jù)庫(kù)字段(實(shí)體類(lèi)屬性)設(shè)計(jì):

一開(kāi)始要盡量想得全,想得長(zhǎng)遠(yuǎn),考慮周到仔細(xì),字段類(lèi)型都要考慮清楚。

個(gè)人覺(jué)得這是非常重要的一步,多人商量討論是最好的。

因?yàn)榈搅撕笃谠僖砑?、修改一點(diǎn)什么是要花更多的時(shí)間的(我大一寫(xiě)一些小項(xiàng)目時(shí)就經(jīng)常這樣,吃了很多虧),而往多了想,就算時(shí)間不夠,要?jiǎng)h除一些功能,直接讀數(shù)據(jù)時(shí)不讀,不寫(xiě)那個(gè)字段即可(在此次實(shí)訓(xùn)中深有體會(huì))。

1.關(guān)于SqL語(yǔ)句,(下面代碼只是片段,有刪減,select*只是為了減少代碼篇幅,不建議在開(kāi)發(fā)中使用)

[java]viewplaincopy

publicListqueryDvdByName(Stringdname){

dname=“‘“+dname+”‘“;

Stringsql=“select*fromDvdwheredname=“+dname;

Listlist=null;

try{

list=operquery(sql,null,);

}catch(Exceptione){

();

}

returnlist;

}

不難發(fā)現(xiàn),我為dname兩端加上了‘單引號(hào),不加是會(huì)報(bào)異常的,這個(gè)細(xì)節(jié)其實(shí)我早已發(fā)現(xiàn)。

這次實(shí)訓(xùn)中發(fā)現(xiàn)有好多同學(xué)問(wèn)我問(wèn)題時(shí)都是在這吃了虧,說(shuō)明好多同學(xué)還不知道,這里特別提一下。

[java]viewplaincopy

publicbooleandelDva(intdid){

Stringsql=“deletefromDvdwheredid=“+did;

returnoperUpdate(sql,null);

}

此處為int類(lèi)型,故不用加,當(dāng)然double也不需要。

再看代碼

[java]viewplaincopy

publicListqueryDvdByName(Stringdname){

Stringsql=“select*fromDvdwheredname=?”;

Listplist=newArrayList();

(dname);

Listlist=null;

try{

list=operquery(sql,plist,);

}catch(Exceptione){

();

}

returnlist;

}

這段程序和第一段幾乎一樣,不同的是,用?占位符代替參數(shù),再傳入填補(bǔ)占位符的plist,也不用加’單引號(hào),而且此方法能有效防止sql注入攻擊(我也是百度“如何防止sql注入”時(shí)才知道的),經(jīng)過(guò)我的驗(yàn)證,確實(shí)不錯(cuò)。

故推薦使用此方法構(gòu)造sql語(yǔ)句。

2.答辯時(shí)發(fā)現(xiàn)好多人說(shuō)自己的程序?qū)崿F(xiàn)了模糊查詢(xún)(即簡(jiǎn)單的在要查詢(xún)的字符串前面、后面各加一個(gè)%),

可是我覺(jué)得他們的模糊查詢(xún)都還差一步,比如:查“從你的全世界路過(guò)”,

上述模糊查詢(xún)輸入“從全世界路過(guò)”,就會(huì)出現(xiàn)查不到的情況,

可是有時(shí)候人們就記得“從全世界路過(guò)”,所以我認(rèn)為他們都沒(méi)有實(shí)現(xiàn)真正的模糊查詢(xún)。

其實(shí)只需再加一步即可,如下:

[java]viewplaincopy

publicListqueryDvdByName(Stringdname){//按片名模糊查詢(xún)

Stringname=“‘%”;

for(inti=0;ilist=null;

try{

list=operquery(sql,null,);

}catch(Exceptione){

();

}

returnlist;

}

/S架構(gòu)中,使用write()及read()傳輸絡(luò)信息時(shí),需傳輸?shù)念?lèi)必須實(shí)現(xiàn)

Serializable接口,比如publicclassDvdimplementsSerializable{.......}

補(bǔ)上序列號(hào)privatestaticfinallongserialVersionUID=7261093218919169833L;

序列號(hào)應(yīng)該是隨機(jī)的一個(gè)碼(這個(gè)我也不是很清楚,個(gè)人覺(jué)得是隨機(jī)生成的)

值得注意的是:服務(wù)器端的實(shí)體類(lèi)名,包名,序列號(hào)都必須與客戶(hù)端的保持一致,

不然絡(luò)傳對(duì)象時(shí),無(wú)法將對(duì)象還原成預(yù)期所需要的對(duì)象(會(huì)報(bào)找不到XXX類(lèi)的錯(cuò))。

連接,分為長(zhǎng)連接與短連接(各有優(yōu)缺點(diǎn),由于我也是自己百度看的,想了解的可以百度),

在此次項(xiàng)目中用的是長(zhǎng)連接。長(zhǎng)連接時(shí)每次客戶(hù)端請(qǐng)求、或者接收服務(wù)器端的數(shù)據(jù)后,

顯然不能關(guān)閉socket(即不能();),要注意的是連由socket得到的輸出輸入流均不能關(guān)閉,

例如InputStreamois=newInputStream(());

不能();

否則報(bào)socketisclosed錯(cuò)誤。

5.關(guān)于分包結(jié)構(gòu),如下圖

這是服務(wù)器端客戶(hù)端

值得注意的是,Dao雖然叫Dao但并不是一個(gè)接口,而是一個(gè)類(lèi),所以放在DaoImpl里面,

答辯時(shí)發(fā)現(xiàn)有不少組由于這個(gè)問(wèn)題被扣分。

6.關(guān)于界面Ui

界面是程序與用戶(hù)交互的實(shí)現(xiàn),在做到盡量美觀之時(shí),更重要的是防止應(yīng)用戶(hù)的錯(cuò)誤輸

入而導(dǎo)致程序崩潰,這樣才是一個(gè)好的界面。

1)就比如應(yīng)該要輸入整數(shù)的地方,用戶(hù)不小心輸入了一個(gè)字符串、中文、小數(shù),如果

沒(méi)有捕獲異常,程序是會(huì)飄紅的。

2)做空值判斷,在ui往biz層傳數(shù)據(jù)時(shí),若用戶(hù)輸入信息有空值,就不應(yīng)當(dāng)繼續(xù)往biz傳

數(shù)據(jù),而應(yīng)當(dāng)提示用戶(hù)輸入有誤。

3)數(shù)值范圍判斷,上面做了非法字符判斷,及空值判斷,還是不夠的。比如輸入一個(gè)

同學(xué)的成績(jī),那么用戶(hù)不小心輸入-55,在1)處不會(huì)報(bào)錯(cuò),2)處也符合,

若沒(méi)有加數(shù)據(jù)范圍判斷就糟糕了。

當(dāng)然要防止這些情況,在數(shù)據(jù)進(jìn)入數(shù)據(jù)庫(kù)之前防止均可,為什么我要在ui防止呢,

當(dāng)然是為了減輕服務(wù)器的負(fù)擔(dān),否則就無(wú)法體現(xiàn)c/S架構(gòu)的優(yōu)勢(shì)所在了,那還不如用B/S架構(gòu)呢!

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論