java web 編程課程總結(jié)
《javaweb編程課程總結(jié)》
這次的課程和以往的課程有一些不同。一是,需要理解的概念、專業(yè)術(shù)語很多。比如,JavaWeb里引入了Web體系結(jié)構(gòu)、MVC設(shè)計模式等的概念,出現(xiàn)了Servlet、JavaBean、Scriptlet、JSTL等無法替代的術(shù)語;二是,這次學(xué)習(xí)的內(nèi)容和Internet接軌,十分實用。學(xué)完JSP,既復(fù)習(xí)了Java的知識,又具備了做網(wǎng)站的能力;叵胍幌逻@個階段的過程。
第一是對Web應(yīng)用程序的概述。我從中了解到Web應(yīng)用程序的三層體系結(jié)構(gòu):表示層、業(yè)務(wù)層、數(shù)據(jù)存取層。從而想到了學(xué)數(shù)據(jù)庫設(shè)計時的數(shù)據(jù)庫設(shè)計三大范式,它們同是敘述在編寫代碼時應(yīng)做的規(guī)劃和應(yīng)遵循的規(guī)則,這種規(guī)劃在以后的學(xué)習(xí)中時有出現(xiàn),說明編程并不是一味地進(jìn)行循環(huán)判斷、死記硬背,而需要在技術(shù)上有所加強(qiáng)、在效率上有所提高。做任何事都是如此,事先必須有目標(biāo)、有計劃,有統(tǒng)籌,這樣執(zhí)行時才不會盲目,才不會事倍功半。學(xué)習(xí)編程對綜合能力都是一種培養(yǎng)。
接下來是JSP知識。要學(xué)JSP,就必須會HTML,如果HTML學(xué)不通,這對以后的學(xué)習(xí)都是一個瓶頸;A(chǔ)一定要打扎實,吃透,否則上層建筑的建起就不會很順利甚至沒法起步。然后是JavaBean。以下是個人對JavaBean的一點(diǎn)學(xué)習(xí)體會。JavaBean里有set()和get()方法,用這些方法能很容易地傳值,邏輯上更標(biāo)準(zhǔn),代碼看起來也更規(guī)范。但set()和get()方法只是用來對屬性進(jìn)行操作的,所以如果是進(jìn)行復(fù)雜的邏輯或?qū)?shù)據(jù)庫進(jìn)行操作等,那么就不要寫成set()和get()方法,只用一個有返回值的方法就足以。這樣直觀方便,且符合規(guī)范?傊瑂et()和get()方法不要沒有效率地濫定義。
接著是Servlet。Servlet是一個用Java編寫的應(yīng)用程序,在服務(wù)器上運(yùn)行,用來處理請求和響應(yīng),也可以單獨(dú)做為一個Web頁面。
然后講的是標(biāo)簽,包括自定義標(biāo)簽和JSP標(biāo)準(zhǔn)標(biāo)簽庫。用一般的Java代碼都幾乎能實現(xiàn)它們的功能。它們的好處是提高了代碼的重用性。標(biāo)準(zhǔn)標(biāo)簽庫里有幾個比較有用的標(biāo)簽,比如forTokens和setBundle,這兩個標(biāo)簽的作用是一般代碼實現(xiàn)不了的。
通過學(xué)習(xí)JSP,我了解了更多的編程概念和理念,更增強(qiáng)了信心,只要有克服困難的勇氣和決心,就沒有什么難關(guān)無法克服。我會抱著十足的勇氣和決心向下一個階段挑戰(zhàn)。從一期學(xué)到現(xiàn)在,我對Java有了一個比較具體的認(rèn)識。
Java的特點(diǎn)是:面向?qū)ο、跨平臺、可移植。面向?qū)ο蟮暮x是,這種語言可以形象地模擬現(xiàn)實生活中的實物。在面向?qū)ο蟮恼Z言中,“類”是對一組實物的共同特征描述,“對象”是類的實例,同一個類的一些對象具有類所定義的共同特點(diǎn)。面向?qū)ο蟮娜筇攸c(diǎn)是“封裝”、“繼承”和“多態(tài)”。封裝的表現(xiàn)有三,一是它把數(shù)據(jù)成員組織在一起,形成一個整體;二是它可以隱藏細(xì)節(jié),簡化操作,比如,聲明一個JTextField類的對象,你可以實現(xiàn)這個API中所有的功能,但看不到這個類的代碼;你可以直接調(diào)用它的setText()、getText()等方法,而不用考慮它具體是怎么實現(xiàn)的。三是它可以保護(hù)數(shù)據(jù),比如,一個類里有privateintage的屬性,產(chǎn)生一個setAge(intageTemp)的方法,在這個方法里對傳入的參數(shù)進(jìn)行檢驗,如果不符合要求,就不對age賦值。
擴(kuò)展閱讀:JAVA編程實訓(xùn)課程學(xué)期總結(jié)
Java編程實訓(xùn)課程
學(xué)期總結(jié)
姓名:魏永進(jìn)______________學(xué)號:_201*022121______________班級:___09計算機(jī)多媒體技術(shù)____________
成績:_______________
成績登記表
次數(shù)自評組評課堂
安徽中澳科技職業(yè)學(xué)院計算機(jī)系
指導(dǎo)教師:魏曉東
12345678910111213系合總數(shù)計分
JAVA學(xué)習(xí)總結(jié)論文
一對JAVA的入門認(rèn)識及了解
JAVA總的來說和C++、.NET、DELPHI等語言是同一祖先生出來,所以熟悉這類編程的人學(xué)起來特別容易,它們都是面向?qū)ο蠡幊陶Z言。學(xué)習(xí)任何語言(包括英語),基礎(chǔ)一定要打好,沒有學(xué)會走路跑步不可能快吧。所以學(xué)習(xí)JAVA一定要先把JAVA的幾個基本組成元素學(xué)好。以下是我總結(jié)出來的學(xué)習(xí)順序和注意事項:
1、數(shù)據(jù)類型JAVA是一種強(qiáng)類型語言,各種類型不會自動轉(zhuǎn)換,使用前必須先定義。2、方法方法相當(dāng)于定義一個"宏"、一個"函數(shù)",方法的定義格式為:"說明符修飾符返回值方法名(參數(shù)){方法體}。"
在學(xué)習(xí)方法的時候要注意"說明符、"修飾符"、"返回值"這三樣?xùn)|西。
我們在調(diào)用JAVA的自帶的"類"里面的"方法"的時候,我們一開始是不用看懂這些方法里面寫什么(當(dāng)然,你能看懂是最好)。我們只要知道,使用了這個方法后,"返回值"的"類型"說明
3、類在JAVA中最經(jīng)常聽到詞,也是最麻煩的東西,類的定義格式為:說明符class類名extends超類名implements接口名{主體}
4、變量常量JAVA的常量名一般用全大寫字母表示,并且為了節(jié)省內(nèi)存,一般定義為靜態(tài)(JAVA程序中的名字我們經(jīng)常有個默認(rèn)的規(guī)則,類名所有單詞第一個字母大寫,方法名第二個單詞開始第一個字母大寫,變量名小寫,這樣我們一看程序就非常清楚了,從小養(yǎng)成良好的習(xí)慣嘛,呵呵),變量的定義格式為:"修飾符數(shù)據(jù)類型變量名"
變量在類中定義(不在方法體中的部分稱為域)和在方法體中定義是不同的(在方法體中定義不需要修飾符)。學(xué)習(xí)變量的時候要注意兩個特殊的東西"this"和"super"。同時我們就要學(xué)習(xí)什么叫"覆蓋"、"重載"。
5、控制流所有的編程語言的控制語句無非就是幾個ifelseforwhiledoswitch。6、接口:一個抽象的東西,接口可以多繼承,解決了類只能單繼承的問題。接口的定義格式為:
說明符interface接口名{主體},
接口內(nèi)的方法都是沒有主體的,只有常量或變量。當(dāng)類使用接口的時候,一定要"覆蓋"接口的方法。7、線程:線程是個比較復(fù)雜的東西,例如一個賽馬程序有七匹馬賽跑,就有七個線程,看起來好象是同時在跑,其實是計算機(jī)分配不同的時間段讓七個線程運(yùn)行。我們初學(xué)者的程序可能還用不上。
到這里為語言本身的學(xué)習(xí)是后繼學(xué)習(xí)的基礎(chǔ)。任何一門語言都是知識的濃縮,是設(shè)計者智慧的結(jié)晶,更何況是作為高級語言Java。作為初學(xué)者,我們確實應(yīng)該腳踏實地的從語言層面開始學(xué)起,為進(jìn)一步學(xué)習(xí)打好基礎(chǔ)。所以,我計劃利用假期拜讀ThinkinginJava。學(xué)習(xí)Java要充分利用資源。最重要的資源是JDK源碼,其次就是opensource。當(dāng)然,動手寫程序才是硬道理。
2、學(xué)習(xí)面向?qū)ο笳Z言一定要結(jié)合設(shè)計模式。語言本身只是工具,如何利用好工具表達(dá)我們的想法,就需要具有專業(yè)思維。設(shè)計模式就是我們應(yīng)該具有的專業(yè)思維。
3、多態(tài)性是面向?qū)ο蟪绦蛟O(shè)計的核心!在對Java語言和設(shè)計模式有簡單的了解后,我覺得多態(tài)性是OOP核心中的核心,正是因為多態(tài)具有的表示獨(dú)立性,才使得程序具有很好的可擴(kuò)展性和可復(fù)用性。止,JAVA的基本概念我們有一定的了解了,我們就開始研究JAVA的
類了。
二.如下是運(yùn)作坦克大戰(zhàn)的步驟和設(shè)計方法:
2.2設(shè)計方法2.2.1構(gòu)建游戲主類
在主類中構(gòu)造一個主Frame框架,設(shè)置它的大小和位置,并將其顯示。在主類中編寫一段代碼,構(gòu)造一個窗口。并添加窗口關(guān)閉的處理事件,將窗口設(shè)置成打小不可變。主要代碼如下:
this.addWindowListener(newWindowAdapter(){
});
this.setResizable(false);
}publicvoidwindowClosing(WindowEvente){System.exit(0);
2.2.2構(gòu)建坦克類Tank
構(gòu)造主窗口中所需要的Tank類,并將坦克加到窗口中,實現(xiàn)坦克的四個方向的移動
創(chuàng)建一個坦克類,用畫圖工具構(gòu)造出簡單的圖形代表坦克,并將坦克加入到主窗口當(dāng)中。主要代碼如下:
publicclassTank{}
publicvoiddraw(Graphicsg){}
Colorc=g.getColor();g.setColor(Color.RED);g.fillOval(x,y,30,30);g.setColor(c);
publicclassTankClientextendsFrame{
publicvoidpaint(Graphicsg){myTank.draw(g);}
}讓坦克朝四個方向運(yùn)動起來,在主類TankClient中啟用多線程機(jī)制,讓系統(tǒng)不斷的進(jìn)行重畫。并在Tank類中建立處理按鍵的方法,實現(xiàn)坦克的手動移動;根據(jù)坦克類修改TankClient主類,在主類中注冊事件監(jiān)聽器,并調(diào)用Tank類中的方法。主類TankClient中使用雙緩沖機(jī)制消除坦克的閃爍現(xiàn)象。在Tank類當(dāng)中添加的按鍵方法,代碼如下:
publicvoidkeyPressed(KeyEvente){
}intkey=e.getKeyCode();switch(key){
caseKeyEvent.VK_LEFT:
bL=true;break;
}locateDirection();
publicvoidkeyReleased(KeyEvente){
intkey=e.getKeyCode();switch(key){
caseKeyEvent.VK_LEFT:
bL=false;break;
}}locateDirection();
TankClient類中的多線程機(jī)制的主要代碼如下:
newThread(newPaintThread()).start();
privateclassPaintThreadimplementsRunnable{
publicvoidrun(){
while(true){
repaint();
try{}
}}Thread.sleep(50);
}catch(InterruptedExceptione){}
e.printStackTrace();
2.2.3添加炮彈Missile類
在Missile類當(dāng)中添加x,y,dir等屬性以及常量。在Missile類當(dāng)中添加構(gòu)造方法,draw方法等必要方法。根據(jù)不同的方向,子彈要進(jìn)行不同的運(yùn)動。在TankClient當(dāng)中new一顆子彈出來。
2.2.4實現(xiàn)坦克的互相攻擊
(1)讓主戰(zhàn)坦克打出炮彈
1)在Tank類當(dāng)中增加對J鍵的處理,使每按下J鍵的時候,坦克打出一發(fā)炮彈。
caseKeyEvent.VK_J:
fire();break;
2)根據(jù)“坦克打出炮彈”這句話,確定Tank當(dāng)中的fire方法,其返回值為Missile。
publicMissilefire(){
Missilem=newMissile(x,y,ptDir);
}returnm;
3)為了解決坦克停下來也能開火的問題給坦克加一炮筒,根據(jù)炮筒方向和
位置設(shè)定子彈的方向和位置并new出來,然后返回。每次move之后根據(jù)Tank的新方向確定炮筒的方向。
if(this.dir!=Direction.STOP){}
this.ptDir=this.dir;
4)為了能夠打出多發(fā)炮彈,使用容器填裝多發(fā)炮彈,每當(dāng)抬起J鍵的時候就往容器中加入新的炮彈
Listmissiles=newArrayList();
5)解決炮彈不消亡的問題,加入控制炮彈生死的量live(Missle),當(dāng)炮彈已經(jīng)死去就不需要對其重畫,當(dāng)炮彈飛出邊界就死亡,當(dāng)炮彈死亡就從容器中移去。
if(x<0||y<0||x>TankClient.GAME_WIDTH||y>TankClient.GAME_HEIGHT){
live=false;
}publicvoiddraw(Graphicsg){
if(!live){
tc.missiles.remove(this);return;
}}(2)實現(xiàn)坦克的互相開火
1)加入?yún)^(qū)分?jǐn)澄业腂oolean量good,根據(jù)敵我設(shè)置不同的坦克2)更新Tank的構(gòu)造函數(shù),加入good3)在TankClient中new出敵人并畫出
4)在Missile中加入hitTank(Tankt)方法,返回布爾類型
5)借用碰撞檢測的輔助類Rectangle,為Tank和Missile類都添加getRect()方法。
publicRectanglegetRect(){
returnnewRectangle(x,y,WIDTH,HEIGHT);
}6)增加控制坦克生死的Boolean量live,如果live為false就不畫了。當(dāng)炮彈擊中敵人坦克時,坦克被打死,子彈也死去。
publicbooleanhitTank(Tankt){
if(this.getRect().intersects(t.getRect())&&t.isLive()){
}returnfalse;
t.setLive(false);this.live=false;returntrue;
}(3)添加多輛坦克
建一容器向里面添加敵人的Tank
Listtanks=newArrayList();添加Tank
for(inti=0;i38)this.fire();
2)讓敵方坦克發(fā)射炮彈。本軍坦克不打本軍坦克,向炮彈添加表示好壞的Boolean量good。
3)修改炮彈的構(gòu)造方法;修改Tank的fire方法;修改hitTank方法,坦克只能打擊對方。
2.2.5創(chuàng)建Explode類
(1)加入位置屬性x,,y,加入Boolean變量live炸
(3)在TankClient當(dāng)中創(chuàng)建容器,將爆炸存放與容器當(dāng)中,擊斃一輛坦克就產(chǎn)生爆炸,將爆炸逐一畫出(如果死去就去除)Missile類當(dāng)中的hitTank()方法
2.2.6添加藥箱BloodBox
創(chuàng)建BloodBox類添加血藥箱,加入必要的屬性和方法,讓藥箱沿著固定的軌跡運(yùn)動。
privatestaticRandomr=newRandom();intstep=0;
privateint[][]pos={{100,120},{200,300},{760,570},{280,570},{600,40},{700,60},{680,225}};
publicBloodBox(){}
x=pos[0][0];y=pos[0][1];
privatevoidmove(){
step++;
if(step==pos.length){
step=0;
}}x=pos[step][0];y=pos[step][1];
當(dāng)主戰(zhàn)Tank與藥箱接觸的時候,血自動加滿。
publicbooleaneat(BloodBoxb){
if(this.live&&b.isLive()&&this.getRect().intersects(b.getRect())){
this.life=100;b.setLive(false);
}returntrue;
returnfalse;
}2.2.7添加Home
建立Home類,在Home類中為家添加普通墻壁,當(dāng)墻壁中的home被打掉后游戲結(jié)束。
2.2.8添加障礙物
(1)添加金屬墻
1)建立MetalWall類,建立MetalWall對象,用繪圖工具畫出來
2)讓每一顆子彈打擊每一堵墻,添加hitMetalWall()方法。當(dāng)子彈接觸到墻時子彈消失。
publicbooleanhitMetalWall(MetalWallw){
if(this.live&&this.getRect().intersects(w.getRect())){
}}returnfalse;
this.live=false;returntrue;
3)讓坦克不能穿過墻。添加記錄上一次位置的oldX,oldY;修改構(gòu)造函數(shù)每次move之前記錄上一次的位置。添加stay方法記錄移動之前的位置,當(dāng)坦克撞到檣時回到移動前的位置,即當(dāng)碰到墻時stay。
publicbooleancollidesWithMetalWall(MetalWallw){
}if(this.live&&this.getRect().intersects(w.getRect())){}
returnfalse;
this.stay();returntrue;
(2)添加普通墻
建立OrdinaryWall類,往里添加相應(yīng)屬性以及相應(yīng)方法。具體步驟參考2.7.1中
添加金屬墻。不同之處在于Missile類當(dāng)中的hitOrdinaryWall()方法,擋子彈接觸到墻壁時,墻壁消失。(3)添加河水River
(4)添加樹林
創(chuàng)建Tree類,用畫圖工具畫出代表森林的模塊,加入主窗口當(dāng)中。(5)加入圖片替換主窗口中的各對象
再將圖片加入時,運(yùn)用了系統(tǒng)提供的工具包ToolKit,用工具包拿到所需圖片后再將它放入容器中。然后再做相應(yīng)的替換。
三:JAVA的學(xué)習(xí)心得
經(jīng)過一年的學(xué)習(xí),Java的課程已經(jīng)結(jié)束了?墒俏抑溃瑢W(xué)習(xí)java的路上,我們才剛剛起步。學(xué)Java之前我聽許多人說Java很難,學(xué)了之后我感覺Java確實不容易,想學(xué)好它并非易事。我覺得學(xué)Java必須做到三步走:1.課前認(rèn)真預(yù)習(xí)。2.課上認(rèn)真聽講。3.課下認(rèn)真復(fù)習(xí)。
我想只有做好這三步,自己才能跟上老師的步子。
回想一下學(xué)習(xí)Java時的情景,我仍然興奮不已。其實在剛接觸Java時,自己確實有點(diǎn)暈,但經(jīng)過一段時間學(xué)習(xí),逐漸走出了迷霧。剛開始學(xué)習(xí)循環(huán)時,我覺得那一塊很不熟悉,做題時,思路半天才理出來。經(jīng)過一段時間的練習(xí),我漸漸的走出了第一個迷霧。但是到了第六章,我徹底暈了,看書看得也一知半解暈暈乎乎的。類與對象是在學(xué)了第七、八章后弄清的。到了最后一章,學(xué)到字符串時,傳遞參數(shù)真讓我暈啊,然后我又是練習(xí),最后略微弄明白了點(diǎn)。經(jīng)過三起三落,經(jīng)過幾個迷霧之后,我對Java也有了更為深入的了解,就學(xué)會了Java。
Java學(xué)起來很有趣,通過學(xué)習(xí)Java可以提高自己的邏輯能力。在學(xué)習(xí)Java期間我們做了一些程序,我們班的同學(xué)也都積極準(zhǔn)備,完成的還不錯!在做程序時,我遇到了一些難題,有時也會出現(xiàn)錯誤,時間長了弄得我心煩意亂,但是我知道只有堅持下去才會成功。因為Java是一種面向?qū)ο蟮木幊陶Z言,剛接觸Java的人可能會感覺比較抽象,不過沒關(guān)系不用著急,上課的時候認(rèn)真聽老師講解,一些概念知識慢慢去理解,課后多做練習(xí),熟能生巧,哪怕是你的記性再好,課后不去強(qiáng)化練習(xí)也沒用,只有多練了,當(dāng)你在做項目時你才能很熟練的寫出你想要代碼。
我覺得把Java學(xué)會的關(guān)鍵一點(diǎn)就是堅持練習(xí)。學(xué)習(xí)Java時每天必須保證一定量的練習(xí),我們老師也說學(xué)習(xí)編程語言沒有捷徑可走。真的,只有每天反復(fù)操作了,經(jīng)常寫代碼了,我們在遇到問題時才有一定的思路。欲速則不達(dá),學(xué)習(xí)編程語言需要一個比較漫長的階段,不能一步登天,這需要一個過程,在這個過程中慢慢積累經(jīng)驗,扎實基礎(chǔ)。不要滿足于現(xiàn)狀,要不斷完善自己的知識體系,善于總結(jié)實踐經(jīng)驗。要端正自己的學(xué)習(xí)態(tài)度,是主動去
學(xué),而不是被動!提高自學(xué)能力。學(xué)習(xí)編程的秘訣是:編程、編程、再編程。不僅要多實踐,而且要快實踐。
我們在看書的時候,不要等到你完全理解了才動手敲代碼,而是應(yīng)該在看書的同時敲代碼,程序運(yùn)行的各種情況可以讓你更快更牢固的掌握知識點(diǎn)。程序代碼是軟件開發(fā)最重要的成果之一,其中滲透了程序員的思想與靈魂。當(dāng)你學(xué)習(xí)一個類以后,你就可以自己寫個簡單的例子程序來運(yùn)行一下,看看有什么結(jié)果,然后再多調(diào)用幾個類的方法,看看運(yùn)行結(jié)果,這樣非常直觀的把類給學(xué)會了,而且記憶非常深刻。然后不應(yīng)該滿足把代碼調(diào)通,你應(yīng)該想想看如果我不這樣寫,換個方式,再試試行不行。記得哪個高人說過學(xué)習(xí)編程就是個破壞的過程,把書上的例子,自己學(xué)習(xí)Documentation編寫的例子在運(yùn)行通過以后,不斷的嘗試著用不同的方法實現(xiàn),不斷的嘗試破壞代碼的結(jié)構(gòu),看看它會有什么結(jié)果。通過這樣的方式,你會很徹底的很精通的掌握J(rèn)ava。舉個例子,我們都編過HelloWorld,一開始很多同學(xué)不是很理解為什么main方法一定要這樣來定義publicstaticvoidmain(String[]args),能不能不這樣寫?我剛也有這樣的疑問。想知道答案嗎?很簡單,你把main改個名字運(yùn)行一下,看看報什么錯誤,然后根據(jù)出錯信息進(jìn)行分析;把main的public取掉,在試試看,報什么錯誤;static去掉還能不能運(yùn)行;不知道m(xù)ain方法是否一定要傳一個String[]數(shù)組的,把String[]改掉,改成int[],或者String試試看;不知道是否必須寫args參數(shù)名稱的,也可以把a(bǔ)rgs改成別的名字,看看運(yùn)行結(jié)果如何。
學(xué)習(xí)Java這段時間,有時候會覺得有點(diǎn)苦,但是我覺得正是有了你奮斗時的苦,才能換來學(xué)成后的甜。當(dāng)你經(jīng)過認(rèn)真寫代碼做完一個項目時,你會有一種成就感。心里有一種說不出的喜悅之情。
學(xué)習(xí)Java靠得是韌勁,靠得是拼勁,考得是堅持不懈。如果做好了這幾點(diǎn),我想Java對你來說不會太難。還有,你自己要有信心,相信自己能學(xué)會。
友情提示:本文中關(guān)于《java web 編程課程總結(jié)》給出的范例僅供您參考拓展思維使用,java web 編程課程總結(jié):該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。