国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Servlets在網(wǎng)站中的應(yīng)用前景如何及入門

2019-11-18 15:08:35
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  作者: Rich Dragan / 翻譯:朱英

CGI(通用網(wǎng)關(guān)接口)腳本編程在網(wǎng)絡(luò)治理員的心目中一直牢牢地占據(jù)著重要的位置。目前, CGI腳本在很多網(wǎng)站上得到了應(yīng)用,這種情況是否會(huì)一直持續(xù)下去?

我們現(xiàn)在將了解一下另一種在服務(wù)器端進(jìn)行程序設(shè)計(jì)的方法,即采用java語(yǔ)言。Java servlets是Sun Microsystems公司關(guān)于Java無(wú)處不在的戰(zhàn)略的下一步的重大目標(biāo)。

CGI FYI

獲取從網(wǎng)頁(yè)傳送到客戶的數(shù)據(jù),用CGI實(shí)現(xiàn)很簡(jiǎn)單。通過(guò)解析服務(wù)器上的環(huán)境變量,CGI 腳本通過(guò)使用在HTTP協(xié)議中定義的標(biāo)準(zhǔn)事件(類似于POST事件),可以讀取客戶傳送來(lái)的數(shù)據(jù)。

CGI的原理很簡(jiǎn)單,但在網(wǎng)絡(luò)開發(fā)應(yīng)用中,CGI程序設(shè)計(jì)需要專門的技巧,因?yàn)槟_本語(yǔ)言,尤其是用于CGI的Perl語(yǔ)言,把握起來(lái)相當(dāng)有難度。不少網(wǎng)絡(luò)瀏覽器的客戶端,有界面友好的工具和腳本語(yǔ)言,但在服務(wù)器端的開發(fā)難度較大。微軟的Active Server Pages,簡(jiǎn)稱 asp,可以簡(jiǎn)化服務(wù)器端的開發(fā),它的語(yǔ)法是基于Visual Basic的VBScript.

缺省情況下,當(dāng)每個(gè)用戶查看一個(gè)網(wǎng)址時(shí),就會(huì)調(diào)用一個(gè)CGI腳本,于是就會(huì)在服務(wù)器上啟動(dòng)一個(gè)新的進(jìn)程或者程序。這樣做,代價(jià)太昂貴,所以Netscape和微軟分別推出NSAPI和ISAPI模塊,這樣就可以克服性能限制。使用這些模塊,服務(wù)器端的功能可以包含在DLL格式的文件,多個(gè)客戶可以使用同一可執(zhí)行文件。同樣,開發(fā)這樣的程序需要高級(jí)的技能。

Java可以來(lái)解救
同單一的開發(fā)語(yǔ)言相結(jié)合,且又輕易治理,還可以有效地使用服務(wù)器端的資源,這就是Java servlets所帶來(lái)的好處。只要你熟悉Java,就可以很輕易地寫出輕易擴(kuò)充且富有效率的Java servlets代碼,(在Java Servlet Developer´s Kit 中,Sun提供了一系列的類,為你做了大部分的工作,你可以從其網(wǎng)址http://www.javasoft.com/ 中下載)

Servlets在服務(wù)器上很輕易配置。你可以得到一個(gè)方便的圖形接口,來(lái)控制運(yùn)行哪個(gè)servlets, 也可以輕易地配置其它選項(xiàng)。這比治理CGI 腳本更輕易,除此之外,你在更新servlets時(shí),無(wú)需關(guān)閉服務(wù)器。

Servlets有其獨(dú)特的優(yōu)點(diǎn),因?yàn)樗鼈兪怯肑ava語(yǔ)言編寫的,所以可以工作于流行的網(wǎng)絡(luò)服務(wù)器上,包括:Netscape, Microsoft, Apache 和Sun公司自己開發(fā)的WebServer等服務(wù)器軟件。 (現(xiàn)在,還有第三方的插件,可以讓servlets運(yùn)行在絕大部分平臺(tái)上。你可以到Sun公司網(wǎng)站上去查詢相關(guān)信息。) 這種跨平臺(tái)的能力,對(duì)于那些在同一時(shí)間內(nèi),需要在不止一種平臺(tái)上運(yùn)行的網(wǎng)站來(lái)說(shuō),非凡有用。你可以很輕易地改變硬件平臺(tái),或者升級(jí)服務(wù)器,而無(wú)需改動(dòng)服務(wù)器端的代碼。

當(dāng)然,在服務(wù)器上,你需要有Java虛擬機(jī)(JVM),Java虛擬機(jī)可以帶來(lái)另外的好處,因?yàn)镴ava具有內(nèi)在的垃圾搜集機(jī)制,你不會(huì)因出現(xiàn)servlet出錯(cuò)或者發(fā)生例外,而泄漏你的資源。從理論上講,因?yàn)镴ava具有內(nèi)在的安全機(jī)制,Java servlets比其競(jìng)爭(zhēng)對(duì)手的同類產(chǎn)品更具健壯性。

另外一個(gè)依靠Java的原因是:Java可以訪問(wèn)數(shù)據(jù)庫(kù) (通過(guò)JDBC) 和進(jìn)行分布式處理 (通過(guò)Java的遠(yuǎn)程方法調(diào)用,即RMI)。當(dāng)然,你也可以不采用Java,可以在網(wǎng)站上的不同部分,采用多種語(yǔ)言和技術(shù)(用于創(chuàng)建動(dòng)態(tài)Html ,訪問(wèn)數(shù)據(jù)庫(kù),連接到不同的服務(wù)器)。而一旦使用Java,就可以完成上述的全部工作,這樣Servlet模型就賦予Java一個(gè)嶄新的,功能強(qiáng)大的角色,并且能夠適應(yīng)各種服務(wù)器。

創(chuàng)建一個(gè)Servlet
前面把Java servlet講得這么動(dòng)聽,你也許會(huì)迫不急待地想試試servlet的用法。在這之前,你需要下載Sun公司的Servlet Developer´s Kit,之后再安裝網(wǎng)絡(luò)服務(wù)器,最后用Symantec的 Visual Cafe用來(lái)編譯Java源代碼,本文中,我們創(chuàng)建了一個(gè)典型的Java servlet樣本. (你可下載JServlet.zip文件)

該servlet例子可以在支持servlet的網(wǎng)絡(luò)服務(wù)器上運(yùn)行,向假想的客戶發(fā)布銷售信息,為了便于治理,SalesInfoServlet自己記錄數(shù)據(jù),當(dāng)然它也可以不這樣做,通過(guò)JDBC 連接到“活動(dòng)”的數(shù)據(jù)源上,但這就需要額外的部件,使得發(fā)布一個(gè)演示用的應(yīng)用程序步驟更加復(fù)雜。

一旦把例子網(wǎng)頁(yè)在網(wǎng)絡(luò)服務(wù)器上安裝完畢,用瀏覽器打開PRodUCtSalesDemo.html網(wǎng)頁(yè)作為開始 (我們使用的是Netscape瀏覽器)。當(dāng)客戶調(diào)用一個(gè)servlet (在HTTP 中使用了標(biāo)準(zhǔn)的GET和POST事件),我們的ProductInfoServlet就根據(jù)客戶的信息生成新的HTML 頁(yè)面。這里的基本思想模擬的是一個(gè)簡(jiǎn)單的CGI-bin腳本的做法。事實(shí)上,為了保證向后的兼容性,Java servlets也可以運(yùn)行CGI腳本,盡管它在Java中工作得更好。

讓我們?cè)賮?lái)看一下ProductInfoServlet.java文件,以便了解Java servlets的一些細(xì)節(jié)。有人警告稱:Sun公司已經(jīng)推出JDK 1.2,所以servlets的一些細(xì)節(jié),可能會(huì)隨之而改變。回顧Java語(yǔ)言的簡(jiǎn)短歷史,Java 開發(fā)者們一直具有開放性的思想,在新版本中,servlets的基本的工作原理不會(huì)改變。用戶創(chuàng)建的servlet都需要通過(guò)Java要害字“extends”從HttpServlet 類中派生出來(lái)。HttpServer類及其相關(guān)類放在javax.servlet包中,該包中包含了額外的可以使用的服務(wù)器端的類。

你的servlet可具有很多有意義的功能,諸如具有內(nèi)在的多任務(wù)機(jī)制,能夠同網(wǎng)絡(luò)服務(wù)器協(xié)同工作,配置靈活輕易。對(duì)同一個(gè)Java小程序發(fā)生多次請(qǐng)求時(shí),服務(wù)器的運(yùn)行將更有效率。Servlet是由服務(wù)器負(fù)責(zé)加載和配置的。

創(chuàng)建網(wǎng)頁(yè)
為了定制HTTP網(wǎng)頁(yè),我們需要重載或者定義doGet() 和 doPost() 方法,即裁剪這些方法。在這里,我們根據(jù)客戶的選擇,創(chuàng)建了一個(gè)新的網(wǎng)頁(yè),數(shù)據(jù)自身存儲(chǔ)在Java小程序中的數(shù)組中,并且用定制的方法getSalesInfo()發(fā)送, clientArray 存儲(chǔ)了一個(gè)客戶記錄的數(shù)組(實(shí)際上是個(gè)Java 向量容器),該數(shù)組存儲(chǔ)基本的客戶信息。在這里,我們使用clientID域,在salesArray容器(也是個(gè)向量)中進(jìn)行“join”的編程操作,該容器存儲(chǔ)單個(gè)的銷售記錄。把客戶的數(shù)據(jù)同銷售記錄中的項(xiàng)目進(jìn)行匹配,就可以構(gòu)造出我們所要的數(shù)據(jù)。

在實(shí)際場(chǎng)合中,數(shù)據(jù)可以通過(guò)JDBC從數(shù)據(jù)庫(kù)中獲得。當(dāng)客戶端發(fā)送過(guò)來(lái)一個(gè)請(qǐng)求時(shí),你可以使用Java的內(nèi)在的String和 StringTokenizer類對(duì)經(jīng)過(guò)servlet往返傳輸?shù)臄?shù)據(jù),進(jìn)行解析。通過(guò)使用String 和StringBuffer類,你可以創(chuàng)建新的HTML頁(yè)。這里,我們構(gòu)造了一個(gè)客戶的基本信息的表單以及單個(gè)的貨物銷售記錄清單。

采用server includes的方式,可以很輕易地創(chuàng)建網(wǎng)頁(yè),我們可以在這些server includes填入客戶數(shù)據(jù),server includes所擔(dān)任的角色是HTML的模板代碼。(本例中使用的是SalesInfo.shtml)。一旦把定制的信息寫到HTML模板文件中,我們可以立即創(chuàng)建客戶數(shù)據(jù),形成純粹HTML語(yǔ)言格式文件,加上一些Javascript腳本語(yǔ)言,沒有在客戶端使用Java語(yǔ)言。當(dāng)然,假如在網(wǎng)絡(luò)瀏覽器中使用Java部件,你可以完成功能更強(qiáng)的工作。

值得一提的是: servlets 并不僅僅適用于HTTP。 GenericServer類是個(gè)基本的servlet,可在頁(yè)面中顯示任何內(nèi)容。Sun 的目標(biāo)是讓所有種類的網(wǎng)絡(luò)服務(wù),從標(biāo)準(zhǔn)的互聯(lián)網(wǎng)協(xié)議,到非凡的協(xié)議,都可以采用servlets進(jìn)行通信。但是,首先要讓網(wǎng)絡(luò)開發(fā)人員廣泛接受servlets。我們的例子表明servlets的前景也許會(huì)很好,但是很難說(shuō)開發(fā)者會(huì)放棄對(duì)CGI的喜愛。

有了servlets之后,Java的能力大大增強(qiáng)。作為在服務(wù)器端實(shí)現(xiàn)的技術(shù),servlets速度快,功能強(qiáng),適用于多種場(chǎng)合下的任務(wù)。一旦Java應(yīng)用到服務(wù)器上,你會(huì)發(fā)現(xiàn)你的網(wǎng)站或者企業(yè)網(wǎng)中的程序的運(yùn)行速度更快,也更輕易維護(hù)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 胶州市| 郓城县| 卢湾区| 定南县| 安溪县| 建瓯市| 天峻县| 达州市| 彭泽县| 尼勒克县| 皋兰县| 五台县| 汤原县| 金湖县| 嵊泗县| 鄂托克旗| 锦州市| 禄丰县| 怀宁县| 徐闻县| 库伦旗| 唐河县| 上高县| 乌兰县| 隆尧县| 宜城市| 陆丰市| 龙口市| 德清县| 务川| 若羌县| 苗栗市| 西昌市| 亚东县| 克什克腾旗| 伽师县| 尚义县| 鄂尔多斯市| 轮台县| 加查县| 海晏县|