2016大二第一學期實習體會_第1頁
2016大二第一學期實習體會_第2頁
2016大二第一學期實習體會_第3頁
全文預覽已結(jié)束

下載本文檔

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

文檔簡介

文章

蓮山課件ww

Yk公文

2016大二第一學期實習體會

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

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

一開始要盡量想得全,想得長遠,考慮周到仔細,字段類型都要考慮清楚。

個人覺得這是非常重要的一步,多人商量討論是最好的。

因為到了后期再要添加、修改一點什么是要花更多的時間的(我大一寫一些小項目時就經(jīng)常這樣,吃了很多虧),而往多了想,就算時間不夠,要刪除一些功能,直接讀數(shù)據(jù)時不讀,不寫那個字段即可(在此次實訓中深有體會)。

1.關(guān)于SqL語句,(下面代碼只是片段,有刪減,select*只是為了減少代碼篇幅,不建議在開發(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兩端加上了‘單引號,不加是會報異常的,這個細節(jié)其實我早已發(fā)現(xiàn)。

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

[java]viewplaincopy

publicbooleandelDva(intdid){

Stringsql=“deletefromDvdwheredid=“+did;

returnoperUpdate(sql,null);

}

此處為int類型,故不用加,當然double也不需要。

再看代碼

[java]viewplaincopy

publicListqueryDvdByName(Stringdname){

Stringsql=“select*fromDvdwheredname=?”;

Listplist=newArrayList();

(dname);

Listlist=null;

try{

list=operquery(sql,plist,);

}catch(Exceptione){

();

}

returnlist;

}

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

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

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

可是我覺得他們的模糊查詢都還差一步,比如:查“從你的全世界路過”,

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

可是有時候人們就記得“從全世界路過”,所以我認為他們都沒有實現(xiàn)真正的模糊查詢。

其實只需再加一步即可,如下:

[java]viewplaincopy

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

Stringname=“‘%”;

for(inti=0;ilist=null;

try{

list=operquery(sql,null,);

}catch(Exceptione){

();

}

returnlist;

}

/S架構(gòu)中,使用write()及read()傳輸絡信息時,需傳輸?shù)念惐仨殞崿F(xiàn)

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

補上序列號privatestaticfinallongserialVersionUID=7261093218919169833L;

序列號應該是隨機的一個碼(這個我也不是很清楚,個人覺得是隨機生成的)

值得注意的是:服務器端的實體類名,包名,序列號都必須與客戶端的保持一致,

不然絡傳對象時,無法將對象還原成預期所需要的對象(會報找不到XXX類的錯)。

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

在此次項目中用的是長連接。長連接時每次客戶端請求、或者接收服務器端的數(shù)據(jù)后,

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

例如InputStreamois=newInputStream(());

不能();

否則報socketisclosed錯誤。

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

這是服務器端客戶端

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

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

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

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

入而導致程序崩潰,這樣才是一個好的界面。

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

沒有捕獲異常,程序是會飄紅的。

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

數(shù)據(jù),而應當提示用戶輸入有誤。

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

同學的成績,那么用戶不小心輸入-55,在1)處不會報錯,2)處也符合,

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

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

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

溫馨提示

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

評論

0/150

提交評論