程序設(shè)計(jì)方法學(xué)課件_第1頁
程序設(shè)計(jì)方法學(xué)課件_第2頁
程序設(shè)計(jì)方法學(xué)課件_第3頁
程序設(shè)計(jì)方法學(xué)課件_第4頁
程序設(shè)計(jì)方法學(xué)課件_第5頁
已閱讀5頁,還剩93頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

程序設(shè)計(jì)方法學(xué)0程序設(shè)計(jì)方法學(xué)程序設(shè)計(jì)方法學(xué)0程序設(shè)計(jì)方法學(xué)0程序設(shè)計(jì)方法學(xué)0程序設(shè)計(jì)方法學(xué)0程序設(shè)計(jì)方法學(xué)0程序設(shè)計(jì)方法學(xué)0主要內(nèi)容:程序設(shè)計(jì)方法學(xué)基本概念及發(fā)展面向?qū)ο蟪绦蛟O(shè)計(jì)方法學(xué)及概念面向?qū)ο蟪绦蛟O(shè)計(jì)應(yīng)用框架設(shè)計(jì)模式結(jié)構(gòu)化程序設(shè)計(jì)程序正確性證明程序設(shè)計(jì)方法學(xué)0第一章程序設(shè)計(jì)方法學(xué)簡介§1.1程序設(shè)計(jì)方法學(xué)的產(chǎn)生程序設(shè)計(jì)的發(fā)展過程手工藝式的設(shè)計(jì)方法軟件危機(jī)

程序設(shè)計(jì)方法學(xué)工程化設(shè)計(jì)方法軟件需求增加三大難點(diǎn):高,長,難程序設(shè)計(jì)方法學(xué)0第一章程序設(shè)計(jì)方法學(xué)簡介程序設(shè)計(jì)方法學(xué)講述程序設(shè)計(jì)的性質(zhì)以及程序設(shè)計(jì)的理論和方法的一門學(xué)科。程序設(shè)計(jì)方法學(xué)0§1.2結(jié)構(gòu)程序設(shè)計(jì)1974年,D.Gries教授將結(jié)構(gòu)程序設(shè)計(jì)歸納為:結(jié)構(gòu)程序設(shè)計(jì)是避免使用GOTO語句的一種程序設(shè)計(jì);是自頂向下的程序設(shè)計(jì);結(jié)構(gòu)程序設(shè)計(jì)是一種組織和編制程序的方法,利用它編制的程序容易理解和修改;容易實(shí)現(xiàn)正確性的證明;允許在設(shè)計(jì)過程中的每一步驗(yàn)證其正確性;討論如何將大規(guī)模和復(fù)雜的流程圖轉(zhuǎn)換成標(biāo)準(zhǔn)形式程序設(shè)計(jì)方法學(xué)0§1.2結(jié)構(gòu)程序設(shè)計(jì)1.結(jié)構(gòu)程序設(shè)計(jì):是一種進(jìn)行程序設(shè)計(jì)的原則和方法,按照這種原則和方法設(shè)計(jì)出的程序的特點(diǎn)是結(jié)構(gòu)清晰、容易閱讀、容易修改、容易驗(yàn)證。2.結(jié)構(gòu)程序設(shè)計(jì)語言:按照結(jié)構(gòu)程序設(shè)計(jì)的要求設(shè)計(jì)出的程序設(shè)計(jì)語言。3.結(jié)構(gòu)化程序:按照結(jié)構(gòu)程序設(shè)計(jì)的思想編制出的程序。程序設(shè)計(jì)方法學(xué)0§1.2結(jié)構(gòu)程序設(shè)計(jì)2.關(guān)于GOTO語句:限制;避免3.程序的結(jié)構(gòu)1)順序結(jié)構(gòu)AB程序設(shè)計(jì)方法學(xué)0§1.2結(jié)構(gòu)程序設(shè)計(jì)例:根據(jù)給定半徑求圓的周長。#include“stdio.h”main(){intradius;floatcircle;radius=4;circle=2*3.141592*radius;printf(“圓周長=%f\n”,circle);}程序設(shè)計(jì)方法學(xué)0§1.2結(jié)構(gòu)程序設(shè)計(jì)2)選擇結(jié)構(gòu)

APBAP程序設(shè)計(jì)方法學(xué)0§1.2結(jié)構(gòu)程序設(shè)計(jì)例:將兩個數(shù)由小到大排列#include“stdio.h”main(){inta,b,t;scanf(“%d%d”,&a,&b);printf(“a=%d,b=%d\n”,a,b);if(a>b){t=a;a=b;b=t;}

printf(“a=%d,b=%d\n”,a,b);}程序設(shè)計(jì)方法學(xué)0§1.2結(jié)構(gòu)程序設(shè)計(jì)3)循環(huán)結(jié)構(gòu)

APAP程序設(shè)計(jì)方法學(xué)0§1.2結(jié)構(gòu)程序設(shè)計(jì)例:求1到100之間自然數(shù)的和。#include“stdio.h”main(){inti,sum;sum=0;for(i=1;i<=100;i++)sum=sum+i;

printf(“sum=%d\n”,sum);}程序設(shè)計(jì)方法學(xué)0§1.2結(jié)構(gòu)程序設(shè)計(jì)4.逐步求精的程序設(shè)計(jì)方法就是在編制一個程序時,首先考慮程序的整體結(jié)構(gòu)而忽視一些細(xì)節(jié)問題,然后逐步地、一層一層細(xì)化程序直至用所選語言完全描述每一個細(xì)節(jié),即得到所期望的程序?yàn)橹埂?/p>

程序設(shè)計(jì)方法學(xué)0§1.2結(jié)構(gòu)程序設(shè)計(jì)例:有一個班級共有30名學(xué)生,本學(xué)期共開設(shè)了5門課程,要求計(jì)算出每個學(xué)生的平均成績,并將5門課程的成績及平均成績輸出問題分為以下3個部分:1)輸入30名學(xué)生的5門課程的成績;2)計(jì)算每個學(xué)生的平均成績;3)輸出每個學(xué)生的5門課程的成績及平均成績。

程序設(shè)計(jì)方法學(xué)0§1.2結(jié)構(gòu)程序設(shè)計(jì)1)輸入30名學(xué)生的5門課程的成績;

do{輸入一名學(xué)生的5門課程的成績}2)計(jì)算每個學(xué)生的平均成績;do{計(jì)算每個學(xué)生的總分;計(jì)算每個學(xué)生的平均分。}程序設(shè)計(jì)方法學(xué)0§1.2結(jié)構(gòu)程序設(shè)計(jì)3)輸出每個學(xué)生的5門課程的成績及平均成績;

do{輸出5門課程的成績;輸出平均成績。}程序設(shè)計(jì)方法學(xué)0§1.2結(jié)構(gòu)程序設(shè)計(jì)1)輸入30名學(xué)生的5門課程的成績;

for(i=1;i<=30;i++){輸入一名學(xué)生的5門課程的成績}2)計(jì)算每個學(xué)生的平均成績;for(i=1;i<=30;i++){計(jì)算每個學(xué)生的總分;

average=總分/5;}程序設(shè)計(jì)方法學(xué)0§1.2結(jié)構(gòu)程序設(shè)計(jì)3)輸出每個學(xué)生的5門課程的成績及平均成績;

for(i=1;i<=30;i++){輸出5門課程的成績;

printf(“%f”,average);}程序設(shè)計(jì)方法學(xué)0§1.2結(jié)構(gòu)程序設(shè)計(jì)1)輸入30名學(xué)生的5門課程的成績;

for(i=1;i<=30;i++){for(j=1;j<=5;j++)scanf(“%f”,&score);}程序設(shè)計(jì)方法學(xué)0§1.2結(jié)構(gòu)程序設(shè)計(jì)2)計(jì)算每個學(xué)生的平均成績;for(i=1;i<=30;i++){{for(j=1;j<=5;j++)

printf(“%f”,a[i][j]);}printf(“%f”,average);}程序設(shè)計(jì)方法學(xué)03)輸出每個學(xué)生的5門課程的成績及平均成績;

for(i=1;i<=30;i++){輸出5門課程的成績;

printf(“%f”,average);}§1.2結(jié)構(gòu)程序設(shè)計(jì)程序設(shè)計(jì)方法學(xué)0主要內(nèi)容:面向?qū)ο蟪绦蛟O(shè)計(jì)方法學(xué)及概念設(shè)計(jì)模式(MVC)Struts架構(gòu)JSP技術(shù)程序設(shè)計(jì)方法學(xué)0

第二章面向?qū)ο蟮某绦蛟O(shè)計(jì)方法§2.1什么是面向?qū)ο蟮某绦蛟O(shè)計(jì)考慮一個銀行系統(tǒng),該系統(tǒng)允許顧客開設(shè)不同類型的銀行賬戶,包括現(xiàn)金賬戶、支票賬戶和貸款賬戶,同時允許存款、取款和轉(zhuǎn)賬。首先考慮數(shù)據(jù)結(jié)構(gòu):Structaccount{char*name;/*姓名*/unsignedlongaccountID;/*賬號*/floatbalance;/*余額*/floatinterestYID;/*年利息*/characcountType;/*賬戶類型(現(xiàn)金x、支票z和貸款d)*/}返回首頁程序設(shè)計(jì)方法學(xué)0

§2.1什么是面向?qū)ο蟮某绦蛟O(shè)計(jì)

再考慮用三個過程分別負(fù)責(zé)存款、取款和轉(zhuǎn)賬。我們可以用三個函數(shù):MakeDeposit()WithDraw()Transfer()這種數(shù)據(jù)結(jié)構(gòu)與過程分離有許多問題,例如增加一種賬戶類型——退休賬戶(t),則三個C函數(shù)都必須重新編寫。返回首頁程序設(shè)計(jì)方法學(xué)0ClassBankAccount{

char*name;unsignedlongaccountID;floatbalance;floatinterestYID;public:voidMakeDeposit(floatamount);floatWithDraw(floatamount);boolTransfer(BankAccount&to,floatamount);};程序設(shè)計(jì)方法學(xué)0

§2.1什么是面向?qū)ο蟮某绦蛟O(shè)計(jì)

1.面向?qū)ο蟪绦蛟O(shè)計(jì)是一種新的程序設(shè)計(jì)范型。面向?qū)ο蟪绦虻闹饕Y(jié)構(gòu)特點(diǎn)是:第一,程序一般由類的定義和類的使用兩部分組成,在主程序中定義對象并規(guī)定它們之間傳遞消息的規(guī)律;第二,程序中的一切操作都是通過向?qū)ο蟀l(fā)送消息來實(shí)現(xiàn)的,對象接收到后,啟動有關(guān)方法完成相應(yīng)操作。數(shù)據(jù)與定義在它上面的用戶需要的操作構(gòu)成一個整體。當(dāng)把對銀行賬戶的操作定義在數(shù)據(jù)上,銀行賬戶就是一個類,稱為銀行賬戶類。我們可以建立許多具體的銀行賬戶,而每一個具體的銀行賬戶就是銀行賬戶類的一個對象。返回首頁程序設(shè)計(jì)方法學(xué)0

§2.1什么是面向?qū)ο蟮某绦蛟O(shè)計(jì)

2對象與類2.1對象與類的概念對象是現(xiàn)實(shí)世界的一個實(shí)體,其特性是:(1)每一個必須有一個名字以區(qū)別于其他對象;(2)用屬性來描述它的某些特征;(3)有一組操作,每一個操作決定對象的一種行為。類是一組具有共同的屬性特征和行為特征的對象的抽象。程序設(shè)計(jì)方法學(xué)0類名:教師類屬性:姓名:字符串年齡:整數(shù)學(xué)歷:字符串職稱:字符串專業(yè):字符串動作:說自己的年齡吃飯授課程序設(shè)計(jì)方法學(xué)0對象1屬性:姓名:黎明年齡:30學(xué)歷:博士職稱:教授專業(yè):計(jì)算機(jī)軟件動作:說自己的年齡吃飯授課程序設(shè)計(jì)方法學(xué)02.2.對象的狀態(tài)

我們可以把對象看成是一個帶有狀態(tài)和行為的活的實(shí)體。類的屬性的具體值為對象的狀態(tài)。對象的狀態(tài)是所有靜態(tài)屬性和這些屬性的動態(tài)值的總體。屬性:姓名:字符串年齡:整數(shù)學(xué)歷:字符串職稱:字符串專業(yè):字符串對象的狀態(tài)不僅僅是初等的數(shù)據(jù)類型(整數(shù),字符串),而且可以是另外的對象作為它的狀態(tài)的一部分。

一輛車

程序設(shè)計(jì)方法學(xué)0一輛車發(fā)動機(jī)座位車輪程序設(shè)計(jì)方法學(xué)02.3對象的交互對象之間的聯(lián)系稱為對象的交互。一個對象向另一個對象發(fā)出的請求被稱為消息。方法和消息方法也即類的外部接口的另一種說法,實(shí)際就是類對象的某一個操作,要是類對進(jìn)行某一種操作,先要給以消息,也可以方法與消息等同。因此,消息是要求對象進(jìn)行動作的說明或命令或指導(dǎo),是對象之間相互請求或相互協(xié)作的途徑。程序設(shè)計(jì)方法學(xué)0把發(fā)送消息的對象稱為發(fā)送者,接收消息的對象稱為接收者。對象間的聯(lián)系,只能通過傳遞消息來進(jìn)行。對象也只有在收到消息后才能選用方法而被激活。消息具有三個性質(zhì):1)同一個對象可以接收不同形式的多個消息,做出不同的響應(yīng)。2)

相同形式的消息可以傳遞給不同的對象,所作出的響應(yīng)可以是不同的。3)消息的發(fā)送可以不考慮具體的接收者,對象可以響應(yīng)消息,也可以不響應(yīng)。程序設(shè)計(jì)方法學(xué)0C++語言中對類、對象、方法、消息的實(shí)現(xiàn)實(shí)例Classperson{private:charname[20];intage;charadd[40];charsex;voidprintname(){cout<<name;}\\私有消息voidprintage(){cout<<age;}voidprintadd(){cout<<add;}voidprintsex(){cout<<sex;}public:voidprintme(){printname();\\公有消息

printage();printadd();printsex();}};//這是類,有類名person,內(nèi)部表示數(shù)據(jù),提供外部接口printme()及實(shí)現(xiàn)。有了這個類就可以定義各種各樣的人(對象),及給對象一個消息,它就會自報(bào)家門。程序設(shè)計(jì)方法學(xué)0#include<iostream.h>main(){persony;//y是對象

y.printme();//這是消息,向?qū)ο髖發(fā)送了方法printme()的消息。}注:y.printname();y.printage();等都是錯誤的。

程序設(shè)計(jì)方法學(xué)02.4數(shù)據(jù)的抽象與封裝2.4.1現(xiàn)實(shí)世界中的抽象與封裝2.4.2數(shù)據(jù)的抽象與封裝的基本概念將數(shù)據(jù)結(jié)構(gòu)和作用于數(shù)據(jù)結(jié)構(gòu)上的操作組成一個實(shí)體,數(shù)據(jù)的表示方式和對數(shù)據(jù)的操作細(xì)節(jié)被隱藏起來,用戶通過操作接口對數(shù)據(jù)進(jìn)行操作。這就是數(shù)據(jù)的封裝。程序設(shè)計(jì)方法學(xué)0對象的封裝是:(1)

對象具有一個清楚的邊界,對象的私有數(shù)據(jù)、成員函數(shù)的細(xì)節(jié)被封裝在該邊界內(nèi);(2)

具有一個描述對象與其他對象如何相互作用的接口,該接口必須說明消息傳遞的使用方法;(3)

對象內(nèi)部的代碼和數(shù)據(jù)應(yīng)受到保護(hù),其他對象不能直接修改。程序設(shè)計(jì)方法學(xué)02.5

對象的特性(1)

封裝性

封裝是指將一個數(shù)據(jù)和這個數(shù)據(jù)有關(guān)的操作集合放在一起形成一個能動的實(shí)體——對象,有一個清除的邊界包裝,對象,類的所有私有數(shù)據(jù)內(nèi)部程序(成員函數(shù))的細(xì)節(jié)都被固定在這個邊界內(nèi)。具有一個接口,這個接口描述了對象對外界的消息、方法和響應(yīng)。對象受封殼保護(hù),外界不能直接修改使用本對象所擁有的數(shù)據(jù)和代碼。(2)

模塊獨(dú)立性(3)

動態(tài)連接性(4)

易維護(hù)性程序設(shè)計(jì)方法學(xué)02.6繼承性2.6.1繼承的概念以面向?qū)ο蟪绦蛟O(shè)計(jì)的觀點(diǎn)來看,繼承所表達(dá)的是對象類之間相關(guān)的關(guān)系。這種關(guān)系使得某類對象可以繼承另外一類對象的特征和能力。

類之間具有繼承關(guān)系,則有下列特性:(1)

類間具有共享特性(包括數(shù)據(jù)和程序代碼的共享);(2)

類間具有判別或新增部分(包括非共享的數(shù)據(jù)和程序代碼);(3)

類間具有層次結(jié)構(gòu)。

程序設(shè)計(jì)方法學(xué)0

假設(shè)有兩個類A和B,若類B繼承類A,則屬于類B中的對象具有類A的一切特征(包括數(shù)據(jù)屬性和操作),這時,我們稱被繼承類A為基類或父類或超類;而稱繼承類B為類A的派生類或子類。同時,我們還可以說,類B是從類A中派生出來的。如果類B從類A派生出來,而類C又是從類B派生出來的,就構(gòu)成了類的層次。繼承機(jī)制允許派生類繼承基類的數(shù)據(jù)和操作(即數(shù)據(jù)成員和成員函數(shù)),也就是說,允許派生類使用基類的數(shù)據(jù)和操作。同時派生類還可以增加新的操作和數(shù)據(jù)。

程序設(shè)計(jì)方法學(xué)02.6.2

繼承的分類從繼承源上分,繼承分為單繼承和多繼承。程序設(shè)計(jì)方法學(xué)0

2.6.3

繼承與封裝的關(guān)系在面向?qū)ο笙到y(tǒng)中,封裝的單位是對象,也就是說,把一個屬于某一類的對象封裝起來,使其數(shù)據(jù)和操作成為一個整體。一個對象,無論它是基類的實(shí)例,還是派生類的實(shí)例,都是一個被封裝的實(shí)體。因此,我們得出結(jié)論,繼承機(jī)制的引入并不影響對象的封裝性。程序設(shè)計(jì)方法學(xué)0

繼承是類之間的相交關(guān)系,即類間的繼承關(guān)系。要進(jìn)行類間繼承他們之間應(yīng)有:類間具有共享特征(包括數(shù)據(jù)和程序共享)類間具有細(xì)微的差別或有新增部分(非共享的數(shù)據(jù)和代碼)類間具有層次結(jié)構(gòu)從繼承源上分,繼承分為單繼承和多繼承。從繼承內(nèi)容上分,繼承可以對數(shù)據(jù)(結(jié)構(gòu)特性)的繼承又具有操作(行為)的繼承。程序設(shè)計(jì)方法學(xué)02.7多態(tài)性2.7.1什么是多態(tài)性面向?qū)ο笙到y(tǒng)的多態(tài)性是指不同的對象收到相同的消息時產(chǎn)生多種不同的行為方式。2.7.2重載的概念重載指的是一個類中有多個同名的方法,但這些方法在操作數(shù)或和操作數(shù)的類型上有區(qū)別。如:多態(tài)性:值收到同一個消息名后,對象可以采用多種不同的行為(態(tài)度)。程序設(shè)計(jì)方法學(xué)0publicclassA{intage;Stringname;publicvoidsetValue(inti){age=I;}publicvoidsetValue(Strings){name=s;}}程序設(shè)計(jì)方法學(xué)0

2.8面向?qū)ο蟪绦蛟O(shè)計(jì)語言面向?qū)ο蟮某绦蛟O(shè)計(jì),必須使用面向?qū)ο蟪绦蛟O(shè)計(jì)語言。面向?qū)ο蟪绦蛟O(shè)計(jì)語言應(yīng)該具備以下特征:(1)

它支持對象的概念(包括對象所有的特性,如封裝等);(2)

它要求對象屬于類;(3)

它提供繼承機(jī)制。程序設(shè)計(jì)方法學(xué)0要點(diǎn): (1)

面向?qū)ο蟮某绦蛟O(shè)計(jì)將數(shù)據(jù)和數(shù)據(jù)的操作放在一起,它將對象及對象的操作抽象成一種新的數(shù)據(jù)類型稱為類。(2)

對象是其自身所具有的狀態(tài)特征及可以對這些狀態(tài)施加的操作結(jié)合一起所構(gòu)成的獨(dú)立實(shí)體。(3)

類是對一組客觀對象的抽象,將該組對象共同特征集中起來。(4)

面向?qū)ο笙到y(tǒng)的特性是封裝性、繼承性、多態(tài)性。抽象:抽象分類從一組對象為起點(diǎn),抽取公共的行為將其放到一個類中,不同類的對象具有不同的行為。程序設(shè)計(jì)方法學(xué)02.2設(shè)計(jì)模式與應(yīng)用框架1.定義設(shè)計(jì)模式:設(shè)計(jì)模式用以解決在特定設(shè)計(jì)情況下出現(xiàn)的重復(fù)設(shè)計(jì)問題,并給出該問題的一種解決方案。2.應(yīng)用框架:在某特定應(yīng)用領(lǐng)域中,程序之間的共同結(jié)構(gòu)。3.框架:是一個可復(fù)用的組件,它規(guī)定了應(yīng)用的體系結(jié)構(gòu),闡明了整個設(shè)計(jì)、協(xié)作組件之間的依賴關(guān)系,責(zé)任分配和控制流程,表現(xiàn)為一組抽象類以及其實(shí)例之間協(xié)作的方法,它為組件復(fù)用提供了上下文關(guān)系,因此通常組件庫的大規(guī)模重用也需要框架。程序設(shè)計(jì)方法學(xué)02.2設(shè)計(jì)模式與應(yīng)用框架4.設(shè)計(jì)模式與框架區(qū)別:(1)設(shè)計(jì)模式比框架抽象(2)一個框架含有一個或多個設(shè)計(jì)模式程序設(shè)計(jì)方法學(xué)02.3MVC設(shè)計(jì)模式1.MVC模式是起源于70年代的施樂PARC研究中心。2.MVC即Model-View-Controller的縮寫,3.MVC模式是為了簡化在許多應(yīng)用程序中普遍存在的三類主要功能:1)在后臺存儲或遠(yuǎn)程系統(tǒng)中維護(hù)數(shù)據(jù);2)建立最終用戶的表示層;3)維護(hù)條件邏輯來決定哪一個屏幕將要顯示給用戶,錯誤發(fā)生時會發(fā)生什么,系統(tǒng)如何升級以及升級時會發(fā)生什么。程序設(shè)計(jì)方法學(xué)02.3MVC設(shè)計(jì)模式4.使用MVC應(yīng)用程序被分成三個核心部件:模型、視圖、控制器,它們各自處理自己的任務(wù)。

程序設(shè)計(jì)方法學(xué)0

2.3MVC設(shè)計(jì)模式1).模型(Model):是業(yè)務(wù)流程/狀態(tài)的處理以及業(yè)務(wù)規(guī)則的制定,是應(yīng)用程序的主體部分。模型表示業(yè)務(wù)數(shù)據(jù),或者業(yè)務(wù)邏輯。2).視圖(View)是應(yīng)用程序中用戶界面相關(guān)的部分,是用戶看到并與之交互的界面代表用戶交互界面。3).控制(Controller)為從用戶接收請求,將模型與視圖匹配在一起,共同完成用戶的請求。程序設(shè)計(jì)方法學(xué)0

2.3MVC設(shè)計(jì)模式5.處理過程程序設(shè)計(jì)方法學(xué)02.4Struts1.Struts的起源

Struts最早是作為ApacheJakarta項(xiàng)目的組成部分版本為Struts1.1,

下載。

程序設(shè)計(jì)方法學(xué)02.4Struts2.Struts體系結(jié)構(gòu)

程序設(shè)計(jì)方法學(xué)02.4Struts3.作為一個MVC的框架,Struts對Model、View和Controller都提供了對應(yīng)的實(shí)現(xiàn)組件

(1)Controller控制器的作用是從客戶端接受請求,并且選擇執(zhí)行相應(yīng)的業(yè)務(wù)邏輯,然后把響應(yīng)結(jié)果送回到客戶端。在Struts中Controller功能由ActionServlet和ActionMapping對象構(gòu)成,核心是一個Servlet類型的對象ActionServlet,它用來接受客戶端的請求。

程序設(shè)計(jì)方法學(xué)02.4Struts(2)

Model在Struts中,Model由一系列的JavaBean來實(shí)現(xiàn),而且還可以自己定義業(yè)務(wù)處理的Bean。(3)ViewStruts應(yīng)用中的View部分是通過JSP技術(shù)實(shí)現(xiàn)的。

程序設(shè)計(jì)方法學(xué)02.4Struts4.Struts工作流程

程序設(shè)計(jì)方法學(xué)02.4Struts5.一個實(shí)例

程序設(shè)計(jì)方法學(xué)0程序設(shè)計(jì)方法學(xué)0程序設(shè)計(jì)方法學(xué)02.4Struts6.Struts優(yōu)點(diǎn)

struts跟Tomcat、Turbine等諸多Apache項(xiàng)目一樣,是開源軟件,這是它的一大優(yōu)點(diǎn)。使開發(fā)者能更深入的了解其內(nèi)部實(shí)現(xiàn)機(jī)制。

優(yōu)點(diǎn)主要集中體現(xiàn)在兩個方面:Taglib和頁面導(dǎo)航。Taglib是Struts的標(biāo)記庫,靈活動用,能大大提高開發(fā)效率。另外,就目前國內(nèi)的JSP開發(fā)者而言,除了使用JSP自帶的常用標(biāo)記外,很少開發(fā)自己的標(biāo)記,或許Struts是一個很好的起點(diǎn)。

頁面導(dǎo)航,使系統(tǒng)的脈絡(luò)更加清晰。通過一個配置文件,即可把握整個系統(tǒng)各部分之間的聯(lián)系,這對于后期的維護(hù)有著莫大的好處。尤其是當(dāng)另一批開發(fā)者接手這個項(xiàng)目時,這種優(yōu)勢體現(xiàn)得更加明顯。

程序設(shè)計(jì)方法學(xué)0

2.4Struts7.Struts缺點(diǎn)

Taglib是Struts的一大優(yōu)勢,但對于初學(xué)者而言,卻需要一個持續(xù)學(xué)習(xí)的過程,甚至還會打亂你網(wǎng)頁編寫的習(xí)慣,但是,當(dāng)你習(xí)慣了它時,你會覺得它真的很棒。

Struts將MVC的Controller一分為三,在獲得結(jié)構(gòu)更加清晰的同時,也增加了系統(tǒng)的復(fù)雜度。

Struts從產(chǎn)生到現(xiàn)在逐步越來越多運(yùn)用于商業(yè)軟件。雖然它現(xiàn)在還有不少缺點(diǎn),但它是一種非常優(yōu)秀的J2EEMVC實(shí)現(xiàn)方式。程序設(shè)計(jì)方法學(xué)0

2.4Struts8.Struts項(xiàng)目實(shí)施經(jīng)驗(yàn)

1.首先需要有一個很好的整體規(guī)劃,整個系統(tǒng)中包括哪幾個模塊。2.建議不要冒然采用Struts。3.Struts適合于各種大小的項(xiàng)目。

程序設(shè)計(jì)方法學(xué)0系統(tǒng)的內(nèi)部狀態(tài),能夠改變狀態(tài)的行為。我們可以把狀態(tài)信息當(dāng)作名詞(事物),把行為當(dāng)作動詞(事物狀態(tài)的改變)。

決定執(zhí)行什么商業(yè)邏輯功能,然后將產(chǎn)生下一步用戶界面的責(zé)任委派給一個適當(dāng)?shù)腣iew組件。在Struts中,controller的基本組件是一個

ActionServlet類的servlet。這個servlet通過定義一組映射(由Java接口

ActionMapping描述)來配置。

通常使用JSP技術(shù)來構(gòu)建。JSP頁面包含稱為“模版文本”的靜態(tài)HTML(或XML)文本,加上插入的基于對特殊行為標(biāo)記解釋的動態(tài)內(nèi)容。程序設(shè)計(jì)方法學(xué)02.5JSP技術(shù)1.JSP簡介

JSP是JavaServerPages(Java服務(wù)器頁面)的縮寫,是由Sun公司在java語言上開發(fā)出來的一種動態(tài)網(wǎng)頁制作技術(shù).程序設(shè)計(jì)方法學(xué)02.5JSP技術(shù)2.JSP實(shí)現(xiàn)方式

程序設(shè)計(jì)方法學(xué)0程序設(shè)計(jì)方法學(xué)02.5JSP技術(shù)3.JSP特點(diǎn)1)應(yīng)用程序內(nèi)容與頁面顯示分離2)一次編寫,到處運(yùn)行3)強(qiáng)調(diào)可重用的組件4)采用標(biāo)記簡化頁面的開發(fā)

程序設(shè)計(jì)方法學(xué)02.5JSP技術(shù)4.JSP開發(fā)環(huán)境的建立(J2SDK+Tomcat)

第一部分

JAVA環(huán)境安裝

1)J2SDK(Java2SoftwareDevelopment)或者簡稱JDK(JavaDevelopmentKit)目前J2SDK的最新版本是1.4.2_01

下載地址:

2)安裝

程序設(shè)計(jì)方法學(xué)02.5JSP技術(shù)3)

配置環(huán)境變量

4)新建系統(tǒng)變量5)建第一個系統(tǒng)變量:JAVA_HOME

值:F:\jdk1.46)建第二個系統(tǒng)變量:CLASSPATH

值:.;F:\jdk1.4\lib\tools.jar7)修改,不是新建。系統(tǒng)變量:PATH

的新值是在原有值前加上F:\jdk1.4\bin;8)測試j2sdk的安裝與環(huán)境變量設(shè)置是否正確

程序設(shè)計(jì)方法學(xué)02.5JSP技術(shù)

程序設(shè)計(jì)方法學(xué)02.5JSP技術(shù)第二部分

Tomcat4.1安裝

1、安裝Tomcat

直接運(yùn)行下載的jakarta-tomcat-4.0.1.exe,按照一般的Windows程序安裝步驟即可安裝好Tomcat,安裝時它會自動尋找J2SDK的位置。例如安裝到f:\tomcat4.1。

程序設(shè)計(jì)方法學(xué)02.5JSP技術(shù)

2、配置Tomcat的環(huán)境變量添加一個新的環(huán)境變量CATALINA_HOME,變量值為f:\tomcat4.1,添加方法同J2SDK環(huán)境變量的配置方法。

程序設(shè)計(jì)方法學(xué)02.5JSP技術(shù)

3、測試默認(rèn)服務(wù)設(shè)置完畢后就可以運(yùn)行Tomcat服務(wù)器了。用f:\tomcat4\bin\startup.exe啟動Tomcat,用f:\tomcat4\bin\shutdown.exe關(guān)閉。啟動Tomcat后,打開瀏覽器,在地址欄中輸入(Tomcat默認(rèn)端口為8080),如果在瀏覽器中看到Tomcat的歡迎界面,表示Tomcat工作正常。

程序設(shè)計(jì)方法學(xué)02.5JSP技術(shù)4、測試項(xiàng)目把剛才準(zhǔn)備好的test.jsp放在f:\Tomcat\webapps\examples\jsp目錄下,在地址欄中輸入,如果瀏覽器中顯示"HelloWorld!",則說明你的JSP環(huán)境配置成功了!

程序設(shè)計(jì)方法學(xué)02.5JSP技術(shù)1、查找資料,總結(jié)目前支持JSP的WEB服務(wù)器軟件及應(yīng)用服務(wù)器軟件的優(yōu)缺點(diǎn)。2、查找資料,對比JSP與ASP兩種實(shí)現(xiàn)動態(tài)WEB站點(diǎn)的技術(shù)。3、配置建立JSP開發(fā)環(huán)境

程序設(shè)計(jì)方法學(xué)02.6JSP基本語法1、helloworld2、獲取客戶端IP3、傳遞動態(tài)參數(shù)

程序設(shè)計(jì)方法學(xué)02.6JSP基本語法1、JSP腳本元素2、JSP指令3、JSP動作元素

程序設(shè)計(jì)方法學(xué)02.6JSP基本語法1、JSP腳本元素包括:HTML注釋隱藏注釋聲明表達(dá)式程序段

程序設(shè)計(jì)方法學(xué)02.6JSP基本語法1.1HTML注釋:生成客戶端能夠看見的注釋

語法:<!--comment[<%=expression%>]-->例1:<!--Thistheuserloginscreen-->例2:<!--2+3=<%=2+3%>-->

程序設(shè)計(jì)方法學(xué)02.6JSP基本語法1.2隱藏注釋:包含在JSP腳本中,不會發(fā)給客戶端

語法:<%--comment--%>例1:<%--這是隱藏的注釋--%>

程序設(shè)計(jì)方法學(xué)02.6JSP基本語法1

溫馨提示

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

評論

0/150

提交評論