




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于web的java五子棋對(duì)弈程序的設(shè)計(jì)與實(shí)現(xiàn)摘要人工智能是一門正在迅速發(fā)展的新興的,綜合性很強(qiáng)的交叉科學(xué)。它與生物工程、空間技術(shù)一起被并列為二十一世界三大尖端技術(shù)。它的中心任務(wù)是研究如何使計(jì)算機(jī)去做那些過(guò)去只能靠人的智力才能做的工作。目前各發(fā)達(dá)國(guó)家都把人工智能作為重點(diǎn)項(xiàng)目,列入本國(guó)的高科技發(fā)展計(jì)劃當(dāng)中,投入巨大的人力和物力。計(jì)算機(jī)人機(jī)對(duì)弈也是其中之一。作為人智能研究的一個(gè)重要分支,計(jì)算機(jī)博弈是檢驗(yàn)人工水平的一個(gè)重要方面。它的研究為人工智能帶來(lái)了很多重要的方法和理論,產(chǎn)生了廣泛的社會(huì)影響和學(xué)術(shù)影響。五子棋人機(jī)對(duì)弈是計(jì)算機(jī)博弈中的一種。研究其計(jì)算機(jī)算法,可以讓我們看到人工智能的稚形,也有助于我們
2、人腦的開(kāi)發(fā)。五子棋是我國(guó)發(fā)明的,研究它可以讓更多的外國(guó)人了解五子棋,這有助于我國(guó)優(yōu)秀文化的推廣。關(guān)鍵詞: 人工智能;計(jì)算人機(jī)對(duì)弈;五子棋;jspjava renju play chess program design and implementation based on webabstractartificial intelligence is a rapidly developing new, integrated a strong frontier science. it is with bio-engineering, space technology has been listed
3、as 21 in the world along with the three cutting-edge technology. its central task is to study how to make the computer do that in the past to rely on human intelligence to do. ai is currently regarded as the focus of the developed countries included in this cars high-tech development projects invest
4、ed tremendous human and material resources. man-machine chess computer is one of them. as a human study of an important branch of intelligence, the computer game to test the level of an important aspect of the manual. its research in artificial intelligence has resulted in many important methods and
5、 theories to produce a wide range of social impact and academic impact. man-machine chess game renju in one of the computer. to study the computer algorithm, we can see the beginning of artificial intelligence shadow, but also help us to human brain development. backgammon invented in china, and the
6、 research it can allow more foreigners to understand and help to promote chinas traditional culture.keywords: artificial intelligence, man-machine cchess computer, man-machine chess, algorithm; js目 錄摘要abstract1 引言12 五子棋對(duì)弈程序的可行性分析22.1 五子棋系統(tǒng)設(shè)計(jì)思路22.2 經(jīng)濟(jì)可行性分析22.3技術(shù)上的可行性22.4 管理上的可行性23 java五子棋對(duì)弈現(xiàn)的需求分析43.1
7、 用戶需求分析43.1.1 普通用戶主要需要43.1.2 系級(jí)管理員主要需要:43.1.3 系統(tǒng)用例圖:53.2 數(shù)據(jù)字典的描述53.2.1用戶信息表的數(shù)據(jù)字典的描述:53.2.2用戶每次游戲信息表的數(shù)據(jù)字典描述:63.2.3 用戶每盤棋信息表的數(shù)據(jù)字典描述:63.2.4 用戶每步棋信息表的數(shù)據(jù)字典描述:73.3 五子棋對(duì)弈系統(tǒng)的數(shù)據(jù)流圖73.3.1 用戶登錄數(shù)據(jù)流圖(dfd)73.3.2 普通用戶界面顯示數(shù)據(jù)流圖(dfd)83.3.3 管理員用戶界面顯示數(shù)據(jù)流圖(dfd)93.3.4 用戶棋局回放數(shù)據(jù)流圖(dfd)94 java五子棋對(duì)弈系統(tǒng)分析與設(shè)計(jì)104.1 系統(tǒng)設(shè)計(jì)總體思想、目標(biāo)104
8、.2 五子棋人機(jī)對(duì)弈系統(tǒng)的er模型114.3 java五子棋對(duì)弈系統(tǒng)結(jié)構(gòu)、功能設(shè)計(jì)134.3.1 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)134.3.2 系統(tǒng)功能模塊設(shè)計(jì)144.3.3 設(shè)計(jì)思路154.4 程序設(shè)計(jì)分析164.5 類的設(shè)計(jì)174.6 五子棋對(duì)弈系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)214.6.1 系統(tǒng)用戶表214.6.2 用戶棋局表224.6.3 用戶棋盤表224.6.4 用戶下棋信息表235 五子棋相關(guān)基礎(chǔ)255.1 五子棋相關(guān)解釋255.2 五子棋相關(guān)規(guī)則255.3 五子棋常用術(shù)語(yǔ)266 系統(tǒng)平臺(tái)、計(jì)算模式及技術(shù)296.1 計(jì)算模式的進(jìn)化及本系統(tǒng)選用的模式優(yōu)越性296.1.1 集中式管理主機(jī)/終端模式296.1.2 cli
9、ent/server模式296.1.3 brower/server模式306.1.4 系統(tǒng)采用b/s三層體系結(jié)構(gòu)模式的優(yōu)越性306.2 jsp技術(shù)326.2.1 jsp簡(jiǎn)介326.2.2 jsp內(nèi)建對(duì)象336.3 mvc設(shè)計(jì)模式356.4 servlet366.4.1 servlet簡(jiǎn)介366.4.2 servlet 優(yōu)勢(shì)376.5 mysql 數(shù)據(jù)庫(kù)386.5.1 mysql 概述386.5.2 mysql 優(yōu)勢(shì)386.6 tomcat服務(wù)器工具概述396.7 環(huán)境的安裝407 系統(tǒng)實(shí)現(xiàn)427.1 用戶登陸流程427.2 用戶進(jìn)入游戲(初始化數(shù)據(jù)庫(kù)棋盤)流程437.3 用戶玩游戲流程447.
10、4添加新用戶458 java五子棋對(duì)弈程序設(shè)計(jì)的技術(shù)關(guān)鍵478.1 javascript中 ajax技術(shù)478.2 電腦下棋算法設(shè)計(jì)509 系統(tǒng)試運(yùn)行結(jié)果與評(píng)價(jià)6710 結(jié)束語(yǔ)68參考文獻(xiàn)致謝附錄1 引言電腦已經(jīng)深入到日常工作和生活的方方面面,比如文字處理、信息管理、輔助設(shè)計(jì)、圖形圖像處理、教育培訓(xùn)以及游戲娛樂(lè)等。windows系統(tǒng)的推出使電腦從高雅的學(xué)術(shù)殿堂走入了尋常百姓家,各行各業(yè)的人們無(wú)須經(jīng)過(guò)特別的訓(xùn)練就能夠使用電腦完成許許多多復(fù)雜的工作。然而,雖然現(xiàn)在世界上已經(jīng)充滿了花樣繁多的各種軟件,但它們依然不能滿足用戶的各種特殊需要,人們還不得不開(kāi)發(fā)適合自己特殊需求的軟件。java語(yǔ)言作為一種面
11、向?qū)ο蟮木幊陶Z(yǔ)言,具有分布式,可移植,高性能,多線程等特點(diǎn)。通過(guò)系統(tǒng)的學(xué)習(xí),人們就可以使用它開(kāi)發(fā)出功能齊全,滿足特殊需求的應(yīng)用程序。java語(yǔ)言易學(xué)易用,對(duì)學(xué)習(xí)者掌握技能,開(kāi)拓思維都有很大的幫助。 我作為一名學(xué)生,在系統(tǒng)的學(xué)習(xí)了java語(yǔ)言之后,經(jīng)常用它搞一些小程序。這次畢業(yè)設(shè)計(jì),正好將學(xué)過(guò)的java語(yǔ)言中的各種技術(shù)綜合起來(lái),用myeclipse開(kāi)發(fā)工具編寫一個(gè)小游戲,既對(duì)自己學(xué)過(guò)的技能進(jìn)行一次檢驗(yàn),也能系統(tǒng)地將學(xué)過(guò)的知識(shí)復(fù)習(xí)鞏固。隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)技術(shù)的普及范圍越來(lái)越廣,網(wǎng)絡(luò)能夠提供的服務(wù)多樣、便捷,已經(jīng)成為人們生產(chǎn)生活中不可缺少的重要組成部分。如今網(wǎng)絡(luò)休閑游戲發(fā)展迅速,它憑借健
12、康、方便、互動(dòng)性強(qiáng)、益智等諸多優(yōu)點(diǎn),成為大部分現(xiàn)代人休閑娛樂(lè)的首選。2 五子棋對(duì)弈程序的可行性分析 可行性分析是通過(guò)對(duì)項(xiàng)目的主要內(nèi)容和配套條件,如市場(chǎng)需求、資源供應(yīng)、建設(shè)規(guī)模、工藝路線、設(shè)備選型、環(huán)境影響、資金籌措、盈利能力等,從技術(shù)、經(jīng)濟(jì)、工 程等方面進(jìn)行調(diào)查研究和分析比較,并對(duì)項(xiàng)目建成以后可能取得的財(cái)務(wù)、經(jīng)濟(jì)效益及社會(huì)環(huán)境影響進(jìn)行預(yù)測(cè),從而提出該項(xiàng)目是否值得投資和如何進(jìn)行建設(shè)的咨詢意 見(jiàn),為項(xiàng)目決策提供依據(jù)的一種綜合性的系統(tǒng)分析方法。 2.1 五子棋系統(tǒng)設(shè)計(jì)思路 五子棋系統(tǒng)基本設(shè)計(jì)思路是把系統(tǒng)按照實(shí)現(xiàn)模塊進(jìn)行分解,利用java進(jìn)行編程。2.2 經(jīng)濟(jì)可行性分析主要是對(duì)項(xiàng)目的經(jīng)濟(jì)效益進(jìn)行評(píng)價(jià),
13、本系統(tǒng)開(kāi)發(fā)費(fèi)用對(duì)于學(xué)員在經(jīng)濟(jì)上是可以接受的,并且本系統(tǒng)實(shí)施后可以讓用戶很好的對(duì)五子棋進(jìn)行更加深入的研究,有助于開(kāi)發(fā)用戶智力。2.3技術(shù)上的可行性 技術(shù)上的可行性分析主要技術(shù)條件是否順利完成開(kāi)發(fā)工作,硬、軟件是否滿足開(kāi)發(fā)者的需要等。該系統(tǒng)采用的簡(jiǎn)單的二層結(jié)構(gòu),數(shù)據(jù)庫(kù)選用mysql,它相對(duì)于其他的數(shù)據(jù)庫(kù)來(lái)說(shuō),安裝簡(jiǎn)單,靈活性、安全性和易用性為數(shù)據(jù)庫(kù)編程提供了良好的條件。因此,系統(tǒng)的軟件開(kāi)發(fā)平臺(tái)已成熟可行。硬件方面,科技飛速發(fā)展的今天,硬件更新的速度越來(lái)越快,容量越來(lái)越大,可靠性越來(lái)越高,價(jià)格越來(lái)越低,棋硬件平臺(tái)完全能滿足此系統(tǒng)的需求。2.4 管理上的可行性主要是管理人員是否支持,現(xiàn)有的管理制度和方
14、法是否科學(xué),規(guī)章制度是否齊全,原始數(shù)據(jù)是否正確等。規(guī)章制度和管理方法為系統(tǒng)的建設(shè)提供了制度保障。綜上所述,此系統(tǒng)開(kāi)發(fā)目標(biāo)已明確,在技術(shù)和經(jīng)濟(jì)等方面都可行,并且投入少、見(jiàn)效快。因此系統(tǒng)的開(kāi)發(fā)是完全可行的。3 java五子棋對(duì)弈現(xiàn)的需求分析本系統(tǒng)主要根據(jù)根據(jù)老師提出的要求進(jìn)行的需求分析:3.1 用戶需求分析 根據(jù)老師提出的要求,我們把系統(tǒng)的用戶分為兩類:普通用戶、系統(tǒng)管理員用戶,下面是我們對(duì)兩種用戶的需求進(jìn)行的分析:3.1.1 普通用戶主要需要根據(jù)分析,普通用戶具有的功能:(1)用戶登錄:用戶根據(jù)自己的密碼登錄本系統(tǒng)。(2)棋局回放:用戶根據(jù)自己的需求回放自己以前下過(guò)的棋局。(3)玩五子棋:用戶在
15、點(diǎn)擊playgame后會(huì)進(jìn)入游戲界面玩游戲。(4)悔棋功能:在下棋過(guò)程中,用戶根據(jù)自己的需求,選擇悔棋。(5)更改密碼:用戶可以根據(jù)自己的需求更改自己的密碼。3.1.2 系級(jí)管理員主要需要:系統(tǒng)管理員是本系統(tǒng)的最高權(quán)限的管理員,他不僅具有普通用戶的各種功能,還具有他獨(dú)有的功能一下是系統(tǒng)管理員所具備的功能:(1)用戶登錄:用戶根據(jù)自己的密碼登錄本系統(tǒng)。(2)棋局回放:用戶根據(jù)自己的需求回放自己以前下過(guò)的棋局。(3)玩五子棋:用戶在點(diǎn)擊playgame后會(huì)進(jìn)入游戲界面玩游戲。(4)悔棋功能:在下棋過(guò)程中,用戶根據(jù)自己的需求,選擇悔棋。(5)更改密碼:用戶可以根據(jù)自己的需求更改自己的密碼。(6)管理
16、普通用戶:可以對(duì)普通用戶進(jìn)行添加和刪除。3.1.3 系統(tǒng)用例圖:圖3-1 系統(tǒng)用例圖3.2 數(shù)據(jù)字典的描述數(shù)據(jù)字典是關(guān)于數(shù)據(jù)的信息的集合,也就是對(duì)數(shù)據(jù)流圖包含的所有元素的定義的集合。任何字典最重要的用途都是供人查閱對(duì)不了解的條目的解釋,數(shù)據(jù)字典的作用也正是在軟件分析和設(shè)計(jì)的過(guò)程中給人提供關(guān)于數(shù)據(jù)的描述信息。在本系統(tǒng)中涉及到多種數(shù)據(jù)的存儲(chǔ),其中包括用戶信息、用戶每次玩游戲的信息、用戶每盤棋的信息、用戶每步棋的信息。下面是給出的本系統(tǒng)的數(shù)據(jù)字典描述3.2.1用戶信息表的數(shù)據(jù)字典的描述:描述:用與儲(chǔ)存用戶信息,其中有用戶名,當(dāng)用戶登錄后會(huì)在用戶首頁(yè)上顯示。用戶密碼用于登錄本系統(tǒng),用戶權(quán)限是整數(shù),1代
17、表普通用戶,既可以通過(guò)注冊(cè)的用戶;0代表系統(tǒng)用戶,是系統(tǒng)自帶的不可以通過(guò)注冊(cè)獲得。名字:用戶信息表描述:用戶可以根據(jù)自己的密碼登陸系統(tǒng),系統(tǒng)根據(jù)用戶的信息來(lái)判斷用戶的權(quán)限,主要存儲(chǔ)的是用戶用戶信息和用戶權(quán)限。定義:用戶名+用戶密碼+用戶權(quán)限位置:數(shù)據(jù)庫(kù)用戶信息表(userinfo)3.2.2用戶每次游戲信息表的數(shù)據(jù)字典描述:名字:用戶每次游戲信息表描述:用于記錄用戶每次玩游戲的信息。定義:用戶名+用戶該盤局的編號(hào)+游戲時(shí)間位置:數(shù)據(jù)庫(kù)用戶每次游戲信息表(userdish)描述:這個(gè)表主要用于記錄用戶玩游戲的時(shí)間,用戶棋盤編號(hào)是數(shù)據(jù)庫(kù)自動(dòng)生成的,游戲時(shí)間主要用于用戶要回放棋局的查找。3.2.3
18、用戶每盤棋信息表的數(shù)據(jù)字典描述:描述:該表用戶儲(chǔ)存棋局信息,主要用于電腦下棋時(shí)通過(guò)棋局編號(hào)提取數(shù)據(jù),從而計(jì)算出電腦該下哪一步棋,其中棋子狀態(tài)分為4種,-1表示該點(diǎn)不在棋盤上,0表示該坐標(biāo)無(wú)棋子,1表示白棋2表示黑棋 名字:用戶每盤棋信息表描述:用于記錄用戶每盤棋棋盤的信息。定義:用戶該盤局編號(hào)+棋盤上棋子的x軸坐標(biāo)+棋盤上棋子的y軸坐標(biāo)+該坐標(biāo)上棋子狀態(tài)位置:數(shù)據(jù)庫(kù)用戶每盤棋信息表(userqipan)3.2.4 用戶每步棋信息表的數(shù)據(jù)字典描述:描述:該表主要儲(chǔ)存用戶和電腦下的每一步棋,用戶與棋盤回放時(shí)在數(shù)據(jù)庫(kù)提取數(shù)據(jù) 名字:用戶每步棋信息表描述:用于記錄用戶每步的信息。定義:用戶該盤棋的編號(hào)
19、+用戶該步棋的編號(hào)+該步棋電腦下棋的y軸坐標(biāo)+該步棋電腦下棋的x軸坐標(biāo)+該步棋用戶下棋的y軸坐標(biāo)+該步棋用戶下棋的x軸坐標(biāo)位置:數(shù)據(jù)庫(kù)用戶每盤棋信息表(userstep)3.3 五子棋對(duì)弈系統(tǒng)的數(shù)據(jù)流圖數(shù)據(jù)流圖(data flow diagram):簡(jiǎn)稱dfd,它從數(shù)據(jù)傳遞和加工角度,以圖形方式來(lái)表達(dá)系統(tǒng)的邏輯功能、數(shù)據(jù)在系統(tǒng)內(nèi)部的邏輯流向和邏輯變換過(guò)程,是結(jié)構(gòu)化系統(tǒng)分析方法的主要表達(dá)工具及用于表示軟件模型的一種圖示方法。下面簡(jiǎn)要介紹部分需求的數(shù)據(jù)流圖:3.3.1 用戶登錄數(shù)據(jù)流圖(dfd)在用戶登錄過(guò)程當(dāng)中,用戶輸入的信息經(jīng)過(guò)加工處理后,通過(guò)對(duì)數(shù)據(jù)庫(kù)的查詢后返回給程序該用戶的權(quán)限,數(shù)據(jù)流圖(
20、圖3-1)如下:用戶接受用戶信息處 理信 息輸入信息查詢信息用戶信息表(userinfo)用戶產(chǎn)生查詢結(jié)果權(quán)限信息權(quán)限信息圖3-1 用戶登錄數(shù)據(jù)流圖3.3.2 普通用戶界面顯示數(shù)據(jù)流圖(dfd)知道用戶權(quán)限后,通過(guò)查詢用戶游戲信息,顯示用戶游戲信息。數(shù)據(jù)流圖(圖3-2)如下:用戶接受權(quán)限信息處理信息用戶每次游戲信息(userdish)產(chǎn)生結(jié)果用戶權(quán)限查詢信息游戲信息游戲信息圖3-2 普通用戶數(shù)據(jù)顯示數(shù)據(jù)流圖3.3.3 管理員用戶界面顯示數(shù)據(jù)流圖(dfd)知道用戶權(quán)限后,通過(guò)查詢用戶游戲信息和所有普通用戶信息,顯示用戶游戲信息。數(shù)據(jù)流圖(圖3-3)如下圖3-3 管理員用戶數(shù)據(jù)顯示數(shù)據(jù)流圖用戶接受
21、權(quán)限信息處理信息用戶每次游戲信息(userdish)產(chǎn)生結(jié)果用戶權(quán)限查詢信息游戲信息游戲信息用戶信息表(userinfo)3.3.4 用戶棋局回放數(shù)據(jù)流圖(dfd)知道用戶權(quán)限后,通過(guò)查詢用戶游戲信息和所有普通用戶信息,顯示用戶游戲信息。數(shù)據(jù)流圖(圖3-4)如下:用戶接受數(shù)據(jù)處理信息用戶該盤棋該步棋信息(userstep)產(chǎn)生結(jié)果用戶數(shù)據(jù)查詢信息游戲信息游戲信息圖3-4 用戶棋局回放數(shù)據(jù)流圖4 java五子棋對(duì)弈系統(tǒng)分析與設(shè)計(jì)此系統(tǒng)為智力游戲,適合于各類游戲愛(ài)好者。由于其經(jīng)典性及其游戲的簡(jiǎn)單性,各類人士都可以也都愛(ài)玩。人們?cè)谂c電腦對(duì)戰(zhàn)享受娛樂(lè)的同時(shí),也會(huì)體會(huì)到自己的智力也會(huì)有所提升。該款五子棋
22、游戲功能雖然簡(jiǎn)單,但實(shí)現(xiàn)了人機(jī),所以從這個(gè)角度來(lái)說(shuō),該款游戲需要電腦能準(zhǔn)確的計(jì)算棋局。雖然系統(tǒng)不大,但要在滿足玩家的基本要求的情況下,電腦有一定的智能,能給于新手一定的幫助。4.1 系統(tǒng)設(shè)計(jì)總體思想、目標(biāo)本系統(tǒng)在結(jié)構(gòu)設(shè)計(jì)中采用java的mvc模式,根據(jù)不同的功能劃分不同的模塊,該款五子棋游戲功能雖然簡(jiǎn)單,但實(shí)現(xiàn)了人機(jī),所以從這個(gè)角度來(lái)說(shuō),該款游戲需要電腦能準(zhǔn)確的計(jì)算棋局。雖然系統(tǒng)不大,但要在滿足玩家的基本要求的情況下,電腦有一定的智能,能給于新手一定的幫助。4.2 五子棋人機(jī)對(duì)弈系統(tǒng)的er模型經(jīng)過(guò)對(duì)系統(tǒng)的分析,我們將系統(tǒng)劃分出了用戶信息、用戶棋局信息、用戶棋盤信息、用戶下棋信息等幾個(gè)實(shí)體,其各
23、個(gè)實(shí)體的屬性如下:用戶信息:用戶名、用戶密碼、用戶權(quán)限用戶棋局信息:用戶名、棋局編號(hào)、棋局創(chuàng)建時(shí)間用戶棋盤信息:棋局編號(hào)、x軸坐標(biāo)、y軸坐標(biāo)、棋子狀態(tài)用戶下棋信息:棋局編號(hào)、用戶x坐標(biāo)、用戶y坐標(biāo)、電腦x坐標(biāo)、電腦y坐標(biāo)本系統(tǒng)的具體er模型如下:用戶用戶名用戶密碼用戶權(quán)限圖4-1用戶er圖 圖4-2用戶棋局er圖 棋局用戶名棋局編號(hào)創(chuàng)建時(shí)間圖4-3用戶棋盤er圖 棋盤棋局編號(hào)x軸坐標(biāo)y軸坐標(biāo)棋子狀態(tài)圖4-4用戶棋盤er圖 下棋棋局編號(hào)用戶y坐標(biāo)用戶x坐標(biāo)電腦x坐標(biāo)電腦x坐標(biāo)圖3-1整體er圖 用戶用戶密碼用戶名用戶權(quán)限棋局棋局編號(hào)創(chuàng)建時(shí)間創(chuàng)建棋盤x軸坐標(biāo)y軸坐標(biāo)棋子狀態(tài)下棋屬于屬于用戶x坐標(biāo)用
24、戶y坐標(biāo)電腦x坐標(biāo)電腦x坐標(biāo)1n1n11每步棋編號(hào)圖4-5 整體er圖 4.3 java五子棋對(duì)弈系統(tǒng)結(jié)構(gòu)、功能設(shè)計(jì)4.3.1 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)本系統(tǒng)主要針對(duì)用戶提出的要求業(yè)務(wù)開(kāi)發(fā)的系統(tǒng),其結(jié)構(gòu)設(shè)計(jì)情況如圖(圖4-6)所示:圖4-6 系統(tǒng)結(jié)構(gòu)圖用戶前臺(tái)注冊(cè)登錄數(shù)據(jù)顯示五子棋棋盤回放悔棋游戲4.3.2 系統(tǒng)功能模塊設(shè)計(jì)該款游戲主要由一下幾個(gè)模塊組成(圖4-7):五子棋游戲用戶登錄注冊(cè)人機(jī)對(duì)弈模式具有悔棋功能棋局回放功能圖4-7 五子棋功能模塊圖用戶登錄注冊(cè):在玩五子棋之前,用戶要先登錄游戲,未注冊(cè)的用戶應(yīng)該先注冊(cè),如果登錄成功會(huì)跳到用戶管理頁(yè)面,登錄信息錯(cuò)誤會(huì)提示密碼用戶名錯(cuò)誤。人機(jī)對(duì)弈模式:選擇該
25、模式可以實(shí)現(xiàn)人與電腦之間的對(duì)弈,電腦會(huì)智能的選擇該在哪處下子,并會(huì)在每次下棋結(jié)束后判斷是否有哪方已經(jīng)獲勝,如果獲勝則結(jié)束本局游戲,并提示玩家游戲結(jié)束?;谄骞δ埽哼@個(gè)功能也是根據(jù)游戲的實(shí)際需求而存在的,在現(xiàn)實(shí)生活中難免有失誤下錯(cuò)了棋,那么就需要悔棋。此功能提供了悔棋功能,使得下棋的靈活性有所提高。玩家若想悔棋,則只需選擇悔棋按鈕便可以重新下過(guò)剛才的棋,但只能悔一步棋。棋局回放功能:這個(gè)功能是更加用戶需求設(shè)計(jì)的,該功能可以回放用戶以前下過(guò)的棋局只要點(diǎn)擊要回放的棋局,進(jìn)入棋局回放頁(yè)面,點(diǎn)擊下一步就可以回放該棋局,點(diǎn)一下只能回放一步棋。4.3.3 設(shè)計(jì)思路1.本程序要實(shí)現(xiàn)五子棋的游戲功能,必須先有一個(gè)
26、棋盤,所以,通過(guò)html中的表格畫的,棋盤是17*17,表格中是一個(gè)層,通過(guò)改變其背景圖片來(lái)表示有無(wú)棋子,是白棋還是黑棋。另外還有一個(gè)按鈕:悔棋按鈕,用于提供悔棋功能,界面還顯示系統(tǒng)時(shí)間,用戶提示用戶當(dāng)前時(shí)間。2.對(duì)于下棋的操作,通過(guò)對(duì)該層鼠標(biāo)事件監(jiān)聽(tīng)器onclick,每次當(dāng)用戶點(diǎn)擊鼠標(biāo)時(shí),先取得點(diǎn)擊的坐標(biāo)值,然后換算成對(duì)應(yīng)棋盤上(即棋盤數(shù)組)的位置(數(shù)組的下標(biāo))。3.判斷此處是否已經(jīng)有棋子,如果有則用javascript提示玩家重新下子,否則通過(guò)ajax把點(diǎn)擊的數(shù)組傳遞給后臺(tái),通過(guò)后臺(tái)處理返回給前臺(tái)數(shù)據(jù)來(lái)改變樣式,在此處畫上棋子。4.判斷該顏色棋子的上下左右是否滿足連續(xù)五個(gè),是的話提醒相應(yīng)玩
27、家獲勝,不是的話,更換玩家下棋。5.對(duì)于玩家的更換是程序自動(dòng)的,每次用戶點(diǎn)擊鼠標(biāo)后,若本局還未結(jié)束則會(huì)變換玩家,從而畫出對(duì)應(yīng)黑方白方的棋子,直到有一方獲勝程序結(jié)束。4.4 程序設(shè)計(jì)分析1. 在網(wǎng)站的首頁(yè)是登錄界面,有登錄和注冊(cè)兩個(gè)功能。2在登錄成功會(huì)跳到用戶信息頁(yè)面,在該頁(yè)面的右下角會(huì)列出該用戶在最近5次,玩游戲的信息記錄,點(diǎn)擊該記錄可以回放對(duì)應(yīng)的棋局。在信息下方有開(kāi)始游戲和更改密碼兩個(gè)按鈕。3. 繪制棋盤,17*17的方框,在方框處下棋子(實(shí)心黑白圓形)。4. 棋盤處于鼠標(biāo)監(jiān)聽(tīng)狀態(tài),當(dāng)鼠標(biāo)在棋盤上有點(diǎn)擊操作的時(shí)候,程序會(huì)獲得鼠標(biāo)點(diǎn)擊的坐標(biāo)然后換算成對(duì)應(yīng)的棋盤的位置,再判斷此處是否有棋子,假如
28、沒(méi)有,那么在此處畫出對(duì)應(yīng)顏色的實(shí)心棋子,假如已經(jīng)有棋子了,則提示玩家此處已經(jīng)有棋子請(qǐng)重新下棋。5. 當(dāng)用戶點(diǎn)擊表格中的層下完棋后,輪到電腦下子時(shí),電腦會(huì)通過(guò)算法計(jì)算每個(gè)沒(méi)有棋子的位置的重要性來(lái)選擇最重要的位置下子。6. 當(dāng)任何一方有五個(gè)棋子沿著橫,豎,斜連在一起時(shí),系統(tǒng)自動(dòng)判斷贏棋,并顯示黑方或白方勝利。棋局結(jié)束后,會(huì)返回用戶信息頁(yè)面。7 程序流程如下圖(圖4-8):圖4-8 系統(tǒng)結(jié)構(gòu)圖4.5 類的設(shè)計(jì)1)由于要用到數(shù)據(jù)庫(kù),所以設(shè)計(jì)了一個(gè)用來(lái)連接數(shù)據(jù)庫(kù)的類basedao,其中包括了兩個(gè)方法和4個(gè)變量,類圖(圖4-9)如下:圖4-9 basedao類圖2)下圖是關(guān)于數(shù)據(jù)庫(kù)中對(duì)應(yīng)的表的類圖(圖4-
29、10)關(guān)系:圖4-10 類表關(guān)系圖3)雖然有了用戶相關(guān)類,但是無(wú)法操作數(shù)據(jù)庫(kù)中的用戶信息,所以設(shè)計(jì)了操作用戶表的類userdishdaoimpl,該類繼承basedao,并且實(shí)現(xiàn)iuserdao類,類圖(圖4-11)如下:圖4-11 userdishdaoimpl類圖4)對(duì)于用戶每次玩游戲的信息操作,用userdishdaoimpl實(shí)現(xiàn)了各種操作。類圖(圖4-12)如下:圖4-12 userdishdaoimpl類圖5)對(duì)棋盤的各種信息保存操作,用類userqipandaoimpl來(lái)實(shí)現(xiàn)。其中類圖(圖4-13)如下圖4-13 userqipandaoimpl類圖6)對(duì)每局棋及每盤棋的各種保存操
30、作,用userstepdaoimpl來(lái)實(shí)現(xiàn),其中類圖(圖4-14)如下:圖4-14 userstepdaoimpl類圖7)由于程序是人機(jī)對(duì)弈,電腦下棋算法用computer類來(lái)實(shí)現(xiàn),其中有電腦下棋算法,還有電腦判斷輸贏算法,類圖(圖4-15)如下:圖4-15 servlet類圖8)本程序的時(shí)序圖 (圖4-16)如下 :圖4-16 時(shí)序圖4.6 五子棋對(duì)弈系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)4.6.1 系統(tǒng)用戶表名稱編碼數(shù)據(jù)類型備注用戶名usernamevarchar(255)用戶輸入,not null約束,是表的主鍵用戶密碼userpwdvarchar(255)用戶輸入,not null約束用戶權(quán)限userfla
31、gint(11)系統(tǒng)分配,not null約束,用于判斷用戶權(quán)限4.6.2 用戶棋局表 名稱編碼數(shù)據(jù)類型備注棋局編號(hào)dishidint(11)系統(tǒng)自動(dòng)分配,是該表的主鍵,not null約束用戶名usernamevarchar(255)用戶輸入,not null約束創(chuàng)建時(shí)間playdatedate系統(tǒng)分配,not null約束 4.6.3 用戶棋盤表 名稱編碼數(shù)據(jù)類型備注棋局編號(hào)dishidint(11)系統(tǒng)自動(dòng)分配,是改變的主鍵,not null約束x軸坐標(biāo)xint(11)是棋盤的x坐標(biāo),not null約束y軸坐標(biāo)yint(11)是棋盤的y坐標(biāo),not null約束狀態(tài)fint(11)表示
32、棋子狀態(tài),not null約束 4.6.4 用戶下棋信息表名稱編碼數(shù)據(jù)類型備注下棋編號(hào)stepidint(11)系統(tǒng)自動(dòng)分配,是改變的主鍵,not null約束電腦x坐標(biāo)pcxint(11)是電腦該步棋的x坐標(biāo),not null約束電腦y坐標(biāo)pcyint(11)是電腦該步棋的y坐標(biāo),not null約束用戶x坐標(biāo)psxint(11)是電用戶該步棋的x坐標(biāo),not null約束用戶y坐標(biāo)psyint(11)是電用戶該步棋的x坐標(biāo),not null約束棋局編號(hào)dishidint(11)是該表的外鍵,not null約束5 五子棋相關(guān)基礎(chǔ)5.1 五子棋相關(guān)解釋引用辭海中所言,五子棋是“棋類游戲,棋具
33、與圍棋相同,兩人對(duì)局,輪流下子,先將五子連成一行者為勝?!?。五子棋的名稱:日文亦有“連五子、五子連、串珠、五目、五目碰、五格、五石、五法、五聯(lián)、京棋”等多種稱謂,英文則稱之為fir (five in a row的縮寫)、gomoku(日語(yǔ)“五目”的羅馬拼音)、gobang、connect 5、mo-rphion。捷克語(yǔ)piskvorky,韓語(yǔ)omok、韓國(guó)人還稱之為情侶棋。5.2 五子棋相關(guān)規(guī)則1.五子棋行棋時(shí),黑棋先下第一子,由天元開(kāi)始,后白棋在黑棋周圍的方框的落子。接著黑方再以天元中心的25個(gè)交叉點(diǎn)的范圍內(nèi)落盤面的第三子,之后黑白雙方相互順序子。 2.最先在棋盤上橫向,縱向,斜向形成已方的
34、五個(gè)棋子連續(xù)的一方為勝。3.出現(xiàn)禁手對(duì)方指出后將判負(fù),其中包括兩個(gè)或兩個(gè)以上的活三,活四,長(zhǎng)連均稱之為禁手。4.禁手只對(duì)黑棋有效,白棋無(wú)禁手。5.黑方禁手形成時(shí),白方需立即指出,黑方將被判負(fù)。若白方未發(fā)現(xiàn)黑方禁手存在而繼續(xù)應(yīng)子,其后指出黑方禁手不能判黑方負(fù)。6.黑方連五與禁手同時(shí)形成,因黑方已連成五即黑方已獲勝,故禁手規(guī)則失效。7.在對(duì)局中,在盤上落下的子又拿起來(lái),此動(dòng)作稱為拔子,若拔子將被判為負(fù)。 8.在對(duì)局中棋子掉落在棋盤上將被判負(fù)。若推子或蹭子,以盤面第一落點(diǎn)為準(zhǔn)。用手將棋子推正不算違犯規(guī)則。9.在對(duì)局中,一方自行中止比賽如:中途退場(chǎng),將被判負(fù)。10.在對(duì)局中對(duì)方宣布認(rèn)輸,本局獲勝。11
35、.超過(guò)比賽規(guī)定所用時(shí)間限制,將被判為負(fù):正式比賽期間,遲到時(shí)間超過(guò)比賽容許時(shí)間將被判負(fù)。12.如下至最終一子仍不分勝負(fù)則定為平局。13.中盤期間雙方 同意和局提議,判定為平局。5.3 五子棋常用術(shù)語(yǔ)1.著:也稱“步”。對(duì)局中把一個(gè)棋子按照規(guī)則放到某一點(diǎn),稱之為一著棋。一著是否完成有兩種規(guī)則:1)在執(zhí)行落子無(wú)悔規(guī)則是,以行棋者的手離開(kāi)棋子為一著已完成。2)在執(zhí)行限時(shí)規(guī)則時(shí),以行棋者按下棋鐘作為一著已完成。2.pass :五子棋中引入的英文名稱,即應(yīng)該行棋的一方主動(dòng)放棄此次行棋的機(jī)會(huì),由對(duì)方繼續(xù)行棋。3.先手:對(duì)方必須應(yīng)答的著法,如對(duì)方形成活三必須阻止其形成活四。4.絕對(duì)先手:相對(duì)先手而言,即形成
36、同色連四或嵌五,對(duì)方必須應(yīng)著,就是絕對(duì)先手。絕對(duì)先手又叫“沖”。5.vcf:(victory of continus four 的縮寫) 意思是利用連續(xù)沖四取勝之意。利用連續(xù)不斷的沖四或嵌五的絕對(duì)先手,制止形成連五獲得勝利的一種方法。在對(duì)局接近尾聲或排局解題中一種常見(jiàn)的取勝技巧。6.追下取勝:是指白棋利用黑棋禁手取勝的戰(zhàn)術(shù)。白1 沖四,迫使黑2 形成“四、四”禁手( 即沖四,活四禁手), 這種取勝方法叫做追下取勝。7.自由取勝:追下取勝以外的取勝方法,即未利用黑棋禁手戰(zhàn)術(shù)而取勝。8.一子雙殺:是指對(duì)局中一方落子后出現(xiàn)兩個(gè)叫殺點(diǎn)即兩個(gè)獲勝點(diǎn),而使對(duì)方無(wú)法防守的情形。一般是有兩個(gè)沖四活三點(diǎn),白棋的
37、雙活三,雙四均可稱為一子雙殺。9.陽(yáng)線:棋盤上可見(jiàn)的橫線與直線的總稱。10.陰線:也稱“斜線”。是棋盤上不可見(jiàn)的斜行線。11.“四、三”:指同時(shí)具備兩個(gè)先手,其中一個(gè)四,另一個(gè)是活三。12.“活三”、“嵌五”、“沖四”:參見(jiàn)五子棋重要棋形講座。13. 禁手:對(duì)局中禁止使用的戰(zhàn)術(shù)或被判為負(fù)的行棋手段。14. 開(kāi)局:也稱“布局”。布局階段大體為七至十幾著之內(nèi)。種類繁多,職業(yè)連珠五子棋有二十四種開(kāi)局。 15. 局面:亦稱“局勢(shì)”。為對(duì)局中某一段時(shí)間內(nèi)雙方子力的配置情況。16. 優(yōu)勢(shì):是指足以取勝的優(yōu)勢(shì)局面,其對(duì)方即為敗勢(shì)。17. 妙著:對(duì)局中走出的一步精妙的著法。既合乎邏輯又出人意料,有使局面頓時(shí)改
38、觀的效果,對(duì)局勢(shì)的發(fā)展及對(duì)局的質(zhì)量都有重大影響。18. 好著:也稱“佳著”。對(duì)局中成功的某一步。19. 正著:對(duì)局的某一局面中的正確著法。20. 劣著:對(duì)局中,導(dǎo)致嚴(yán)重不利后果的一步錯(cuò)誤著法。21. 敗著:也稱“失著”“漏著”。對(duì)局中造成局面惡化的一步嚴(yán)重錯(cuò)誤著法。22. 等著:對(duì)局中具有等待性的一步著法,主要意圖是等待有利時(shí)機(jī)。23. 廢著:也稱“空著”。對(duì)局中不起作用的著法。實(shí)際上指浪費(fèi)時(shí)間毫無(wú)疑義的錯(cuò)著。24. 搶先:對(duì)局中利用反活三或沖四的強(qiáng)制手段奪取主動(dòng)權(quán)的著法。25. 打譜:按照棋譜演練著法,是提高棋藝水平的重要方法之一。26. 復(fù)局:也叫“復(fù)著”。對(duì)局結(jié)束又重演對(duì)局的過(guò)程。一般用
39、以研究、比較雙方的成敗得失和著法的優(yōu)劣。6 系統(tǒng)平臺(tái)、計(jì)算模式及技術(shù)1) 系統(tǒng)的硬件平臺(tái):一臺(tái)臺(tái)式計(jì)算機(jī)2) 系統(tǒng)的軟件平臺(tái):windows xp/windows 7 ie瀏覽器等6.1 計(jì)算模式的進(jìn)化及本系統(tǒng)選用的模式優(yōu)越性回顧計(jì)算機(jī)的發(fā)展史,計(jì)算模式有過(guò)三次質(zhì)的飛躍:6.1.1 集中式管理主機(jī)/終端模式通過(guò)硬件連線把簡(jiǎn)單的終端接到主機(jī)上;所有用戶的擊鍵和光標(biāo)位置傳入主機(jī),所有從主機(jī)返回的結(jié)果,顯示在終端屏幕的特定位置;分時(shí)共享模式,所有的程序和數(shù)據(jù)都存儲(chǔ)在大型的主機(jī)中(數(shù)據(jù)庫(kù)、應(yīng)用程序、通信程序),資源集中控制;利用主機(jī)的能力運(yùn)行應(yīng)用程序,利用無(wú)智能的終端來(lái)對(duì)應(yīng)用進(jìn)行控制;6.1.2 cl
40、ient/server模式在client-server模式,應(yīng)用被分為前端(客戶端)和后端(服務(wù)器端);客戶部分運(yùn)行在微機(jī)或工作站上,而服務(wù)器部分可以運(yùn)行在從微機(jī)到大型機(jī)等各種計(jì)算機(jī)上。客戶機(jī)和服務(wù)器分別工作在不同的邏輯實(shí)體中,并協(xié)同工作。服務(wù)器主要是運(yùn)行客戶機(jī)不能完成或費(fèi)時(shí)的工作,比如大型數(shù)據(jù)庫(kù)的管理,而客戶機(jī)可以通過(guò)預(yù)先指定的語(yǔ)言向服務(wù)器提出請(qǐng)求,要求服務(wù)器去執(zhí)行某項(xiàng)操作,并將操作結(jié)果返送給客戶機(jī)。 6.1.3 brower/server模式基于瀏覽器、www服務(wù)器和應(yīng)用服務(wù)器的計(jì)算結(jié)構(gòu),稱為瀏覽器/服務(wù)器(browser/server)的計(jì)算模式,簡(jiǎn)稱b/s模式,該計(jì)算模式在20世紀(jì)90
41、年代中期逐漸形成和發(fā)展。b/s計(jì)算模式繼承和共融了傳統(tǒng)客戶機(jī)/服務(wù)器模式中的網(wǎng)絡(luò)軟、硬件平臺(tái)和應(yīng)用,但它具有傳統(tǒng)c/s計(jì)算模式所不及的很多特點(diǎn),比如更加開(kāi)放、與軟、硬件平臺(tái)無(wú)關(guān)、應(yīng)用開(kāi)發(fā)速度快、生命周期長(zhǎng)、應(yīng)用擴(kuò)充和系統(tǒng)維護(hù)升級(jí)方便等。6.1.4 系統(tǒng)采用b/s三層體系結(jié)構(gòu)模式的優(yōu)越性三層體系結(jié)構(gòu)圖如圖圖6-1所示:cgi,asp,php等技術(shù)的出現(xiàn),使得開(kāi)發(fā)動(dòng)態(tài)交互式的web應(yīng)用得以實(shí)現(xiàn)。用戶通過(guò)瀏覽器向服務(wù)器發(fā)送請(qǐng)求,web服務(wù)器接收客戶端發(fā)送來(lái)的請(qǐng)求,對(duì)請(qǐng)圖6-1 三層體系結(jié)構(gòu)圖求進(jìn)行分析,如果請(qǐng)求是靜態(tài)頁(yè)面,那么就將所請(qǐng)求的頁(yè)面發(fā)送到客戶端;如果請(qǐng)求的是動(dòng)態(tài)頁(yè)面,那么就執(zhí)行此動(dòng)態(tài)頁(yè)面,
42、并將執(zhí)行結(jié)果發(fā)送給客戶端。動(dòng)態(tài)頁(yè)面中的腳本程序可以和數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行交互。web服務(wù)器可以根據(jù)用戶的請(qǐng)求動(dòng)態(tài)更新頁(yè)面上的信息,web信息提供者可以通過(guò)改變數(shù)據(jù)庫(kù)中的數(shù)據(jù)向用戶提供最新信息,而不需要逐個(gè)更改頁(yè)面。用戶可以通過(guò)這些動(dòng)態(tài)頁(yè)面向數(shù)據(jù)庫(kù)中輸入信息,從而增強(qiáng)了用戶和服務(wù)器之間的交互性。與傳統(tǒng)的cs體系結(jié)構(gòu)相比,三層體系結(jié)構(gòu)存在以下優(yōu)點(diǎn):(1)客戶端零維護(hù)在三層體系結(jié)構(gòu)中,幾乎所有的業(yè)務(wù)處理都是在中間件web server上完成的,客戶端只需要安裝支持java的瀏覽器即可,不用做任何其它安裝和配置工作,所以也就不存在客戶端維護(hù)的問(wèn)題,真正實(shí)現(xiàn)了“客戶端 零維護(hù)”。處理業(yè)務(wù)時(shí),操作員可以直接通
43、過(guò)web瀏覽器訪問(wèn)web server進(jìn)行業(yè)務(wù)處理工作。2)可擴(kuò)展性好三層體系結(jié)構(gòu)的可擴(kuò)展性好體現(xiàn)在以下四個(gè)方面:第一,工作節(jié)點(diǎn)的可擴(kuò)展性好。由于三層體系結(jié)構(gòu)的客戶端零維護(hù)的特點(diǎn),使增加一個(gè)工作節(jié)點(diǎn)的工作簡(jiǎn)單到了只需增加一臺(tái)裝有web瀏覽器的pc機(jī)即可。第二,應(yīng)用系統(tǒng)的可擴(kuò)展性好。好的應(yīng)用系統(tǒng)應(yīng)該能方便地實(shí)現(xiàn)一定程度上業(yè)務(wù)的變化和業(yè)務(wù)單元的增加。三層體系結(jié)構(gòu)采用面向?qū)ο蟮姆治龊驮O(shè)計(jì)模式,將業(yè)務(wù) 模塊都封裝到了業(yè)務(wù)類和服務(wù)類中,所以,如果一個(gè)業(yè)務(wù)流程變了,或需要增加一個(gè)新的業(yè)務(wù)模塊,只需替換或增加新的業(yè)務(wù)類和服務(wù)類即可。第三,業(yè)務(wù)邏輯與用戶界面及數(shù)據(jù)庫(kù)分離,使得當(dāng)用戶業(yè)務(wù)邏輯發(fā)生變化時(shí)只需更改中
44、間層的控件組件jbejb即可。第四,便于數(shù)據(jù)庫(kù)移植。由于客戶端不直接訪問(wèn)數(shù)據(jù)庫(kù),而是通過(guò)一個(gè)中間層進(jìn)行訪問(wèn),所以,在改變數(shù)據(jù)庫(kù)、驅(qū)動(dòng)程序或存儲(chǔ)方式時(shí)無(wú)需改變客戶端配置,只要集中改變中間件上的持久化層的數(shù)據(jù)庫(kù)連接部分即可。3)安全性好在三層體系結(jié)構(gòu)中,客戶端只能通過(guò)web server而不能直接訪問(wèn)數(shù)據(jù)庫(kù),這大大提高了系統(tǒng)的安全性。如果對(duì)系統(tǒng)提出更高的安全性要求的話,還可以通過(guò)防火墻進(jìn)行屏蔽。4)資源重用性好由于將業(yè)務(wù)邏輯集中到web server統(tǒng)一處理,三層體系結(jié)構(gòu)可以更好地利用共享資源。例如數(shù)據(jù)庫(kù)連接是一項(xiàng)很消耗系統(tǒng)資源、影響響應(yīng)時(shí)間的事件,在三層體系結(jié)構(gòu)中可以將數(shù)據(jù)庫(kù)連接放在緩沖池中統(tǒng)一
45、管理,由不同應(yīng)用共享,并有效控制連接的數(shù)量。6.2 jsp技術(shù)6.2.1 jsp簡(jiǎn)介jsp(javaserver pages)是一種基于java的腳本技術(shù)。在jsp 的眾多優(yōu)點(diǎn)之中,其中之一是它能將 html 編碼從 web 頁(yè)面的業(yè)務(wù)邏輯中有效地分離出來(lái)。用 jsp 訪問(wèn)可重用的組件,如 servlet、javabean 和基于 java 的 web 應(yīng)用程序。jsp 還支持在 web 頁(yè)面中直接嵌入 java 代碼??捎脙煞N方法訪問(wèn) jsp 文件:瀏覽器發(fā)送 jsp 文件請(qǐng)求、發(fā)送至 servlet 的請(qǐng)求。1.jsp 文件訪問(wèn) bean 或其它能將生成的動(dòng)態(tài)內(nèi)容發(fā)送到瀏覽器的組件。圖6-
46、2說(shuō)明了該 jsp 訪問(wèn)模型。當(dāng) web 服務(wù)器接收到一個(gè) jsp 文件請(qǐng)求時(shí),服務(wù)器將請(qǐng)求發(fā)送至 websphere應(yīng)用服務(wù)器。websphere應(yīng)用服務(wù)器 對(duì) jsp 文件進(jìn)行語(yǔ)法分析并生成 java 源文件(被編譯和執(zhí)行為 servlet)。java 源文件的生成和編譯僅在初次調(diào)用 servlet 時(shí)發(fā)生,除非已經(jīng)更新了原始的 jsp 文件。在這種情況下,websphere應(yīng)用服務(wù)器 將檢測(cè)所做的更新,并在執(zhí)行它之前重新生成和編譯 servlet。圖6-2 瀏覽器發(fā)送 jsp 文件請(qǐng)求2.發(fā)送至 servlet 的請(qǐng)求生成動(dòng)態(tài)內(nèi)容,并調(diào)用 jsp 文件將內(nèi)容發(fā)送到瀏覽器。圖6-3說(shuō)明了該
47、訪問(wèn)模型。該訪問(wèn)模型使得將內(nèi)容生成從內(nèi)容顯示中分離出來(lái)更為方便。websphere應(yīng)用服務(wù)器 支持 httpservicerequest 對(duì)象和 httpserviceresponse 對(duì)象的一套新方法。這些方法允許調(diào)用的 servlet 將一個(gè)對(duì)象放入(通常是一個(gè) bean)請(qǐng)求對(duì)象中,并將該請(qǐng)求傳遞到另一個(gè)頁(yè)面(通常是一個(gè) jsp 文件)以供顯示。調(diào)用的頁(yè)面從請(qǐng)求對(duì)象中檢索 bean, 并用 jsp 來(lái)生成客戶機(jī)端的 html。圖6-3:發(fā)送至 servlet 的請(qǐng)求6.2.2 jsp內(nèi)建對(duì)象定義:可以不加聲明就在jsp頁(yè)面腳本(java程序片和java表達(dá)式)中使用的成員變量 jsp共有
48、以下9種基本內(nèi)置組件(可與asp的6種內(nèi)部組件相對(duì)應(yīng)):1.request對(duì)象 客戶端的請(qǐng)求信息被封裝在request對(duì)象中,通過(guò)它才能了解到客戶的需求,然后做出響應(yīng)。它是httpservletrequest類的實(shí)例。 2.response對(duì)象 response對(duì)象包含了響應(yīng)客戶請(qǐng)求的有關(guān)信息,但在jsp中很少直接用到它。它是httpservletresponse類的實(shí)例。 3.session對(duì)象 session對(duì)象指的是客戶端與服務(wù)器的一次會(huì)話,從客戶端連到服務(wù)器的一個(gè)webapplication開(kāi)始,直到客戶端與服務(wù)器斷開(kāi)連接為止。它是httpsession類的實(shí)例. 4.out對(duì)象 ou
49、t對(duì)象是jspwriter類的實(shí)例,是向客戶端輸出內(nèi)容常用的對(duì)象 5.page對(duì)象 page對(duì)象就是指向當(dāng)前jsp頁(yè)面本身,有點(diǎn)象類中的this指針,它是java.lang.object類的實(shí)例 6.application對(duì)象 application對(duì)象實(shí)現(xiàn)了用戶間數(shù)據(jù)的共享,可存放全局變量。它開(kāi)始于服務(wù)器的啟動(dòng), 直到服務(wù)器的關(guān)閉,在此期間,此對(duì)象將一直存在;這樣在用戶的前后連接或不同用戶之間的連接中,可以對(duì)此對(duì)象的同一屬性進(jìn)行操作;在任何地方對(duì)此對(duì)象屬性 的操作,都將影響到其他用戶對(duì)此的訪問(wèn)。服務(wù)器的啟動(dòng)和關(guān)閉決定了application對(duì)象的生命。它是servletcontext類的實(shí)例
50、。 7.exception對(duì)象 exception對(duì)象是一個(gè)例外對(duì)象,當(dāng)一個(gè)頁(yè)面在運(yùn)行過(guò)程中發(fā)生了例外,就產(chǎn)生這個(gè)對(duì)象。如果一個(gè)jsp頁(yè)面要應(yīng)用此對(duì)象,就必須把iserrorpage設(shè)為true,否則無(wú)法編譯。他實(shí)際上是java.lang.throwable的對(duì)象 8.pagecontext對(duì)象 pagecontext對(duì)象提供了對(duì)jsp頁(yè)面內(nèi)所有的對(duì)象及名字空間的訪問(wèn),也就是說(shuō)他可以訪問(wèn)到本頁(yè)所在的session,也可以取本頁(yè)面所在的application的某一屬性值,他相當(dāng)于頁(yè)面中所有功能的集大成者,它的本類名也叫pagecontext。 9.config對(duì)象 config對(duì)象是在一個(gè)ser
51、vlet初始化時(shí),jsp引擎向它傳遞信息用的,此信息包括servlet初始化時(shí)所要用到的參數(shù)(通過(guò)屬性名和屬性值構(gòu)成)以及服務(wù)器的有關(guān)信息(通過(guò)傳遞一個(gè)servletcontext對(duì)象) 6.3 mvc設(shè)計(jì)模式mvc模式的基本形式圖如圖6-4所示。圖6-4 mvc模式的基本形式圖mvc(model-view-controller)模式并不是j2ee行業(yè)人士標(biāo)新立異的。mvc的核心就是要做到三級(jí)甚至多級(jí)的松散耦合,mvc模式將系統(tǒng)分為三個(gè)部分,分別是數(shù)據(jù)模型、視圖和控制器,并定義了這三個(gè)部分之間實(shí)現(xiàn)通信的一種模式,使每個(gè)部分不必卷入到其他部分的狀態(tài)表示和方法實(shí)現(xiàn)的細(xì)節(jié)中去。每個(gè)部分有自己的數(shù)據(jù)管
52、理規(guī)則,各個(gè)對(duì)象之間的通信只能使用自己定義的一個(gè)受限連接集合進(jìn)行。保持這種分離性通常是面向?qū)ο缶幊毯驮O(shè)計(jì)要追求的目標(biāo),讓各個(gè)對(duì)象只需專注于自己的事務(wù)。模型部分代表了商業(yè)數(shù)據(jù)的訪問(wèn)及修改數(shù)據(jù)的操作。當(dāng)數(shù)據(jù)發(fā)生改變時(shí),要負(fù)責(zé)通知視圖部分,并且提供視圖查詢狀態(tài)的能力。另外,還向控制部分提供應(yīng)用功能。視圖部分以自己的方式顯示模型的內(nèi)容。訪問(wèn)模型的數(shù)據(jù),并且當(dāng)模型的數(shù)據(jù)發(fā)生變化時(shí)更新模型的顯示。視圖還把從用戶那里得到的信息傳給控制部分??刂撇糠侄x了應(yīng)用的行為。分發(fā)用戶請(qǐng)求和選擇表現(xiàn)視圖,還負(fù)責(zé)解釋用戶輸入,進(jìn)而調(diào)用模型的功能。在web應(yīng)用中,用戶輸入包括對(duì)web級(jí)資源的http、get和post請(qǐng)求。
53、控制部分根據(jù)用戶交互和模型的狀態(tài)選擇要顯示的視圖。一個(gè)應(yīng)用程序一般為相關(guān)的功能選擇一個(gè)控制部分。6.4 servlet 6.4.1 servlet簡(jiǎn)介servlet是在服務(wù)器上運(yùn)行的小程序。這個(gè)詞是在java applet的環(huán)境中創(chuàng)造的,java applet是一種當(dāng)作單獨(dú)文件跟網(wǎng)頁(yè)一起發(fā)送的小程序,它通常用于在客戶端運(yùn)行,結(jié)果得到為用戶進(jìn)行運(yùn)算或者根據(jù)用戶互作用定位圖形等服務(wù)。服務(wù)器上需要一些程序,常常是根據(jù)用戶輸入訪問(wèn)數(shù)據(jù)庫(kù)的程序。這些通常是使用公共網(wǎng)關(guān)接口(cgi(common gateway interface))應(yīng)用程序完成的。然而,在服務(wù)器上運(yùn)行java,這種程序可使用java編程
54、語(yǔ)言實(shí)現(xiàn)。在通信量大的服務(wù)器上,java servlet的優(yōu)點(diǎn)在于它們的執(zhí)行速度更快于cgi程序。各個(gè)用戶請(qǐng)求被激活成單個(gè)程序中的一個(gè)線程,而無(wú)需創(chuàng)建單獨(dú)的進(jìn)程,這意味著服務(wù)器端處理請(qǐng)求的系統(tǒng)開(kāi)銷將明顯降低。實(shí)現(xiàn)過(guò)程:最早支持servlet技術(shù)的是javasoft的java web server。此后,一些其它的基于java的webserver開(kāi)始支持標(biāo)準(zhǔn)的servletapi。servlet的主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動(dòng)態(tài)web內(nèi)容。這個(gè)過(guò)程為: 1、客戶端發(fā)送請(qǐng)求至服務(wù)器端; 2、服務(wù)器將請(qǐng)求信息發(fā)送至servlet 3、servlet生成響應(yīng)內(nèi)容并將其傳給服務(wù)器。響應(yīng)內(nèi)容動(dòng)
55、態(tài)生成,通常取決于客戶端的請(qǐng)求 4、服務(wù)器將響應(yīng)返回給客戶端 5、servlet看起來(lái)像是通常的java程序。servlet導(dǎo)入特定的屬于java servletapi的包。因?yàn)槭菍?duì)象字節(jié)碼,可動(dòng)態(tài)地從網(wǎng)絡(luò)加載,可以說(shuō)servlet對(duì)server就如同applet對(duì)client一樣,但是,由 于servlet運(yùn)行于server中,它們并不需要一個(gè)圖形用戶界面。從這個(gè)角度講,servlet也被稱為facelessobject。 一個(gè)servlet就是java編程語(yǔ)言中的一個(gè)類,它被用來(lái)擴(kuò)展服務(wù)器的性能,服務(wù)器上駐留著可以通過(guò)“請(qǐng)求-響應(yīng)”編程模型來(lái)訪問(wèn)的應(yīng)用程序。雖然servlet可以對(duì)任何類型的請(qǐng)求產(chǎn)生響應(yīng),但通常只用來(lái)擴(kuò)展web服務(wù)器的應(yīng)用程序。6.4.2 servlet 優(yōu)勢(shì)java servlet 與 cgi(common gateway interface 公共網(wǎng)關(guān)接口) 的比較: 與傳統(tǒng)的cgi和許多其他類似cgi的技術(shù)相比,java s
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 金融行業(yè)辦公自動(dòng)化與效率提升策略
- 足浴店客戶留存策略客戶關(guān)系管理的新篇章
- 跨境電商平臺(tái)的客戶服務(wù)與售后支持體系構(gòu)建
- 金融安全文化的推廣與教育創(chuàng)新
- 音樂(lè)APP的界面視覺(jué)設(shè)計(jì)與聽(tīng)覺(jué)體驗(yàn)結(jié)合
- 遠(yuǎn)程教育興起及行業(yè)前景展望
- 跨文化團(tuán)隊(duì)中的溝通與沖突解決策略研究
- 跨區(qū)域醫(yī)療健康信息平臺(tái)建設(shè)研究
- 高中語(yǔ)文情感美文雪山上的父親
- 通過(guò)智能算法實(shí)現(xiàn)以數(shù)據(jù)為核心的營(yíng)銷閉環(huán)在社區(qū)銀行的實(shí)踐研究
- (完整版)第五章養(yǎng)殖場(chǎng)環(huán)境保護(hù)
- 祖國(guó)版圖知識(shí)主題班會(huì)
- 2025年上半年?yáng)|方電氣集團(tuán)科學(xué)技術(shù)研究院限公司公開(kāi)招聘易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 征信異議申請(qǐng)書
- 高中不同主題閱讀理解高頻詞匯清單-2025屆高三下學(xué)期英語(yǔ)一輪復(fù)習(xí)專項(xiàng)
- 2025年上半年高郵市國(guó)資產(chǎn)投資運(yùn)營(yíng)限公司(國(guó)企業(yè))公開(kāi)招聘工作人員易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年高考地理二輪復(fù)習(xí):地球運(yùn)動(dòng)(講義)解析版
- 2024年金華金開(kāi)招商招才服務(wù)集團(tuán)有限公司招聘筆試真題
- 【地理】亞洲的自然環(huán)境第3課時(shí) 2024-2025學(xué)年七年級(jí)地理下冊(cè)同步課件(人教版2024)
- 2024年江蘇護(hù)理職業(yè)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 《國(guó)別和區(qū)域研究專題》教學(xué)大綱
評(píng)論
0/150
提交評(píng)論