簡(jiǎn)單交換機(jī)WEB設(shè)置_第1頁
簡(jiǎn)單交換機(jī)WEB設(shè)置_第2頁
簡(jiǎn)單交換機(jī)WEB設(shè)置_第3頁
簡(jiǎn)單交換機(jī)WEB設(shè)置_第4頁
簡(jiǎn)單交換機(jī)WEB設(shè)置_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

TELNET遠(yuǎn)程管理交換機(jī)配置組網(wǎng)需求:1.PC通過telnet登陸交換機(jī)并對(duì)其進(jìn)行管理;2.分別應(yīng)用帳號(hào)+密碼方式、僅密碼方式以及radius認(rèn)證方式;3.只允許/24網(wǎng)段的地址的PCTELNET訪問。組網(wǎng)圖:作為telnet登陸主機(jī)的PC與SwitchA之間通過局域網(wǎng)互連(也可以直連),PC可以ping通SwitchA。配置步驟:H3CS3100-SIS5100系列交換機(jī)TELNET配置流程賬號(hào)+密碼方式登陸1.配置TELNET登陸的ip地址<SwitchA>system-view[SwitchA]vlan2[SwitchA-vlan2]portEthernet1/0/1[SwitchA-vlan2]quit[SwitchA]management-vlan2[SwitchA]interfacevlan2[SwitchA-Vlan-interface2]ipaddress242.進(jìn)入用戶界面視圖

[SwitchA]user-interfacevty043.配置本地或遠(yuǎn)端用戶名+口令認(rèn)證方式

[SwitchA-ui-vty0-4]authentication-modescheme4.配置登陸用戶的級(jí)別為最高級(jí)別3(缺省為級(jí)別1)

[SwitchA-ui-vty0-4]userprivilegelevel35.添加TELNET管理的用戶,用戶類型為”telnet”,用戶名為”huawei”,密碼為”admin”

[SwitchA]local-userhuawei

[SwitchA-luser-huawei]service-typetelnetlevel3

[SwitchA-luser-huawei]passwordsimpleadmin僅密碼方式登陸1.配置TELNET登陸的ip地址(與上面賬號(hào)+密碼登陸方式相同)2.進(jìn)入用戶界面視圖

[SwitchA]user-interfacevty043.設(shè)置認(rèn)證方式為密碼驗(yàn)證方式

[SwitchA-ui-vty0-4]authentication-modepassword4.設(shè)置登陸驗(yàn)證的password為明文密碼”huawei”

[SwitchA-ui-vty0-4]setauthenticationpasswordsimplehuawei5.配置登陸用戶的級(jí)別為最高級(jí)別3(缺省為級(jí)別1)

[SwitchA-ui-vty0-4]userprivilegelevel3TELNETRADIUS驗(yàn)證方式配置1.配置TELNET登陸的ip地址(與上面賬號(hào)+密碼登陸方式相同)2.進(jìn)入用戶界面視圖

[SwitchA]user-interfacevty043.配置遠(yuǎn)端用戶名和口令認(rèn)證

[SwitchA-ui-vty0-4]authentication-modescheme4.配置RADIUS認(rèn)證方案,名為”cams”

[SwitchA]radiusschemecams5.配置RADIUS認(rèn)證服務(wù)器地址1

[SwitchA-radius-cams]primaryauthentication118126.配置交換機(jī)與認(rèn)證服務(wù)器的驗(yàn)證口令為”huawei”

[SwitchA-radius-cams]keyauthenticationhuawei7.送往RADIUS的報(bào)文不帶域名

[SwitchA-radius-cams]user-name-formatwithout-domain8.創(chuàng)建(進(jìn)入)一個(gè)域,名為”huawei”

[SwitchA]domainhuawei9.在域”huawei”中引用名為”cams”的認(rèn)證方案

[SwitchA-isp-huawei]radius-schemecams10.將域”huawei”配置為缺省域

[SwitchA]domaindefaultenableHuaweiTELNET訪問控制配置1.配置訪問控制規(guī)則只允許/24網(wǎng)段登錄

[SwitchA]aclnumber2000

[SwitchA-acl-basic-2000]ruledenysourceany

[SwitchA-acl-basic-2000]rulepermitsource552.配置只允許符合ACL2000的IP地址登錄交換機(jī)[SwitchA]user-interfacevty04

[SwitchA-ui-vty0-4]acl2000inbound3.補(bǔ)充說明:TELNET訪問控制配置是在以上三種驗(yàn)證方式配置完成的基礎(chǔ)上進(jìn)行的配置;TELNET登陸主機(jī)與交換機(jī)不是直連的情況下需要配置默認(rèn)路由Web管理的配置組網(wǎng)需求:PC通過IE瀏覽器對(duì)SwitchA進(jìn)行管理。組網(wǎng)圖:作為Web登陸主機(jī)的PC與SwitchA之間通過局域網(wǎng)互連(也可以直連),PC可以ping通SwitchA。配置步驟:H3CS3100-SI-SIS5100系列交換機(jī)Web配置流程1.確認(rèn)WEB管理文件已經(jīng)在交換機(jī)flash中<SwitchA>dir7(*)-rw-801220Apr02200000:02:15hw-http3.1.5-0042.web2.配置Web登陸的ip地址<SwitchA>system-view[SwitchA]vlan2[SwitchA-vlan2]portEthernet1/0/1[SwitchA-vlan2]quit[SwitchA]management-vlan2[SwitchA]interfacevlan2[SwitchA-Vlan-interface2]ipaddress243.添加WEB管理的用戶,用戶類型為”telnet”,用戶名為”huawei”,密碼為”admin”

[SwitchA]local-userhuawei

[SwitchA-luser-huawei]service-typetelnetlevel3

[SwitchA-luser-huawei]passwordsimpleadminH3CS3600S5600系列交換機(jī)Web配置流程1.確認(rèn)WEB管理文件已經(jīng)在交換機(jī)flash中<SwitchA>dir7(*)-rw-801220Apr02200000:02:15hw-http3.1.5-0042.web2.配置Web登陸的ip地址<SwitchA>system-view[SwitchA]vlan2[SwitchA-vlan2]portEthernet1/0/1[SwitchA-vlan2]quit[SwitchA]interfacevlan2[SwitchA-Vlan-interface2]ipaddress243.添加WEB管理的用戶,用戶類型為”telnet”,用戶名為”huawei”,密碼為”admin”

[SwitchA]local-userhuawei

[SwitchA-luser-huawei]service-typetelnetlevel3

[SwitchA-luser-huawei]passwordsimpleadmin4.補(bǔ)充說明:如果想通過WEB方式管理交換機(jī),必須首先將一個(gè)用于支持WEB管理的文件(可以從網(wǎng)站上下載相應(yīng)的交換機(jī)軟件版本時(shí)得到,其擴(kuò)展名為”web”或者”zip”)載入交換機(jī)的flash中,該文件需要與交換機(jī)當(dāng)前使用的軟件版本相配套;Web登陸主機(jī)與交換機(jī)不是直連情況下需要配置默認(rèn)路由;登陸的時(shí)候在IE瀏覽器中輸入即可進(jìn)入Web登陸頁面。Web管理的配置組網(wǎng)需求:PC通過IE瀏覽器對(duì)SwitchA進(jìn)行管理。組網(wǎng)圖:作為Web登陸主機(jī)的PC與SwitchA之間通過局域網(wǎng)互連(也可以直連),PC可以ping通SwitchA。配置步驟:H3CS3100-SI-SIS5100系列交換機(jī)Web配置流程1.確認(rèn)WEB管理文件已經(jīng)在交換機(jī)flash中<SwitchA>dir7(*)-rw-801220Apr02200000:02:15hw-http3.1.5-0042.web2.配置Web登陸的ip地址<SwitchA>system-view[SwitchA]vlan2[SwitchA-vlan2]portEthernet1/0/1[SwitchA-vlan2]quit[SwitchA]management-vlan2[SwitchA]interfacevlan2[SwitchA-Vlan-interface2]ipaddress243.添加WEB管理的用戶,用戶類型為”telnet”,用戶名為”huawei”,密碼為”admin”

[SwitchA]local-userhuawei

[SwitchA-luser-huawei]service-typetelnetlevel3

[SwitchA-luser-huawei]passwordsimpleadminH3CS3600S5600系列交換機(jī)Web配置流程1.確認(rèn)WEB管理文件已經(jīng)在交換機(jī)flash中<SwitchA>dir7(*)-rw-801220Apr02200000:02:15hw-http3.1.5-0042.web2.配置Web登陸的ip地址<SwitchA>system-view[SwitchA]vlan2[SwitchA-vlan2]portEthernet1/0/1[SwitchA-vlan2]quit[SwitchA]interfacevlan2[SwitchA-Vlan-interface2]ipaddress243.添加WEB管理的用戶,用戶類型為”telnet”,用戶名為”huawei”,密碼為”admin”

[SwitchA]local-userhuawei

[SwitchA-luser-huawei]service-typetelnetlevel3

[SwitchA-luser-huawei]passwordsimpleadmin4.補(bǔ)充說明:如果想通過WEB方式管理交換機(jī),必須首先將一個(gè)用于支持WEB管理的文件(可以從網(wǎng)站上下載相應(yīng)的交換機(jī)軟件版本時(shí)得到,其擴(kuò)展名為”web”或者”zip”)載入交換機(jī)的flash中,該文件需要與交換機(jī)當(dāng)前使用的軟件版本相配套;Web登陸主機(jī)與交換機(jī)不是直連情況下需要配置默認(rèn)路由;登陸的時(shí)候在IE瀏覽器中輸入即可進(jìn)入Web登陸頁面。附錄資料:從XML生成可與Ajax共同使用的JSON時(shí)下,非常流行使用JavaScript代碼為數(shù)據(jù)驅(qū)動(dòng)的Web應(yīng)用程序添加互動(dòng)性。若能將數(shù)據(jù)編碼成JavaScriptObjectNotation(JSON)的格式,您就可以更輕松地通過JavaScript語言使用它。通過本文,發(fā)掘使用XSLTV2從XML數(shù)據(jù)生成JSON的幾種不同方法。幾年前,許多開發(fā)人員很看好XML、XSLT、ExtensibleHTML(XHTML)和其他一些基于標(biāo)記的語言?,F(xiàn)在,AsynchronousJavaScriptandXML(AJAX)成了新的熱點(diǎn),人們又將目光轉(zhuǎn)向了使用JavaScript代碼的數(shù)據(jù)驅(qū)動(dòng)的富Internet應(yīng)用程序。但是開發(fā)人員是否已經(jīng)消除了XML和這一新技術(shù)之間的鴻溝呢?當(dāng)然,您可以在Web客戶機(jī)中使用XML解析器來讀取數(shù)據(jù),但這種做法會(huì)帶來兩個(gè)問題。第一,出于安全方面的原因,XML數(shù)據(jù)只能從與此頁面相同的那個(gè)域中讀取。這雖然不是什么大的限制因素,但它的確會(huì)引起部署方面的問題,還會(huì)阻礙DHTML小部件的創(chuàng)建。第二,讀取和解析XML會(huì)非常慢。另一種做法是讓服務(wù)器執(zhí)行XML的解析工作,方法是設(shè)置服務(wù)器,使之向?yàn)g覽器發(fā)送以JavaScript代碼或時(shí)下流行的JavaScriptObjectNotation(JSON)編碼的數(shù)據(jù)。本文將展示如下三種使用XSLTV2語言和SaxonXSLTV2處理器從XML數(shù)據(jù)生成JSON的技巧:簡(jiǎn)單編碼通過函數(shù)調(diào)用加載數(shù)據(jù)編碼對(duì)象JSON簡(jiǎn)介要學(xué)習(xí)如何將數(shù)據(jù)編碼成JSON(它只是JavaScript的一個(gè)子集),最好的方法是從數(shù)據(jù)開始。清單1顯示了書籍列表的一個(gè)示例XML數(shù)據(jù)集。清單1.基本的圖形化圖書館<?xmlversion="1.0"encoding="UTF-8"?><books><bookid="1"><title>CodeGenerationinAction</title><author><first>Jack</first><last>Herrington</last></author><publisher>Manning</publisher></book><bookid="2"><title>PHPHacks</title><author><first>Jack</first><last>Herrington</last></author><publisher>O'Reilly</publisher></book><bookid="3"><title>PodcastingHacks</title><author><first>Jack</first><last>Herrington</last></author><publisher>O'Reilly</publisher></book></books>這個(gè)數(shù)據(jù)集很簡(jiǎn)單,只包含三本書,每本書都具有惟一的ID、書名、作者姓名及出版商的名字。(沒錯(cuò),我只選擇了我自己的書作為數(shù)據(jù)集,但能怨我嗎?這些書實(shí)在是不可多得的節(jié)日和生日禮物。)清單2顯示了這些數(shù)據(jù)在JSON中的效果。清單2.JSON中的示例數(shù)據(jù)集[{id:1,title:'CodeGenerationinAction',first:'Jack',last:'Herrington',publisher:'Manning'},...]方括號(hào)([])表明這是一個(gè)數(shù)組。大括號(hào)({})則表明這是一個(gè)散列表,該散列表由一組名稱和值對(duì)組成。在本例中,我創(chuàng)建了一個(gè)散列表的數(shù)組——用來存儲(chǔ)這類結(jié)構(gòu)式數(shù)據(jù)的一種常見方法。另外一點(diǎn)值得注意的是字符串是通過單引號(hào)或雙引號(hào)被編碼的。所以,如果我想用單引號(hào)編碼O'Reilly,我就必須使用反斜杠對(duì)它進(jìn)行轉(zhuǎn)義:'O\'Reilly'。這讓我編寫的這個(gè)XSLT樣式表更為有趣了一些。我并未在本例中放上任何日期,但您也可以通過如下兩種方法來編碼日期。第一種方法是將日期作為字符串,該字符串必須在后面被解析。第二種方法是將日期作為一個(gè)對(duì)象,比如:publishdate:newDate(2006,6,16,17,45,0)這段代碼將publishdate的值設(shè)置為6/16/20065:45:00p.m.。簡(jiǎn)單編碼接下來我將陸續(xù)介紹JSON編碼的幾種技巧。第一種也是其中最簡(jiǎn)單的一種,此樣式表如清單3所示。清單3.simple.xsl樣式表<?xmlversion="1.0"encoding="UTF-8"?><xsl:stylesheetxmlns:xsl="/1999/XSL/Transform"version="2.0"xmlns:js=""><xsl:outputmethod="text"/><xsl:functionname="js:escape"><xsl:paramname="text"/><xsl:value-ofselect='replace($text,"'","\\'")'/></xsl:function><xsl:templatematch="/">varg_books=[<xsl:for-eachselect="books/book"><xsl:iftest="position()>1">,</xsl:if>{id:<xsl:value-ofselect="@id"/>,name:'<xsl:value-ofselect="js:escape(title)"/>',first:'<xsl:value-ofselect="js:escape(author/first)"/>',last:'<xsl:value-ofselect="js:escape(author/last)"/>',publisher:'<xsl:value-ofselect="js:escape(publisher)"/>'}</xsl:for-each>];</xsl:template></xsl:stylesheet>要理解此樣式表,不妨先來看一下清單4所示的輸出。清單4.simple.xsl的輸出varg_books=[{id:1,name:'CodeGenerationinAction',first:'Jack',last:'Herrington',publisher:'Manning'},{id:2,name:'PHPHacks',first:'Jack',last:'Herrington',publisher:'O\'Reilly'},{id:3,name:'PodcastingHacks',first:'Jack',last:'Herrington',publisher:'O\'Reilly'}];這里,我將名為g_books的變量設(shè)置為一個(gè)包含三個(gè)散列表的數(shù)組,每個(gè)散列表包含關(guān)于該書的信息。再回過頭來看看清單3,您會(huì)發(fā)現(xiàn)第一個(gè)模板匹配"/"路徑,它也是首先應(yīng)用到輸入數(shù)據(jù)集的模板,該模板使用for-each循環(huán)來遍歷每本書。之后,它使用<value-of>標(biāo)記來將文本從該數(shù)據(jù)輸出到JavaScript輸出代碼。對(duì)于字符串,我使用名為js:escape()的定制函數(shù),它在模板之前定義。該函數(shù)使用一個(gè)正則表達(dá)式將一個(gè)單引號(hào)標(biāo)記更改為帶有反斜杠的單引號(hào)標(biāo)記。最后一個(gè)重要的元素是<xsl:output>標(biāo)記,它告知處理器要輸出的是文本而不是XML。要檢驗(yàn)此過程是否可以正常工作,我加入了一個(gè)simple.html文件,該文件引用我在simple.js保存的XSL樣式表的輸出。這個(gè)HTML文件如清單5所示。清單5.simple.html文件<html><head><title>SimpleJSloader</title><scriptsrc="simple.js"></script></head><body><script>document.write("Found"+g_books.length+"books");</script></body></html>.html文件使用<script>標(biāo)記簡(jiǎn)單地加載已編碼了的JavaScript代碼。之后,第二個(gè)<script>標(biāo)記將數(shù)組的長(zhǎng)度寫出到瀏覽器頁面,如圖1所示。圖1.simple.html的輸出好了!數(shù)據(jù)文件包含三本書,相應(yīng)的JavaScript文件也包含三本書。它真的可以工作!通過函數(shù)加載上述第一個(gè)示例很簡(jiǎn)單,而且在大多數(shù)情況下可以發(fā)揮其作用,但它存在一些問題。第一個(gè)問題是對(duì)于數(shù)據(jù)何時(shí)被加載沒有任何提示。如果數(shù)據(jù)是像頁面那樣被靜態(tài)加載的,這不成問題。但是如果頁面動(dòng)態(tài)創(chuàng)建了一個(gè)<script>標(biāo)記來按需加載數(shù)據(jù),那么就很有必要知道<script>標(biāo)記是何時(shí)完成的。實(shí)現(xiàn)此功能的最好的方法是讓編碼了的數(shù)據(jù)調(diào)用一個(gè)JavaScript函數(shù),而不是只設(shè)置數(shù)據(jù)。這個(gè)概念很重要,所以我將花一些時(shí)間來介紹一下為什么您必須要通過動(dòng)態(tài)生成的<script>標(biāo)記來加載數(shù)據(jù)。頁面加載后,從服務(wù)器獲得數(shù)據(jù)是Web2.0的核心功能。一種方法是使用AJAX機(jī)制通過到服務(wù)器的調(diào)用來加載XML。然而,出于安全性的原因,AJAX機(jī)制只限于從單一域獲取數(shù)據(jù)。這在大多數(shù)情況下都沒有問題,但有時(shí),您可能需要JavaScript代碼運(yùn)行在他人的頁面上(例如,GoogleMaps)。在這種情況下從服務(wù)器獲得數(shù)據(jù)的惟一方法是通過動(dòng)態(tài)加載<script>標(biāo)記。獲悉<script>標(biāo)記何時(shí)加載的最好的方法是讓<script>標(biāo)記返回的腳本調(diào)用函數(shù)而不是簡(jiǎn)單地加載數(shù)據(jù)。清單6顯示了在函數(shù)調(diào)用中編碼的數(shù)據(jù)。清單6.Function1.jsAddBooks([{id:1,name:'CodeGenerationinAction',first:'Jack',last:'Herrington',publisher:'Manning'},{id:2,name:'PHPHacks',first:'Jack',last:'Herrington',publisher:'O\'Reilly'},{id:3,name:'PodcastingHacks',first:'Jack',last:'Herrington',publisher:'O\'Reilly'}]);清單7給出了相應(yīng)的.html文件。清單7.Function1.html<html><head><title>Function1JSloader</title><script>varg_books=[];functionAddBooks(books){g_books=books;}</script><scriptsrc="function1.js"></script><scriptsrc="drawbooks.js"></script></head><body><script>drawbooks(g_books);</script></body></html>稍后將詳細(xì)介紹drawbooks函數(shù)。這里重要的是了解一下頁面如何定義AddBooks函數(shù),該函數(shù)隨后會(huì)由function1.js文件中的腳本調(diào)用。該AddBooks函數(shù)負(fù)責(zé)處理數(shù)據(jù)。而且被調(diào)用的AddBooks函數(shù)會(huì)向頁面指示<script>標(biāo)記被正確加載,并已加載完成。要?jiǎng)?chuàng)建function1.js文件,我只對(duì)樣式表稍微做了一點(diǎn)修改,如清單8所示。清單8.function1.xsl樣式表<xsl:templatematch="/">AddBooks([<xsl:for-eachselect="books/book"><xsl:iftest="position()>1">,</xsl:if>{id:<xsl:value-ofselect="@id"/>,name:'<xsl:value-ofselect="js:escape(title)"/>',first:'<xsl:value-ofselect="js:escape(author/first)"/>',last:'<xsl:value-ofselect="js:escape(author/last)"/>',publisher:'<xsl:value-ofselect="js:escape(publisher)"/>'}</xsl:for-each>]);</xsl:template>這里,我調(diào)用了一個(gè)函數(shù),而不是簡(jiǎn)單地設(shè)置一個(gè)變量。這就是我所做的惟一更改。回到頁面,我使用了drawbooks函數(shù)來構(gòu)建書的表格,這樣我就能夠確認(rèn)數(shù)據(jù)被正確編碼和正確顯示。此函數(shù)是在drawbooks.js內(nèi)定義的,如清單9所示。清單9.Drawbooks.jsfunctiondrawbooks(books){varelTable=document.createElement('table');for(varbinbooks){varelTR=elTable.insertRow(-1);varelTD1=elTR.insertCell(-1);elTD1.appendChild(document.createTextNode(books[b].id));varelTD2=elTR.insertCell(-1);elTD2.appendChild(document.createTextNode(books[b].name));varelTD3=elTR.insertCell(-1);elTD3.appendChild(document.createTextNode(books[b].first));varelTD4=elTR.insertCell(-1);elTD4.appendChild(document.createTextNode(books[b].last));varelTD5=elTR.insertCell(-1);elTD5.appendChild(document.createTextNode(books[b].publisher));}document.body.appendChild(elTable);}這個(gè)簡(jiǎn)單函數(shù)創(chuàng)建了一個(gè)表格節(jié)點(diǎn),然后循環(huán)訪問書的列表并為每本書創(chuàng)建一行,為每個(gè)數(shù)據(jù)元素分配一個(gè)單元格。此頁面上的代碼的結(jié)果如圖2所示。圖2.function1.html的結(jié)果現(xiàn)在我就可以查看一下此頁面的輸出并確認(rèn)來自原始.xml文件的一切均已被正確轉(zhuǎn)換成JavaScript代碼,且數(shù)據(jù)被發(fā)送到AddData函數(shù)并被正確添加到頁面。細(xì)化函數(shù)調(diào)用技術(shù)我很喜歡函數(shù)調(diào)用這一技術(shù),但我并不贊同將所有圖書數(shù)據(jù)都放入一個(gè)塊中。另一種方式是為每條記錄采用一個(gè)調(diào)用,如清單10所示。清單10.Function2.jsAddBook({id:1,name:'CodeGenerationinAction',first:'Jack',last:'Herrington',publisher:'Manning'});AddBook({id:2,name:'PHPHacks',first:'Jack',last:'Herrington',publisher:'O\'Reilly'});...對(duì).html頁面只需做少許修改,如清單11所示。清單11.Function2.html...<script>varg_books=[];functionAddBook(book){g_books.push(book);}</script>...這里更改了XSLT,以使函數(shù)調(diào)用駐留在for-each循環(huán)體內(nèi)。清單12顯示了更新后的樣式表。清單12.function2.xsl...<xsl:templatematch="/"><xsl:for-eachselect="books/book">AddBook({id:<xsl:value-ofselect="@id"/>,name:'<xsl:value-ofselect="js:escape(title)"/>',first:'<xsl:value-ofselect="js:escape(author/first)"/>',last:'<xsl:value-ofselect="js:escape(author/last)"/>',publisher:'<xsl:value-ofselect="js:escape(publisher)"/>'});</xsl:for-each></xsl:template>...對(duì)這個(gè)給定示例來說,這種更改看起來有些隨意。但如果原始的XML數(shù)據(jù)集有多種數(shù)據(jù)類型,要為每種類型分配一個(gè)單獨(dú)的函數(shù)調(diào)用會(huì)使XSL和頁面上的JavaScript代碼更為簡(jiǎn)單、更易于維護(hù)。編碼對(duì)象對(duì)小的頁面來講,使用JavaScript函數(shù)沒有問題。但對(duì)于大型項(xiàng)目,就需要使用JavaScript語言的一些面向?qū)ο筇匦?。是的,JavaScript語言可以處理對(duì)象而且可以處理得很好。清單13顯示了如何創(chuàng)建帶有數(shù)據(jù)的對(duì)象。清單13.Object1.jsg_books.push(newBook({id:1,name:'CodeGenerationinAction',first:'Jack',last:'Herrington',publisher:'Manning'}));g_books.push(newBook({id:2,name:'PHPHacks',first:'Jack',last:'Herrington',publisher:'O\'Reilly'}));在本例中,我只簡(jiǎn)單地向名為g_books的數(shù)組添加了Book對(duì)象。JavaScript的對(duì)象創(chuàng)建與Java?、C#或C++編程語言的對(duì)象創(chuàng)建十分相似。都是一個(gè)new操作符后跟一個(gè)類名。參數(shù)放到隨后的括號(hào)內(nèi)。在本例中,我傳入了一個(gè)帶值的單一散列表,并將其分割成單獨(dú)的一些參數(shù)。創(chuàng)建此對(duì)象的代碼如清單14所示。清單14.Object1.xsl<xsl:templatematch="/"><xsl:for-eachselect="books/book">g_books.push(newBook({id:<xsl:value-ofselect="@id"/>,name:'<xsl:value-ofselect="js:escape(title)"/>',first:'<xsl:value-ofselect="js:escape(author/first)"/>',last:'<xsl:value-ofselect="js:escape(author/last)"/>',publisher:'<xsl:value-ofselect="js:escape(publisher)"/>'}));</xsl:for-each></xsl:template>此頁面內(nèi)最值得注意的是定義Book類的那部分代碼。清單15顯示了該頁面。清單15.object1.html...<script>varg_books=[];functionBook(data){for(vardindata){this[d]=data[d];}}</script>...Book類的構(gòu)造函數(shù)循環(huán)訪問散列表的所有數(shù)據(jù)。對(duì)于每個(gè)鍵,會(huì)在對(duì)象上創(chuàng)建一個(gè)具有對(duì)象名稱和數(shù)據(jù)的實(shí)例變量。不需要對(duì)drawbooks函數(shù)做任何修改,因?yàn)閷?duì)象都有與原始的散列表相同的鍵和值。JavaScript語言并不區(qū)分訪問的是散列表內(nèi)的命名值還是對(duì)象上的命名值。當(dāng)然,Book類應(yīng)該有像set和get這樣的訪問程序。清單16顯示了我是如何對(duì)JavaScript數(shù)據(jù)進(jìn)行編碼的。清單16.Object2.jsvarb1=newBook();b1.setId(1);b1.setTitle('CodeGenerationinAction');b1.setFirst('Jack');b1.setLast('Herrington');b1.setPublisher('Manning');g_books.push(b1);varb2=newBook();b2.setId(2);b2.setTitle('PHPHacks');...沒錯(cuò),這有些大同小異。它也是先創(chuàng)建一個(gè)對(duì)象,設(shè)置其值,然后將它添加到數(shù)組,等等。首先,我對(duì)樣式表做了一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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)論