藥品進(jìn)銷存管理系統(tǒng)—畢業(yè)設(shè)計(jì)論文.doc_第1頁(yè)
藥品進(jìn)銷存管理系統(tǒng)—畢業(yè)設(shè)計(jì)論文.doc_第2頁(yè)
藥品進(jìn)銷存管理系統(tǒng)—畢業(yè)設(shè)計(jì)論文.doc_第3頁(yè)
藥品進(jìn)銷存管理系統(tǒng)—畢業(yè)設(shè)計(jì)論文.doc_第4頁(yè)
藥品進(jìn)銷存管理系統(tǒng)—畢業(yè)設(shè)計(jì)論文.doc_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余41頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

前言藥品進(jìn)銷存管理系統(tǒng)是一套典型的信息管理系統(tǒng)。本系統(tǒng)的開發(fā)主要包括前臺(tái)應(yīng)用程序的開發(fā)和后臺(tái)數(shù)據(jù)庫(kù)的建立與維護(hù)兩部分,前臺(tái)應(yīng)用程序需要功能完善,容易操作,對(duì)于后臺(tái)數(shù)據(jù)庫(kù),需要建立一個(gè)數(shù)據(jù)一致性和完整性強(qiáng),數(shù)據(jù)安全性高的數(shù)據(jù)庫(kù)。藥品進(jìn)銷存管理系統(tǒng)是為藥品區(qū)域代理商量身定做的一套輔助軟件。一直以來(lái)藥品的代理商都采用傳統(tǒng)的人工方式管理藥品記錄,這樣的管理方式有著效率底下、保密性差、容易出錯(cuò)等缺點(diǎn),再經(jīng)過(guò)長(zhǎng)時(shí)間的積累,將會(huì)產(chǎn)生大量的信息,給查找、更新、維護(hù)、統(tǒng)計(jì)等工作帶來(lái)了很大的困難。隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識(shí),它已進(jìn)入人類社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來(lái)越重要的作用。使用計(jì)算機(jī)管理藥品信息有著諸多人工管理所不具備的優(yōu)勢(shì),例如:檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、保密性好、壽命長(zhǎng)、成本低等。這些優(yōu)點(diǎn)極大的提高了信息管理的效率,也是將來(lái)企業(yè)的科學(xué)化、正規(guī)化管理,與世界接軌的重要條件。因此,開發(fā)一套藥品進(jìn)銷存管理系統(tǒng)對(duì)有效管理相關(guān)信息是很必要的。在下面的文章中將以開發(fā)藥品進(jìn)銷存管理系統(tǒng)為例,談?wù)勯_發(fā)過(guò)程中所涉及到的問(wèn)題和解決方法。本文在結(jié)構(gòu)上,從需求分析,系統(tǒng)設(shè)計(jì),程序各功能模塊的實(shí)現(xiàn)、打包發(fā)布都嚴(yán)格按照軟件工程的工作流程。其中,關(guān)鍵技術(shù),則是列舉出了在程序的具體實(shí)現(xiàn)過(guò)程中所用到的一些相關(guān)算法、方法。最后對(duì)該軟件的發(fā)展前景談了個(gè)人的想法。在本文的完成過(guò)程中,得到了王向陽(yáng)老師耐心的幫助和指導(dǎo),在此表示衷心的感謝。由于本人水平有限,文中不足之處敬請(qǐng)老師批評(píng)指正。藥品進(jìn)銷存管理系統(tǒng)摘要本系統(tǒng)是一套藥品進(jìn)銷存管理系統(tǒng)。本系統(tǒng)是針對(duì)藥品銷售的區(qū)域代理商設(shè)計(jì)、開發(fā)的一套管理系統(tǒng)。該系統(tǒng)按照藥品區(qū)域代理商的實(shí)際業(yè)務(wù)流程,結(jié)合了藥品銷售的行業(yè)特點(diǎn),能很好的滿足用戶的使用需求。該系統(tǒng)操作功能齊全,簡(jiǎn)單易用,查詢快速,包含了藥品區(qū)域代理商需要的大部分細(xì)節(jié)功能,如:藥品的基本信息、藥品生產(chǎn)商的信息、經(jīng)銷商的回款查詢、藥品的進(jìn)貨及庫(kù)存等等。能夠很好的輔助用戶管理藥品,并且利用計(jì)算機(jī)做復(fù)雜的統(tǒng)計(jì)計(jì)算和繁瑣的業(yè)務(wù)管理,極大的提高了用戶的工作效率,降低了運(yùn)營(yíng)成本。該系統(tǒng)還有很多不足之處,會(huì)在以后的使用中不斷的改進(jìn)。全文分三部分,分別介紹系統(tǒng)的開發(fā)背景、業(yè)務(wù)流程以及開發(fā)中應(yīng)用的關(guān)鍵技術(shù)。關(guān)鍵詞模糊查詢 動(dòng)態(tài)信息 框架結(jié)構(gòu)AbstractThis system is that a set of medicines enter to sell and store the administrative system. This system is a administrative system designed for regional agent that the medicines are sold , developed . This system has combined the trade characteristic of medicines sale according to the real business procedure of the regional agent of medicines, can well meet users demand of using . This system operation is multiple functional , simple and easy to use, inquire about fast, include the most details function that the regional agent of medicines needs, for instance: Basic information , the medicines manufacturers information , the distributors returned money inquiry , purchase and stock of the medicines of the medicines ,etc. Auxiliary users that it can be very good manage the medicines, and utilize the computer to do complicated statistics to calculate that manage with the tedious business, great improvement users working efficiency, has reduced the operation cost. This system has a lot of weak points, will of the use afterwards constant improvement.The full text divides into three parts, the key technology used while introducing the systematic development background, business procedure and developing separately.KeywordFuzzy inquiry Multidate information Frame structure摘要本系統(tǒng)是一套藥品進(jìn)銷存管理系統(tǒng)。本系統(tǒng)是針對(duì)藥品銷售的區(qū)域代理商設(shè)計(jì)、開發(fā)的一套管理系統(tǒng)。該系統(tǒng)按照藥品區(qū)域代理商的實(shí)際業(yè)務(wù)流程,結(jié)合了藥品銷售的行業(yè)特點(diǎn),能很好的滿足用戶的使用需求。該系統(tǒng)操作功能齊全,簡(jiǎn)單易用,查詢快速,包含了藥品區(qū)域代理商需要的大部分細(xì)節(jié)功能,如:藥品的基本信息、藥品生產(chǎn)商的信息、經(jīng)銷商的回款查詢、藥品的進(jìn)貨及庫(kù)存等等。能夠很好的輔助用戶管理藥品,并且利用計(jì)算機(jī)做復(fù)雜的統(tǒng)計(jì)計(jì)算和繁瑣的業(yè)務(wù)管理,極大的提高了用戶的工作效率,降低了運(yùn)營(yíng)成本。該系統(tǒng)還有很多不足之處,會(huì)在以后的使用中不斷的改進(jìn)。全文分三部分,分別介紹系統(tǒng)的開發(fā)背景、業(yè)務(wù)流程以及開發(fā)中應(yīng)用的關(guān)鍵技術(shù)。關(guān)鍵詞模糊查詢 動(dòng)態(tài)信息 框架結(jié)構(gòu)AbstractThis system is that a set of medicines enter to sell and store the administrative system. This system is a administrative system designed for regional agent that the medicines are sold , developed . This system has combined the trade characteristic of medicines sale according to the real business procedure of the regional agent of medicines, can well meet users demand of using . This system operation is multiple functional , simple and easy to use, inquire about fast, include the most details function that the regional agent of medicines needs, for instance: Basic information , the medicines manufacturers information , the distributors returned money inquiry , purchase and stock of the medicines of the medicines ,etc. Auxiliary users that it can be very good manage the medicines, and utilize the computer to do complicated statistics to calculate that manage with the tedious business, great improvement users working efficiency, has reduced the operation cost. This system has a lot of weak points, will of the use afterwards constant improvement.The full text divides into three parts, the key technology used while introducing the systematic development background, business procedure and developing separately.KeywordFuzzy inquiry Multidate information Frame structure前言藥品進(jìn)銷存管理系統(tǒng)是一套典型的信息管理系統(tǒng)。本系統(tǒng)的開發(fā)主要包括前臺(tái)應(yīng)用程序的開發(fā)和后臺(tái)數(shù)據(jù)庫(kù)的建立與維護(hù)兩部分,前臺(tái)應(yīng)用程序需要功能完善,容易操作,對(duì)于后臺(tái)數(shù)據(jù)庫(kù),需要建立一個(gè)數(shù)據(jù)一致性和完整性強(qiáng),數(shù)據(jù)安全性高的數(shù)據(jù)庫(kù)。藥品進(jìn)銷存管理系統(tǒng)是為藥品區(qū)域代理商量身定做的一套輔助軟件。一直以來(lái)藥品的代理商都采用傳統(tǒng)的人工方式管理藥品記錄,這樣的管理方式有著效率底下、保密性差、容易出錯(cuò)等缺點(diǎn),再經(jīng)過(guò)長(zhǎng)時(shí)間的積累,將會(huì)產(chǎn)生大量的信息,給查找、更新、維護(hù)、統(tǒng)計(jì)等工作帶來(lái)了很大的困難。隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識(shí),它已進(jìn)入人類社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來(lái)越重要的作用。使用計(jì)算機(jī)管理藥品信息有著諸多人工管理所不具備的優(yōu)勢(shì),例如:檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、保密性好、壽命長(zhǎng)、成本低等。這些優(yōu)點(diǎn)極大的提高了信息管理的效率,也是將來(lái)企業(yè)的科學(xué)化、正規(guī)化管理,與世界接軌的重要條件。因此,開發(fā)一套藥品進(jìn)銷存管理系統(tǒng)對(duì)有效管理相關(guān)信息是很必要的。在下面的文章中將以開發(fā)藥品進(jìn)銷存管理系統(tǒng)為例,談?wù)勯_發(fā)過(guò)程中所涉及到的問(wèn)題和解決方法。本文在結(jié)構(gòu)上,從需求分析,系統(tǒng)設(shè)計(jì),程序各功能模塊的實(shí)現(xiàn)、打包發(fā)布都嚴(yán)格按照軟件工程的工作流程。其中,關(guān)鍵技術(shù),則是列舉出了在程序的具體實(shí)現(xiàn)過(guò)程中所用到的一些相關(guān)算法、方法。最后對(duì)該軟件的發(fā)展前景談了個(gè)人的想法。在本文的完成過(guò)程中,得到了王向陽(yáng)老師耐心的幫助和指導(dǎo),在此表示衷心的感謝。由于本人水平有限,文中不足之處敬請(qǐng)老師批評(píng)指正。1 系統(tǒng)分析1.1系統(tǒng)開發(fā)背景從來(lái)沒有任何事物像互聯(lián)網(wǎng)那樣,對(duì)人類的活動(dòng)產(chǎn)生如此深刻影響,無(wú)論是政府、企業(yè),以及個(gè)人莫不如此。與此同時(shí),IT工業(yè)也面臨著一場(chǎng)變革,傳統(tǒng)應(yīng)用向基于Internet/Web的服務(wù)模式轉(zhuǎn)化。翻開歷史,我們可以看到互聯(lián)網(wǎng)的形成和發(fā)展就是以分布性、開放性和平臺(tái)無(wú)關(guān)性為基礎(chǔ)的,這是Internet與生俱來(lái)的屬性。隨著互聯(lián)網(wǎng)應(yīng)用的發(fā)展,隨著互聯(lián)網(wǎng)應(yīng)用的發(fā)展,引入了諸如RPC/COM/CORBA等技術(shù),但這些技術(shù)在實(shí)際應(yīng)用中又存在著很多不足和局限。它們特定的協(xié)議也難以通過(guò)防火墻,因而不適合Web上的應(yīng)用開發(fā)。為了進(jìn)一步開發(fā)基于Web的應(yīng)用,相繼出現(xiàn)了Sun公司的Sun ONE(Open Net Environment 開放網(wǎng)絡(luò)環(huán)境)和Microsoft公司的.NET兩大Web服務(wù)技術(shù)體系。其中Sun ONE以Java技術(shù)為核心,更接近或滿足互聯(lián)網(wǎng)在智能化Web服務(wù)上的分布性、開放性和平臺(tái)無(wú)關(guān)性的要求,同時(shí)其健壯性、安全性、組件化等方面也更為成熟穩(wěn)定,獲得了眾多IT廠商和產(chǎn)品的支持,是目前惟一在市場(chǎng)上得到了廣泛應(yīng)用的技術(shù)體系。SUN ONE體系結(jié)構(gòu)以Java語(yǔ)言為核心,包括J2EE/J2SE/J2ME,并基于一系列開放和流行標(biāo)準(zhǔn)、技術(shù)及協(xié)議。要特別指出的是,Sun ONE體系結(jié)構(gòu)本身作為開放式體系結(jié)構(gòu),在得到IBM/BEA/Oracle/Sybase等這些IT巨臂支持的同時(shí),更得到了互聯(lián)網(wǎng)上Open Source社區(qū)的青睞。我們很容易的從網(wǎng)上免費(fèi)獲得和使用Java集成開發(fā)環(huán)境、Java數(shù)據(jù)庫(kù),甚至使中間插件(Appcation Server)服務(wù)器等產(chǎn)品,以及他們的源代碼。這對(duì)于加速國(guó)內(nèi)中小企業(yè)的信息化建設(shè)和自由知識(shí)產(chǎn)權(quán)的產(chǎn)品開發(fā)、提高企業(yè)應(yīng)用和軟件行業(yè)的整體水平無(wú)疑是一次難得的機(jī)會(huì)。隨著Internet和電子商務(wù)等應(yīng)用的出現(xiàn),動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)也隨著它們的出現(xiàn)而誕生了。所謂動(dòng)態(tài)網(wǎng)頁(yè),并不是指那幾個(gè)放在網(wǎng)頁(yè)是的GIF動(dòng)態(tài)圖片,在這里總結(jié)了動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)有以下幾個(gè)特點(diǎn):1. 交互性:即網(wǎng)頁(yè)會(huì)根據(jù)用戶的要求和選擇而動(dòng)態(tài)改變響應(yīng),將瀏覽器作為客戶端界面,這將是今后Web發(fā)展的大勢(shì)所趨。2. 自動(dòng)更新:即無(wú)須手動(dòng)更新HTML文檔,便會(huì)自動(dòng)生成新的頁(yè)面,可以大大節(jié)省工作量。3. 因時(shí)因人而變:即當(dāng)不同的時(shí)間、不同的人訪問(wèn)同一網(wǎng)址時(shí)會(huì)產(chǎn)生不同的頁(yè)面。除了早期的CGI外,目前主流的動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)有JSP、ASP、PHP等,下面對(duì)這些網(wǎng)頁(yè)技術(shù)作一些簡(jiǎn)單的技術(shù)及應(yīng)用的分析:CGI:在早期,動(dòng)態(tài)網(wǎng)頁(yè)主要采用CGI技術(shù),CGI即Common Gateway Interface(公用網(wǎng)關(guān)接口)。您可以使用不同的程序編寫合適的 CGI程序,如VB、Delphi或C/C+等。雖然CGI技術(shù)發(fā)展成熟而且功能強(qiáng)大,但由于編程困難、效率低下、修改復(fù)雜等缺陷,所以又逐漸被新技術(shù)取代的趨勢(shì)。ASP:ASP更精確的說(shuō)是一個(gè)中間插件,這個(gè)中間插件將Web上的請(qǐng)求轉(zhuǎn)入到一個(gè)解釋器中,在這個(gè)解釋器中將所有的ASP的Script進(jìn)行分析,再進(jìn)行執(zhí)行,而這時(shí)可以在這個(gè)中間件中創(chuàng)建一個(gè)新的COM對(duì)象,對(duì)這個(gè)對(duì)象中的方法和屬性進(jìn)行操作和調(diào)用,同時(shí)再通過(guò)這些COM組件完成更多的工作。所以的強(qiáng)大不在于它的VBScript,而在于它后臺(tái)的COM組件這些組件無(wú)限的擴(kuò)充了ASP的能力。1. ASP的強(qiáng)勢(shì)1) 簡(jiǎn)單易學(xué)。Basic語(yǔ)言有著很大的用戶群,這個(gè)開發(fā)基礎(chǔ)是最廣的。而且Microsoft有一向作的非常好的聯(lián)機(jī)手冊(cè)和本地化語(yǔ)言幫助,同時(shí)非??斓某霈F(xiàn)了很多教學(xué)書籍,這樣會(huì)大大方便開發(fā)人員的學(xué)習(xí)和對(duì)技術(shù)的深入研究。2) 安裝使用方便。裝好一個(gè)Windows 2000,只要安裝IIS,ASP就可以使用了,沒有什么需要花心思去配置的。3) 開發(fā)工具強(qiáng)大而多樣。易用、簡(jiǎn)單、人性化。4) 效率高。在低的訪問(wèn)量下,ASP能體現(xiàn)出一定的效率,這時(shí)它對(duì)機(jī)器的要求并不高。2. ASP的弱勢(shì)1) Windows本身的所有問(wèn)題都會(huì)一成不變的累加到它的身上。安全性、穩(wěn)定性、跨平臺(tái)性都會(huì)因?yàn)榕cNT的捆綁而顯現(xiàn)出來(lái)。2) ASP由于使用了COM組件,所以它會(huì)變的十分強(qiáng)大,但是這樣的強(qiáng)大由于Windows NT系統(tǒng)最初的設(shè)計(jì)問(wèn)題而會(huì)引發(fā)大量的安全問(wèn)題。只要在這樣的組件或操作中稍不注意,外部攻擊就可以取得相當(dāng)高的權(quán)限而導(dǎo)致網(wǎng)站癱瘓或者數(shù)據(jù)丟失。3) 由于ASP是一種Script語(yǔ)言,所以除了大量使用組件外,沒有別的辦法提高其工作效率。它必須面對(duì)即時(shí)編譯的時(shí)間考驗(yàn)。4) 無(wú)法實(shí)現(xiàn)跨操作系統(tǒng)的應(yīng)用。5) 無(wú)法完成企業(yè)級(jí)的功能:完全的集群、負(fù)載均衡。PHP:PHP(Hypertext Preprocessor)是一種HTML內(nèi)嵌式語(yǔ)言(類似于IIS上的ASP)。而PHP獨(dú)特的語(yǔ)法混合了C、Java、Perl以及PHP式的新語(yǔ)法,它可以比CGI或者Perl更快速的執(zhí)行動(dòng)態(tài)網(wǎng)頁(yè)。1. PHP的強(qiáng)勢(shì)1) 一種能快速學(xué)習(xí)、跨平臺(tái)、有良好數(shù)據(jù)庫(kù)交換能力的開發(fā)語(yǔ)言。ASP比不上它的就是這種跨平臺(tái)能力,而正是它這種能力讓UNIX/Linux有了一種與ASP媲美的開發(fā)語(yǔ)言。語(yǔ)法簡(jiǎn)單、書寫容易,現(xiàn)在市面上還有大量的書,同時(shí)Internet上也有大量的代碼可以共享。2) 與Apache及其他擴(kuò)展庫(kù)結(jié)合緊密。PHP與Apache可以以靜態(tài)編譯的方式結(jié)合起來(lái),而與其他擴(kuò)展庫(kù)也可以用這樣的方式結(jié)合(Windows 平臺(tái)除外)。這種方式的最大的好處就是最大化的利用了CPU和內(nèi)存,同時(shí)極為有效的利用率Apache高性能的吞吐能力。同時(shí)外部的擴(kuò)展也是靜態(tài)聯(lián)編,從而達(dá)到了最快的運(yùn)行速度。由于與數(shù)據(jù)庫(kù)的接口也使用了這樣的方式,所以使用的是本地化的調(diào)用,這也讓數(shù)據(jù)庫(kù)發(fā)揮了最佳效能。3) 良好的安全性。由于PHP本身的代碼開放,所以它的代碼在許多工程師手中進(jìn)行了檢測(cè),同時(shí)它與Apache編譯在一起的方式也可以讓它具有靈活的安全設(shè)定,所以到現(xiàn)在為止,PHP具有了公認(rèn)的安全性能。2. PHP的弱勢(shì)1) 數(shù)據(jù)庫(kù)支持的極大變化。由于PHP的所有擴(kuò)展接口都是由獨(dú)立團(tuán)對(duì)開發(fā)完成的,同時(shí)在開發(fā)時(shí)為了形成相應(yīng)數(shù)據(jù)的個(gè)性化操作,所以PHP雖讓支持許多數(shù)據(jù)庫(kù),但是針對(duì)每種數(shù)據(jù)庫(kù)的開發(fā)語(yǔ)言都完全不同。這樣形成針對(duì)一種數(shù)據(jù)庫(kù)的開發(fā)工作,在數(shù)據(jù)庫(kù)進(jìn)行升級(jí)后需要開發(fā)人員進(jìn)行幾乎全部的代碼更改工作。而為了讓應(yīng)用支持更多種的數(shù)據(jù)庫(kù),就需要開發(fā)人員將同樣的數(shù)據(jù)庫(kù)操作使用不同的代碼寫出很多種代碼庫(kù)出來(lái),讓程序員的工作量大大增加。2) 安裝復(fù)雜。由于PHP的每種擴(kuò)充模塊并不是完全有PHP本身來(lái)完成的,需要許多外部的應(yīng)用庫(kù),如圖形需要GD庫(kù),LDAP需要LDAP庫(kù)等。這樣在安裝完成相應(yīng)應(yīng)用后,再聯(lián)編進(jìn)PHP中來(lái)。只有在這些環(huán)境下才能方便的編譯對(duì)應(yīng)擴(kuò)展庫(kù)。這些都是開發(fā)人員在使用PHP前先要面對(duì)的問(wèn)題。3) 缺少企業(yè)級(jí)支持。沒有組件的支持,那么所有的擴(kuò)充就只能依靠PHP開發(fā)組的所給出的接口,事實(shí)上這樣地接口還不夠多。同時(shí)難以將集群、應(yīng)用服務(wù)器這樣的特性加入到系統(tǒng)中去。而一個(gè)大型的站點(diǎn)或企業(yè)級(jí)的應(yīng)用一定需要這樣的支持。注意,在PHP的4.0版本以后加入了對(duì)Servlet/JavaBean的支持,也許這樣的支持會(huì)在以后的版本中更加增強(qiáng),也許這樣的支持會(huì)是PHP以后的企業(yè)級(jí)支持的起點(diǎn)。4) 缺少正規(guī)的商業(yè)支持,這也是自由軟件的一向的缺點(diǎn)。5) 無(wú)法實(shí)現(xiàn)商品化的應(yīng)用開發(fā)。由于PHP沒有任何編譯性的開發(fā)工作,所有的開發(fā)都是基于腳本技術(shù)來(lái)完成的,所以所有的源代碼都無(wú)法編譯,完成的應(yīng)用只能是自己或是內(nèi)部使用,難以實(shí)現(xiàn)商品化。JSP:JSP頁(yè)面由HTML代碼和嵌入其中的Java代碼所組成。服務(wù)器在頁(yè)面被客戶端請(qǐng)求以后對(duì)這些Java代碼進(jìn)行處理然后將生成的HTML頁(yè)面返回給客戶端的瀏覽器。JavaServlet是JSP技術(shù)的基礎(chǔ),而且大型的Web應(yīng)用程序的開發(fā)需要Java Servlet和JSP配合才能完成。JSP具備了Java技術(shù)的簡(jiǎn)單易用、完全面向?qū)ο?、具有平臺(tái)無(wú)關(guān)性且安全可靠、主要面向Internet的所有特點(diǎn)。1. JSP技術(shù)的強(qiáng)勢(shì)1) 一次編寫,到處運(yùn)行。在這一點(diǎn)上Java比PHP更出色,除了系統(tǒng)之外,代碼不用作任何修改。2) 系統(tǒng)的多平臺(tái)支持?;旧峡梢栽谒衅脚_(tái)上的任意環(huán)境中開發(fā),在任意環(huán)境中進(jìn)行系統(tǒng)部署,在任意環(huán)境中擴(kuò)展。相比ASP/PHP的局限性是顯而易見的。3) 強(qiáng)大的可伸縮性。從只有一個(gè)小的Jar文件就可以運(yùn)行Servlet/JSP,到由多臺(tái)服務(wù)器進(jìn)行集群和負(fù)載均衡,到多臺(tái)Application進(jìn)行事務(wù)處理、消息處理,一臺(tái)服務(wù)器到無(wú)數(shù)臺(tái)服務(wù)器,Java顯示了一個(gè)巨大的生命力。4) 多樣化和功能強(qiáng)大的開發(fā)工具支持。這一點(diǎn)與ASP很像,Java已經(jīng)有了許多非常優(yōu)秀的開發(fā)工具,而且有許多可以免費(fèi)得到,并且其中許多已經(jīng)可以順利的運(yùn)行于多種平臺(tái)之下。2. JSP技術(shù)的弱勢(shì)1) 與ASP一樣,Java的一些優(yōu)勢(shì)正是它致命的問(wèn)題所在。正是由于為了跨平臺(tái)的功能,為了極度的伸縮能力,所以極大的增加了產(chǎn)品的復(fù)雜性。2) Java的運(yùn)行速度是用Class常駐內(nèi)存來(lái)完成的,所以它在一些情況下所使用的內(nèi)存比起用戶數(shù)量來(lái)說(shuō)確實(shí)是“最低性能價(jià)格比”了。從另一方面來(lái)說(shuō),它還需要硬盤空間來(lái)存儲(chǔ)一系列.Java文件和.class文件,以及對(duì)應(yīng)的版本文件。1.2技術(shù)的選用通過(guò)以上對(duì)目前主要的動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)的對(duì)比,我們決定選用JSP來(lái)開發(fā)藥品進(jìn)銷存系統(tǒng)。JSP技術(shù)是由Servlet技術(shù)發(fā)展起來(lái)的,自從有了JSP后,在Java服務(wù)器端編程中普遍才用的就是JSP,而不失Servlet。因?yàn)镴SP在編寫表示頁(yè)面時(shí)遠(yuǎn)遠(yuǎn)比Servlet簡(jiǎn)單,并且不需要手工編譯(由Servlet容器自動(dòng)編譯),目前Servlet主要用于視圖控制器、處理后臺(tái)應(yīng)用等。由于JSP構(gòu)建在Servlet上,所以它有Servlet所有強(qiáng)大的功能。在開發(fā)JSP規(guī)范過(guò)程中,Sun公司與許多主要的Web服務(wù)器、應(yīng)用服務(wù)器和開發(fā)工具供應(yīng)商積極進(jìn)行合作,不斷完善技術(shù)。在傳統(tǒng)的HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP標(biāo)記,就構(gòu)成了JSP網(wǎng)頁(yè)(*.JSP)。JSP基于強(qiáng)大的Java語(yǔ)言,具有良好的伸縮性,與Java Enterprise API緊密的集成在一起,在網(wǎng)絡(luò)數(shù)據(jù)庫(kù)應(yīng)用開發(fā)領(lǐng)域具有得天獨(dú)厚的優(yōu)勢(shì),基于Java平臺(tái)構(gòu)建網(wǎng)絡(luò)程序已經(jīng)被越來(lái)越多的人認(rèn)為是未來(lái)最有發(fā)展前途的技術(shù)。從JSP這幾年的發(fā)展來(lái)看,JSP已經(jīng)獲得了巨大成功,它通過(guò)和EJB等J2EE組件進(jìn)行集成,可以編寫出處理具有大的伸縮性、高負(fù)載和企業(yè)級(jí)應(yīng)用。JSP技術(shù)在許多方面加速了動(dòng)態(tài)Web頁(yè)面的開發(fā)。下面總結(jié)了一下JSP的特點(diǎn):1. 將內(nèi)容的生成和顯示進(jìn)行分離。使用JSP技術(shù),Web頁(yè)面開發(fā)人員可以使用HTML或者XML標(biāo)識(shí)來(lái)設(shè)計(jì)和格式化最終頁(yè)面。使用JSP標(biāo)識(shí)或者小腳本來(lái)生成頁(yè)面上的動(dòng)態(tài)內(nèi)容。生成內(nèi)容的邏輯被封裝在標(biāo)識(shí)和Java Beans組件,并且捆綁在小腳本中,所有的腳本在服務(wù)器端運(yùn)行。如果核心邏輯被封裝在標(biāo)識(shí)和Bean中,那么其他人,如Web管理人員和頁(yè)面設(shè)計(jì)者,能夠編輯和使用JSP頁(yè)面,而不影響內(nèi)容生成。在服務(wù)器端,JSP引擎解釋JSP標(biāo)識(shí)和小腳本,生成所請(qǐng)求的內(nèi)容(例如,通過(guò)訪問(wèn)Java Bean組件,使用JDBCTM技術(shù)訪問(wèn)數(shù)據(jù)庫(kù)或者包含文件),并且將結(jié)果以HTML(或者XML)頁(yè)面的形式發(fā)送給瀏覽器。這有助于作者保護(hù)自己的代碼而又保證任何基于HTML的Web瀏覽器的完全可用性。2. 生成可重用的組件。絕大多數(shù)JSP頁(yè)面依賴于可重用的、跨平臺(tái)的組件(JavaBeans或者EJB組件)來(lái)執(zhí)行應(yīng)用程序所要求的更為復(fù)雜的處理。開發(fā)人員能夠共享和交換執(zhí)行普通操作的組件,或者使得這些組件為更多的使用者或者用戶團(tuán)體所使用?;诮M件的方法加速了總體開發(fā)過(guò)程,并且使得各種組織在他們現(xiàn)有的技能和優(yōu)化結(jié)果的開發(fā)努力中得到平衡。3. 采用標(biāo)簽簡(jiǎn)化頁(yè)面開發(fā)。Web頁(yè)面開發(fā)人員不一定都是熟悉腳本語(yǔ)言的編程人員。JavaServer Page技術(shù)封裝了許多功能,這些功能是在易用的、與JSP相關(guān)的XML標(biāo)識(shí)中進(jìn)行動(dòng)態(tài)內(nèi)容生成時(shí)所需要的。標(biāo)準(zhǔn)的JSP標(biāo)識(shí)能夠訪問(wèn)和實(shí)例化JavaBeans組件,設(shè)置或者檢索組件屬性,下載Applet以及執(zhí)行用其他方法更難于編碼或者耗時(shí)的功能。4. JSP能提供所有的Servlets功能。與Servlets相比,JSP能提供所有的Servlets功能,它比用Println書寫和修改HTML更方便。此外,您可以更明確的進(jìn)行分工,Web頁(yè)面設(shè)計(jì)人員編寫HTML,只需要留出空間讓Servlets程序員插入動(dòng)態(tài)部分即可。5. 健壯的存儲(chǔ)管理和安全性。由于JSP頁(yè)面的內(nèi)置腳本語(yǔ)言是基于Java編程語(yǔ)言的,而且所有的JSP頁(yè)面都被編譯成為Java Servlet,JSP頁(yè)面就具有Java技術(shù)的所有優(yōu)點(diǎn),包括健壯的存儲(chǔ)管理和安全性。6. 一次編寫,隨處運(yùn)行。作為Java平臺(tái)的一部分,JSP擁有Java編程語(yǔ)言“一次編寫,隨處運(yùn)行”的特點(diǎn)。隨著越來(lái)越多的供應(yīng)商將JSP支持添加到他們的產(chǎn)品中,您可以使用自己所選擇的服務(wù)器和工具,但并不影響當(dāng)前的應(yīng)用。7. JSP的平臺(tái)適用性更廣這是JSP比ASP的優(yōu)越之處。幾乎所有平臺(tái)都支持Java、JSP+JavaBeans,他們可以在任何平臺(tái)下通行無(wú)阻。Windows NT下的IIS通過(guò)一個(gè)插件就能支持JSP,例如 JRUN或者ServletExec,著名的Web服務(wù)器Apache已經(jīng)能夠支持JSP。由于Apache廣泛應(yīng)用在Windows NT、UNIX和Linux上,因此JSP有更廣泛的運(yùn)行平臺(tái)。雖然現(xiàn)在windows NT 操作系統(tǒng)占了很大的市場(chǎng)份額,但是在服務(wù)器方面UNIX的優(yōu)勢(shì)仍然很大,而新崛起的Linux更是來(lái)勢(shì)不小。從一個(gè)平臺(tái)移植到另一個(gè)平臺(tái),JSP和JavaBeans甚至不用重新編譯,因?yàn)镴ava的字節(jié)碼都是標(biāo)準(zhǔn)的字節(jié)碼,與平臺(tái)無(wú)關(guān)。8. Java中連接數(shù)據(jù)庫(kù)的技術(shù)是JDBC(Java Database Connectivity)。很多數(shù)據(jù)庫(kù)帶有JDBC驅(qū)動(dòng)程序,Java程序通過(guò)JDBC驅(qū)動(dòng)程序與數(shù)據(jù)庫(kù)相連接,執(zhí)行查詢、提取數(shù)據(jù)等操作。Sun公司還開發(fā)了JDBC-ODBC Bridge,用此技術(shù)Java程序就可以訪問(wèn)帶有ODBC驅(qū)動(dòng)程序的數(shù)據(jù)庫(kù),目前大多數(shù)數(shù)據(jù)庫(kù)系統(tǒng)都帶有ODBC驅(qū)動(dòng)程序,所以Java程序能訪問(wèn)諸如 Oracle、Sybase、MS SQL Server和MS Access等類型的數(shù)據(jù)庫(kù)。9. 簡(jiǎn)單易學(xué)。隨著JSP2.0中標(biāo)簽語(yǔ)言的出現(xiàn),即使不懂Java的程序員也能編寫出功能完善的JSP應(yīng)用。1.3開發(fā)框架的選擇如今,Java 2 Enterprise Edition(J2EE)平臺(tái)已經(jīng)日趨成熟,并得到廣泛應(yīng)用。在J2EE技術(shù)中發(fā)展最迅猛的當(dāng)屬Java Server Page(JSP)技術(shù)。幾乎所有的基于Java的Web應(yīng)用都使用JSP。一些免費(fèi)的、開放源代碼的JSP/Servlet容器,如Apache軟件組織的Tomcat,更進(jìn)一步推動(dòng)了JSP技術(shù)的發(fā)展。本系統(tǒng)的Web服務(wù)器選用的就是Apache Tomcat 5.0。隨著JSP技術(shù)的成熟,越來(lái)越多的開發(fā)人員開始使用Web應(yīng)用框架??蚣転閃eb應(yīng)用提供了預(yù)備的軟件架構(gòu)和相關(guān)的軟件包,它大大提高了開發(fā)Web的速度和效率?,F(xiàn)在,當(dāng)開發(fā)人員開始一個(gè)新的項(xiàng)目時(shí),他們首先考慮的問(wèn)題不是“我們是否需要框架”,而是“我們應(yīng)該使用什么樣的框架”。Jakarta-Struts是Apache軟件組織提供的一項(xiàng)開放源代碼的項(xiàng)目,它為Java Web應(yīng)用提供了模型-視圖-控制器(Model-View-Controller,MVC)框架,尤其適用于開發(fā)大型可擴(kuò)展的Web應(yīng)用。Struts這個(gè)名字來(lái)源于在建筑和舊式飛機(jī)中使用的支撐金屬架。Struts為Web應(yīng)用提供了一個(gè)通用的框架,使得開發(fā)人員可以把精力集中在如何解決實(shí)際業(yè)務(wù)問(wèn)題上。此外,Struts框架提供了許多可供擴(kuò)展和定制的地方,使得應(yīng)用程序可以方便的擴(kuò)展框架,來(lái)更好的適應(yīng)用戶的實(shí)際需求。當(dāng)然,開發(fā)人員需要花一定的時(shí)間來(lái)學(xué)習(xí)和運(yùn)用該框架。不過(guò),一旦掌握了Struts,就可以大大簡(jiǎn)化Web應(yīng)用的開發(fā)過(guò)程,提高開發(fā)效率,縮短開發(fā)周期。如果想綜合利用Servlet和JSP的優(yōu)點(diǎn)來(lái)建立可擴(kuò)展的Web應(yīng)用,Struts是不錯(cuò)的選擇。Struts為Java Web應(yīng)用提供了現(xiàn)成的通用的框架。Struts可以大大提高Web應(yīng)用的開發(fā)速度。如果沒有Struts,開發(fā)人員將不得不首先花大量的時(shí)間和精力來(lái)設(shè)計(jì)、開發(fā)自己的框架。如果在Web應(yīng)用中恰到好處的使用Struts,將把從頭設(shè)計(jì)框架的時(shí)間節(jié)省下來(lái),使得開發(fā)人員把精力集中在如何解決實(shí)際業(yè)務(wù)問(wèn)題上。而且Struts本身是一群經(jīng)驗(yàn)豐富的Web開發(fā)專家的集體智慧結(jié)晶,在全世界范圍內(nèi)得到廣泛應(yīng)用并等到一致認(rèn)可。Struts框架提供了許多可擴(kuò)展和定制的地方,使得應(yīng)用程序可以方便的擴(kuò)展框架,來(lái)更好的適應(yīng)用戶的實(shí)際需求。Java Web應(yīng)用的核心技術(shù)是Java Server Page和Servlet。此外,開發(fā)一個(gè)完整的Java Web應(yīng)用還涉及以下概念及技術(shù):l JavaBean組件l EJB組件l 自定義JSP標(biāo)簽l XMLl Web服務(wù)器和應(yīng)用服務(wù)器圖1-1顯示了Java Web應(yīng)用的結(jié)構(gòu)。JSP自定義標(biāo)簽庫(kù)XML視圖 (View)控制器 (Controller)XML配置文件Servlet模型 (Model)JavaBeanEJBJava實(shí)用類Web服務(wù)器以及應(yīng)用服務(wù)器圖1-1 Java Web 應(yīng)用的結(jié)構(gòu)1.4 MVC 概述MVC是Model-View-Controller的簡(jiǎn)稱,即模型-視圖-控制器。MVC是Xerox PARC在20世紀(jì)80年代為編程語(yǔ)言Smalltalk-80發(fā)明的一種軟件設(shè)計(jì)模式,至今已被廣泛使用,最近幾年被推薦為Sun公司J2EE平臺(tái)的設(shè)計(jì)模式,受到越來(lái)越多的Web開發(fā)者的歡迎。MVC是一種設(shè)計(jì)模式,它強(qiáng)制地把應(yīng)用程序的輸入、處理和輸出分開。MVC把應(yīng)用程序分成三個(gè)核心模塊:模型、視圖和控制器,它們分別擔(dān)負(fù)不同的任務(wù)。盡管構(gòu)造MVC應(yīng)用程序需要一些額外的工作,但是它給我們帶來(lái)的好處是毋庸質(zhì)疑的。首先,多個(gè)試圖能共享一個(gè)模型。在MVC設(shè)計(jì)模式中,模型響應(yīng)用戶請(qǐng)求并返回響應(yīng)數(shù)據(jù),視圖負(fù)責(zé)格式化數(shù)據(jù)并把它們呈現(xiàn)給用戶,業(yè)務(wù)邏輯和表示層分離,同一個(gè)模型可以被不同的視圖重用,所以大大提高了代碼的可重用性。其次,模型是自包含的,與控制器和視圖保持相對(duì)獨(dú)立,所以可以方便地改變應(yīng)用程序的數(shù)據(jù)層和業(yè)務(wù)規(guī)則。由于MVC的三個(gè)模塊相對(duì)獨(dú)立,改變其中一個(gè)不會(huì)影響其他兩個(gè),所以依據(jù)這種設(shè)計(jì)思想能構(gòu)造良好的松耦合的構(gòu)件。此外,控制器提高了應(yīng)用程序的靈活性和可配置性。給定一些可重用的模型和視圖,控制器可以根據(jù)用戶的需求選擇適當(dāng)?shù)哪P瓦M(jìn)行處理,然后選擇適當(dāng)?shù)囊晥D將處理結(jié)果顯示給用戶。圖1-2顯示了MVC設(shè)計(jì)模式:(控制器)接受用戶請(qǐng)求調(diào)用模型響應(yīng)用戶請(qǐng)求選擇視圖顯示響應(yīng)結(jié)果(視圖)顯示模型狀態(tài)接受數(shù)據(jù)更新請(qǐng)求把用戶輸入的數(shù)據(jù)傳給控制器(模型)代表應(yīng)用程序狀態(tài)響應(yīng)狀態(tài)查詢處理業(yè)務(wù)流程通知視圖業(yè)務(wù)狀態(tài)更新方法調(diào)用事件用戶請(qǐng)求狀態(tài)查詢通知數(shù)據(jù)更新業(yè)務(wù)處理選擇視圖圖1-2 MVC設(shè)計(jì)模式1.5 Struts實(shí)現(xiàn)MVC的機(jī)制及業(yè)務(wù)流程Struts實(shí)質(zhì)上就是在JSP Model2的基礎(chǔ)上實(shí)現(xiàn)的一個(gè)MVC框架。在Struts框架中,模型由實(shí)現(xiàn)業(yè)務(wù)邏輯的JavaBean或EJB組件構(gòu)成,控制器由ActionServlet和Action來(lái)實(shí)現(xiàn),視圖由一組JSP文件構(gòu)成。圖1-4顯示了JSP Model2的基本結(jié)構(gòu),圖1-3顯示了Struts實(shí)現(xiàn)的MVC框架。瀏覽器(模型)JavaBeanEJBServlet/JSP 容器Struts-config.xml(控制器)ActionServlet(視圖)JSPWeb服務(wù)器ActionActionAction圖1-3 Struts 實(shí)現(xiàn)的 MVC 框架瀏 覽 器(控制器)Servlet(視圖)JSP(模型)JavaBean1.視圖6.響應(yīng)42.實(shí)力化35應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)Web 服務(wù)器圖1-4 JSP Model2對(duì)于采用Struts框架的Web應(yīng)用,在Web應(yīng)用啟動(dòng)時(shí)就會(huì)加載并初始化ActionSeverlet,Actionlet從struts-config.xml文件中讀取配置信息,把它們存放到各種配置對(duì)象中,例如Action的映射信息存放在 ActionMapping對(duì)象中。當(dāng)ActionSeverlet接收到一個(gè)客戶請(qǐng)求時(shí),將執(zhí)行如下流程。1) 檢索和用戶請(qǐng)求匹配的ActionMapping實(shí)例,如果不存在,就返回用戶請(qǐng)求路徑無(wú)效的信息。2) 如果ActionForm實(shí)例不存在,就創(chuàng)建一個(gè)ActionForm對(duì)象,把客戶提交的表單數(shù)據(jù)保存到ActionForm對(duì)象中。3) 根據(jù)配置信息決定是否需要表單驗(yàn)證。如果需要表單驗(yàn)證。就調(diào)用ActionForm的validate()方法。4) 如果ActionForm的validate()方法返回null或返回一個(gè)不包含Actionmessage的ActionErroe對(duì)象,就表示表單驗(yàn)證成功。5) ActionServlet根據(jù)ActionMapping實(shí)例包含的映射信息決定將請(qǐng)求轉(zhuǎn)發(fā)給哪個(gè)Action。如果相應(yīng)的Action實(shí)例不存在,就先創(chuàng)建這個(gè)實(shí)例,然后調(diào)用Action的execute()方法。6) Action的execute()方法返回一個(gè)ActionForward對(duì)象,ActionSevelet再把客戶請(qǐng)求轉(zhuǎn)發(fā)給ActionForward對(duì)象指向的JSP組件。7) ActionForward對(duì)象指向的JSP組件生成動(dòng)態(tài)網(wǎng)頁(yè),返回給客戶。對(duì)于以上流程的流程(4),如果ActionForm的validate()方法返回一個(gè)包含一個(gè)或多個(gè)ActionMessage的ActionErrors對(duì)象,就表示表單驗(yàn)證失敗,此時(shí)ActionServlet將直接把請(qǐng)求轉(zhuǎn)發(fā)給包含用戶提交表單的JSP組件。在這種情況下,不會(huì)再創(chuàng)建Action對(duì)象并調(diào)用Action的execute()方法。圖1-5顯示了Struts響應(yīng)用戶請(qǐng)求的工作流程ActionServletRequest arrivesCreateActionFormReturn errorCreateActionProcessActionForwardReturnActionForwardPerform requiredBusiness logicExecute()Return ResponseNoYesYesActionMappingfoundValidate noNot foundAnotherActionmapping圖1-5Struts響應(yīng)用戶請(qǐng)求的工作流程ActionBusiness Logic1.5.1Servlet組件Servlet在Web應(yīng)用中擔(dān)任重要角色。Servlet運(yùn)行于Servlet容器中,可以被Servlet容器動(dòng)態(tài)加載,來(lái)擴(kuò)展服務(wù)器的功能,并提供特定的服務(wù)。Servlet按照請(qǐng)求/響應(yīng)的方式工作,在Struts框架中,控制器組件就是由Servlet來(lái)構(gòu)成的。當(dāng)用戶請(qǐng)求訪問(wèn)某個(gè)Servlet時(shí),Servlet容器將創(chuàng)建一個(gè)ServletRequest對(duì)象和ServletResponse對(duì)象。在ServletRequest對(duì)象中封裝了用戶請(qǐng)求信息,然后Servlet容器把ServletRequest對(duì)象和ServletResponse對(duì)象傳給用戶所請(qǐng)求的Servlet。Servlst把響應(yīng)結(jié)果寫到ServletResponse中,然后由Servlet容器把響應(yīng)結(jié)果傳給用戶。圖1-6顯示了Servlet容器響應(yīng)用戶請(qǐng)求的過(guò)程Web 用戶Servlet 容器Servlet請(qǐng)求響應(yīng)ServletRequest對(duì)象ServletResponse 對(duì)象圖1-6 Servlet容器響應(yīng)用戶請(qǐng)求的過(guò)程在Java Servlet API中有以下幾個(gè)比較重要的類,他們決定了Web應(yīng)用的請(qǐng)求/響應(yīng)方式及各種共享數(shù)據(jù)的存放地點(diǎn):l HttpServletRequest:Servlet容器把Http請(qǐng)求請(qǐng)求信息保存在HttpServletRequest對(duì)象中,Servlet組件從request對(duì)象讀取用戶的請(qǐng)求數(shù)據(jù)。此外,HttpServletRequest可也存放request范圍內(nèi)的共享數(shù)據(jù)。l HttpServletResponse:用于生成HTTP響應(yīng)結(jié)果。l HttpSession:Servlet為每個(gè)HTTP會(huì)話創(chuàng)建一個(gè)HttpSession實(shí)例,HttpSession可以存放session范圍內(nèi)的共享數(shù)據(jù)。l ServletContext:Servlet容器為Web應(yīng)用創(chuàng)建一個(gè)ServletContext實(shí)例,ServletContext可以存放Application范圍內(nèi)的共享數(shù)據(jù)。 1.5.2 JSP組件在傳統(tǒng)的HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP標(biāo)簽,就構(gòu)成了JSP網(wǎng)頁(yè)。Java程序片段可以操縱數(shù)據(jù)庫(kù)、重定向網(wǎng)頁(yè)以及發(fā)送E-mail等,實(shí)現(xiàn)建立動(dòng)態(tài)網(wǎng)站所需要的功能。所有程序操作都在服務(wù)器端執(zhí)行,網(wǎng)絡(luò)上傳送給用戶端的僅為輸出結(jié)果。JSP技術(shù)大大降低了對(duì)用戶瀏覽器的要求,即使用戶瀏覽器端部支持java,也可以訪問(wèn)JSP網(wǎng)頁(yè)。當(dāng)JSP容器接收到Web用戶的一個(gè)JSP文件請(qǐng)求時(shí),它對(duì)JSP文件進(jìn)行語(yǔ)法分析并生成Java Servlet源文件,然后對(duì)其編譯。一般情況下,Servlet源文件的生成和編譯僅在初次調(diào)用JSP時(shí)發(fā)生。如果原始的JSP文件被更新,JSP容器將檢測(cè)所做的更新,在執(zhí)行它之前重新生成Servlet并進(jìn)行編譯。圖1-7顯示了JSP容器初次執(zhí)行JSP的過(guò)程:瀏覽器JSP容器JSP文件生成Servlet源代碼經(jīng)編譯的Servlet類請(qǐng)求響應(yīng)圖1-7 JSP容器初次執(zhí)行JSP的過(guò)程盡管JSP本質(zhì)上就是Servlet,但這兩者的創(chuàng)建方式不一樣。Servlet完全由Java程序代碼構(gòu)成,擅長(zhǎng)于流程控制和事務(wù)處理,而通過(guò)Servlet生成的動(dòng)態(tài)網(wǎng)頁(yè)很不直觀;JSP由HTML代碼和JSP標(biāo)簽組成,可以方便的編寫動(dòng)態(tài)網(wǎng)頁(yè)。因此在實(shí)際應(yīng)用中,采用Servlet來(lái)控制業(yè)務(wù)流程,而采用JSP來(lái)生成動(dòng)態(tài)網(wǎng)頁(yè)。在Struts框架中,JSP位于MVC設(shè)計(jì)模式的視圖層,而Servlet位于控制層。在Web應(yīng)用中,如果某種數(shù)據(jù)需要被多個(gè)Web組件共享,可以把這些共享數(shù)據(jù)存放在特定的范圍內(nèi)。共享數(shù)據(jù)有4種存在范圍:l Page:共享數(shù)據(jù)的有效范圍是用戶請(qǐng)求訪問(wèn)的當(dāng)前JSP網(wǎng)頁(yè)。l Request:共享數(shù)據(jù)的有效范圍為“用戶請(qǐng)求訪問(wèn)的當(dāng)前Web組件,以及和當(dāng)前Web組件共享同一個(gè)用戶請(qǐng)求的其它Web組件”。如果用戶請(qǐng)求訪問(wèn)的是JSP網(wǎng)頁(yè),那么該JSP網(wǎng)頁(yè)的指令以及標(biāo)記包含的其他JSP文件也能訪問(wèn)能共享數(shù)據(jù)。Request范圍內(nèi)的共享數(shù)據(jù)實(shí)際上存放在HttpServletRequest對(duì)象中。l Session:共享數(shù)據(jù)存在于整個(gè)HTTP會(huì)話的生存周期內(nèi),同一個(gè)HTTP會(huì)話中的Web組件共享它。Session范圍內(nèi)的共享數(shù)據(jù)實(shí)際上是存放在HttpSession對(duì)象中的。l Application:共享數(shù)據(jù)存在于整個(gè)Web應(yīng)用的生命周期內(nèi),Web應(yīng)用中的所有Web組件都能共享它。共享數(shù)據(jù)實(shí)際上存放在ServletContext對(duì)象中。圖1-8顯示了共享數(shù)據(jù)在Web應(yīng)用中的存在范圍。ApplicationSessionRequestPage圖1-8 共享數(shù)據(jù)在Web應(yīng)用中的范圍1.5.3JavaBean組件及其在Web應(yīng)用中的范圍JavaBean是一種符合特定規(guī)范的Java對(duì)象,在JavaBean中定義了一系列的屬性,并提供了訪問(wèn)和設(shè)置這些屬性的公共方法。JavaBean可以作為共享數(shù)據(jù),存放在Page、Request、Session或Application范圍內(nèi)。在JSP文件中,可以通過(guò)專門的標(biāo)簽來(lái)定義或訪問(wèn)JavaBean。當(dāng)JSP與JavaBean搭配使用時(shí),JSP可側(cè)重于生成動(dòng)態(tài)網(wǎng)頁(yè),數(shù)據(jù)或邏輯由JavaBean來(lái)提供,這樣能充分利用JavaBean組件的可重用性特點(diǎn),提高開發(fā)網(wǎng)站的效率。在Struts框架中,ActionForm Bean就是典型的JavaBean,它能夠在視圖層和控制層之間傳遞用戶輸入的表單數(shù)據(jù)。它有兩種存在范圍:Request和Session。1.5.4 客戶化JSP標(biāo)簽JSP標(biāo)簽庫(kù)技術(shù)是在JSP1.1版本中出現(xiàn)的,它支持客戶在JSP文件中自定義客戶化標(biāo)簽,這些可重用的標(biāo)簽?zāi)軌蛱幚韽?fù)雜的邏輯運(yùn)算和事務(wù),或者定義JSP網(wǎng)頁(yè)的輸出內(nèi)容和格式。自定義JSP標(biāo)簽可以使JSP代碼更加簡(jiǎn)潔,有助于將JSP文件中的Java程序代碼分離出去,是JSP文件側(cè)重于提供HTML表示曾數(shù)據(jù)??蛻艋瘶?biāo)簽有以下優(yōu)點(diǎn):l 標(biāo)簽具有可重用性,因此可以提高開發(fā)效率。l 可以在JSP頁(yè)面以靜態(tài)或動(dòng)態(tài)的方式客戶化設(shè)置自定義標(biāo)簽的屬性。l 標(biāo)簽可以訪問(wèn)JSP網(wǎng)頁(yè)中的所有對(duì)象,如HttpServletRequest和 HttpServletResponse等。l 標(biāo)簽可以相互嵌套,來(lái)完成復(fù)雜的邏輯。l 標(biāo)簽可以使JSP頁(yè)面變得更加簡(jiǎn)潔,提高可讀性。Struts提高了五種功能強(qiáng)大的標(biāo)簽庫(kù),包括:Bean標(biāo)簽庫(kù)、HTML標(biāo)簽庫(kù)、Nested標(biāo)簽庫(kù)和Tiles標(biāo)簽庫(kù)。熟練使用這些標(biāo)簽庫(kù),可以簡(jiǎn)化開發(fā)交互式的、基于表單的Web應(yīng)用的過(guò)程。1.5.5 XML 語(yǔ)言XML,即可擴(kuò)展標(biāo)記語(yǔ)言(Extensible Markup Language),是一種用來(lái)創(chuàng)建自定義標(biāo)記的標(biāo)記語(yǔ)言。XML在Web應(yīng)用以及Web服務(wù)開發(fā)中得到了廣泛的運(yùn)用,可用來(lái)描述結(jié)構(gòu)化的數(shù)據(jù)。XML的標(biāo)記通常都包含一對(duì)起始和結(jié)束標(biāo)簽,在標(biāo)簽之間插入相應(yīng)的數(shù)據(jù)

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論