Oracle Web數(shù)據(jù)庫(kù)的開(kāi)發(fā)_第1頁(yè)
Oracle Web數(shù)據(jù)庫(kù)的開(kāi)發(fā)_第2頁(yè)
Oracle Web數(shù)據(jù)庫(kù)的開(kāi)發(fā)_第3頁(yè)
Oracle Web數(shù)據(jù)庫(kù)的開(kāi)發(fā)_第4頁(yè)
Oracle Web數(shù)據(jù)庫(kù)的開(kāi)發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Oracle Web數(shù)據(jù)庫(kù)的開(kāi)發(fā)數(shù)據(jù)庫(kù)技術(shù)概述 Oracle DBMS在信息系統(tǒng)市場(chǎng)占據(jù)了很大的份額,并且具有較高的可靠性和可恢復(fù)性。 本章介紹 Oracle WebServer的體系結(jié)構(gòu)及一些使用技術(shù),使讀者對(duì)于Oracle Web數(shù)據(jù)庫(kù)開(kāi)發(fā)有個(gè)基本的了解。 1. Oracle WebServer體系結(jié)構(gòu)基本的WebServer體系結(jié)構(gòu) 三種版本的WebServer體系結(jié)構(gòu) WebServer的基本成分解釋 1. 基本的WebServer體系結(jié)構(gòu)Oracle Webserver由以下幾個(gè)部分組成:Web監(jiān)聽(tīng)器(Listener)公共網(wǎng)關(guān)接口(CGI)Web請(qǐng)求代理(Request Broke

2、r)(WRB)PL/SQL代理(即OWA)和Web工具箱(WebToolkit)Java CartridgeLiveHTML Cartridge1.2 三種WebServer體系結(jié)構(gòu)1Oracle WebServer 12Oracle WebServer 23Oracle WebServer 31Oracle WebServer 1體系結(jié)構(gòu) 2Oracle WebServer 2體系結(jié)構(gòu) 3Oracle WebServer 3體系結(jié)構(gòu) Oracle WebServer 3與Oracle WebServer 2在體系結(jié)構(gòu)上相同,但其功能上有所增強(qiáng)。最大、最有效的增強(qiáng)是新的Web事務(wù)管理器。允許事

3、務(wù)生成復(fù)雜的HTTP請(qǐng)求(如插入、刪除、提交、更新和回滾) 使分布事務(wù)針對(duì)Oracle或非Oracle數(shù)據(jù)庫(kù)進(jìn)行可靠的處理。 1.3 WebServer的基本成分解釋 1WEB監(jiān)聽(tīng)器 2Web請(qǐng)求代理器(WRB)3WRB分配器、執(zhí)行引擎、cartridge和API 之間的關(guān)系4PL/SQL代理和Web工具箱5Java解釋器cartridge6LiveHTML Cartridge1.2 WebServer的htp和OWA實(shí)用工具1.WebServer的htp實(shí)用工具2WebServer的OWA實(shí)用工具1.3 WebServer的PL/SQL和存儲(chǔ)過(guò)程PL/SQL是過(guò)程語(yǔ)言/結(jié)構(gòu)化查詢語(yǔ)言(Pro

4、ceduralLanguage/Structured Query Language)的縮寫(xiě),它是Oracle為了與Oracle數(shù)據(jù)庫(kù)一起使用而創(chuàng)建的專用語(yǔ)言。PL/SQL的語(yǔ)法結(jié)構(gòu)PL/SQL和存儲(chǔ)過(guò)程1.3.1 PL/SQL的語(yǔ)法結(jié)構(gòu)1申明部分2開(kāi)始部分3PL/SQL中的循環(huán) 1.3.2 PL/SQL和存儲(chǔ)過(guò)程1.存儲(chǔ)過(guò)程的優(yōu)點(diǎn) 良好的性能 數(shù)據(jù)與行為的結(jié)合 代碼的隔離 封裝性 更大的靈活性2.PL/SQL存儲(chǔ)過(guò)程和軟件包3.由Web向Oracle存儲(chǔ)過(guò)程傳遞函數(shù)4.存儲(chǔ)過(guò)程之間傳遞函數(shù) 1.4 WebServer和Java之間的聯(lián)系1.Oracle WebServer的Java實(shí)現(xiàn)2. P

5、L/SQL在Java中的使用 3. Oracle WebServer的Java解釋器 4.從Java存取Oracle數(shù)據(jù)庫(kù)5.使用PL/SQL軟件包裝(package wrapper)1.5WebServer和LiveHTML之間的聯(lián)系 LiveHTML是一個(gè)在Oracle WebServer中非常有用的工具。本質(zhì)上,LiveHTML為將非Oracle的信息嵌入到一個(gè)Oracle Web頁(yè)面中提供一種機(jī)制。 Oracle通過(guò)LiveHTML構(gòu)件及LiveHTML解釋器已經(jīng)實(shí)現(xiàn)了WebServer體系結(jié)構(gòu)中的SSI概念。SSI能通過(guò)不同的方法實(shí)現(xiàn)動(dòng)態(tài)Web文檔的創(chuàng)建,包括:將其它LiveHTML

6、文檔嵌入到Web頁(yè)面中嵌入靜態(tài)Web頁(yè)面引用系統(tǒng)變量在服務(wù)器上執(zhí)行一個(gè)腳本,它產(chǎn)生HTML使用CGI執(zhí)行PL/SQL過(guò)程1.6 WebServer的并發(fā)管理WebServer更新和并發(fā)性 Oracle數(shù)據(jù)庫(kù)封鎖 為WebServer選擇完整性 1.6.1 WebServer更新和并發(fā)性 會(huì)話和偽會(huì)話 1.6.2 Oracle數(shù)據(jù)庫(kù)封鎖在Oracle中提供了兩種類型的封鎖:共享和互斥 。許多客戶可能都有對(duì)同一資源的共享鎖,但共享鎖不能和互斥鎖共存。 然而共享封鎖有一個(gè)不良的后果,會(huì)導(dǎo)致DB-KEY死鎖 1.7 安全性問(wèn)題WebServer的安全性O(shè)racle的安全性 1.7.1 WebServe

7、r的安全性為了保障Oracle的安全性,有以下十條人們總結(jié)出來(lái)的安全性指導(dǎo)方針:(1) DBA對(duì)于Oracle安全性負(fù)有最大的責(zé)任。所以,DBA有責(zé)任創(chuàng)建和維護(hù)所有的Oracle角色。(2) 所有的特權(quán)(對(duì)象特權(quán)和系統(tǒng)特權(quán))將被放置在角色中。特權(quán)永遠(yuǎn)不會(huì)直接授予最終用戶。注意,除了UNLIMITED TABLESPACE,因?yàn)閁NLIMITED TABLESPACE不能授予一個(gè)角色。(3) 所有的角色將用一個(gè)口令保護(hù),并且角色口令將被包含在應(yīng)用程序中,使最終的用戶永遠(yuǎn)不會(huì)知道被授予的角色的口令。(4) 永不使用ADMIN OPTION授予任何的系統(tǒng)特權(quán),永不使用GRANT OPTION授予任何

8、表特權(quán)。(5) 只有一個(gè)最終用戶是角色管理員(RA),RA有責(zé)任將角色授予最終用戶,并且將對(duì)它所管理的每一個(gè)角色授予ADMIN OPTION。叫做”RA”的一個(gè)特定角色應(yīng)用CREATE ANY USER特權(quán)創(chuàng)建,并且將給RA授權(quán)。(6) RA沒(méi)有DROP ANY USER特權(quán),又沒(méi)有ALTER ANY USER特權(quán)。DBA將有責(zé)任取消最終用戶標(biāo)識(shí),并且每一個(gè)最終用戶有責(zé)任維護(hù)他們自己的Oracle口令,它將經(jīng)過(guò)MS-Query,SQL*Plus或經(jīng)過(guò)一個(gè)應(yīng)用程序屏幕來(lái)維護(hù)。(7) 只有SYS和SYSTEM用戶可以被授予DBA角色。(8) 只有三個(gè)角色可以給IS人員:CONTENT、RESOUR

9、CE和DBA。這些角色在所有的Oracle數(shù)據(jù)庫(kù)中包含相同的特權(quán)。(9) 當(dāng)不需要考慮安全性問(wèn)題時(shí),可以授予表public。(10)Oracle安全性每年應(yīng)該審核兩次來(lái)保證這些規(guī)則被遵守。1.7.2 Oracle的安全性O(shè)racle數(shù)據(jù)庫(kù)的安全性由SQL的grant語(yǔ)句授權(quán)并且由revoke語(yǔ)句來(lái)收回。可以授權(quán)的特權(quán)有兩大類:表特權(quán),對(duì)一個(gè)特定表的特定的操作被授予一個(gè)特定的用戶(如,grant select on customer_table to Fred;);系統(tǒng)特權(quán),將一個(gè)特權(quán)范圍授予一個(gè)特定的用戶(如,grant select any table to Fred;)。 系統(tǒng)特權(quán)系統(tǒng)特權(quán)

10、是執(zhí)行一種操作,或在一個(gè)特定的對(duì)象類型的所有實(shí)例上執(zhí)行一種操作的權(quán)利(如,grant select any table to black-joke)。系統(tǒng)特權(quán)被表示成三部分:操作、全局的(any)和對(duì)象類型。基于這個(gè)分類方法,系統(tǒng)特權(quán)用操作和與操作相關(guān)的對(duì)象類型來(lái)表示:操作(action)有以下幾種:createdropaltergrantselectaudit (any)manage (tablespace) backup (table) force (transaction) become (user)對(duì)象類型有以下幾種:cluster procedure database databas

11、e link privilege profile rolesession sequence snapshot system synonym table tablespacetrigger user對(duì)象特權(quán) 對(duì)象特權(quán)表視圖序列快照AllxxxxAlterxxDeletexxIndexxInsertxxReferencesxSelectxxxxUpdatexx對(duì)象特權(quán) 對(duì)象特權(quán)是在一個(gè)指定的、命名的對(duì)象上執(zhí)行的一種操作的權(quán)利(如,grant update on cat.food to sarah_tytler)。它通常表示成操作-對(duì)象名的形式。 函數(shù)、存儲(chǔ)過(guò)程和軟件包 WebServer安全性的一

12、個(gè)重要特點(diǎn)是通過(guò)函數(shù)、存儲(chǔ)過(guò)程和軟件包的使用來(lái)增強(qiáng)訪問(wèn)一個(gè)表的能力。(1)一個(gè)函數(shù)是一個(gè)代碼段,它可以包含接收輸入變量并且給函數(shù)的調(diào)用者返回值的SQL語(yǔ)句。(2)一個(gè)存儲(chǔ)過(guò)程是一段代碼,在它內(nèi)部已經(jīng)嵌入了SQL命令。(3)一個(gè)軟件包是一個(gè)Oracle函數(shù)的集合或Oracle存儲(chǔ)過(guò)程,它將存儲(chǔ)過(guò)程合理的包裝成一個(gè)單一的單元。 實(shí)現(xiàn)基于角色的安全性為WebServer推薦的安全性選項(xiàng)是將角色分配給為WebServer創(chuàng)建PL/SQL存儲(chǔ)過(guò)程的關(guān)鍵開(kāi)發(fā)者。WebServer應(yīng)用程序的實(shí)現(xiàn)需要下列步驟:(1)創(chuàng)建空的角色/口令。(2)標(biāo)識(shí)與角色相關(guān)的特權(quán)。(3)為角色分配表特權(quán)。(4)標(biāo)識(shí)講屬于每個(gè)角

13、色的關(guān)鍵開(kāi)發(fā)者。(5)將這些角色授予將創(chuàng)建Oracle存儲(chǔ)過(guò)程的關(guān)鍵開(kāi)發(fā)這。(6)取消所有已存在的表級(jí)對(duì)象特權(quán)并授予public。(7)使關(guān)鍵開(kāi)發(fā)者創(chuàng)建WebServer存儲(chǔ)過(guò)程。(8)將對(duì)這些存儲(chǔ)過(guò)程的execute特權(quán)授予最終用戶團(tuán)體。WebServer的角色分配策略 一個(gè)Oracle角色層次的例子 1.8 使用Net8進(jìn)行WebServer通信Net8的前生是SQL*Net 。在過(guò)去的幾年中,SQL*Net逐漸發(fā)展壯大。現(xiàn)在它已改名為Net8。Net8是Oracle家族網(wǎng)絡(luò)產(chǎn)品的基礎(chǔ),它的主要功能是建立網(wǎng)絡(luò)會(huì)話,并在一臺(tái)客戶機(jī)和一臺(tái)服務(wù)器或兩臺(tái)服務(wù)器之間傳遞數(shù)據(jù),它允許服務(wù)及其應(yīng)用駐留在

14、不同的計(jì)算機(jī)上,并作為對(duì)等應(yīng)用進(jìn)行通信。Net8和他的前輩SQL*Net都是獨(dú)立于平臺(tái)的。事實(shí)上,Net8所支持的網(wǎng)絡(luò)協(xié)議的數(shù)量只受特定節(jié)點(diǎn)的硬件、內(nèi)存和操作系統(tǒng)所強(qiáng)加的限制的影響 10.8.1 Oracle部件的層次Oracle部件的層次很像一個(gè)洋蔥圖(圖11-11),有一個(gè)很大的中心圓,周圍有很多圓圈繞著。Oracle洋蔥的中心是RDBMS 。在核與其它層之間是網(wǎng)絡(luò)協(xié)議。為了讓Oracle與其它產(chǎn)品相聯(lián)系,必須有第二層。1. Oracle協(xié)議Oracle使用Transparent Network Substrate (TNS)和一組行業(yè)標(biāo)準(zhǔn)的協(xié)議作為它的基本技術(shù)。TNS建在Oracle的網(wǎng)

15、絡(luò)中,允許它與基本的計(jì)算機(jī)網(wǎng)絡(luò)協(xié)議進(jìn)行通信。Net8是建立在網(wǎng)絡(luò)協(xié)議上的一個(gè)層次堆棧。與數(shù)據(jù)庫(kù)通信的每臺(tái)機(jī)器都必須安裝Net8。堆棧層:說(shuō)明:Oracle-side Programmatic Interface(OPI)負(fù)責(zé)響應(yīng)由客戶機(jī)端Oracle Call Interface(OCI)發(fā)送的每個(gè)可能的報(bào)文。例如,一個(gè)提取25行的OCI請(qǐng)求,一旦被提取可能有一個(gè)返回25行的OPI響應(yīng)。Two-task Common(兩任務(wù)共用層)解決發(fā)送端和接收端之間字符集的區(qū)別Net8(由三層組成)Network Interface(NI)隱藏基本網(wǎng)絡(luò)協(xié)議和客戶機(jī)應(yīng)用的介質(zhì)Network Routing(

16、NR)/Network Naming(NN)/Network Authentication(NA)負(fù)責(zé)將數(shù)據(jù)路由到最終目標(biāo)Transparent Network Substrate(TNS)負(fù)責(zé)常規(guī)通信,如發(fā)送和接收數(shù)據(jù)Oracle Protocol Adapter(Oracle 協(xié)議適配器)將Net8與基本網(wǎng)絡(luò)協(xié)議項(xiàng)隔離的弱層Network-Specific Protocol(專用網(wǎng)絡(luò)協(xié)議)將SQL語(yǔ)句轉(zhuǎn)換成可通過(guò)網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)包的層次堆棧應(yīng)用于Oracle服務(wù)器的Net8的層次 在客戶機(jī)端,所用的堆棧幾乎與服務(wù)器是相同的,他們的區(qū)別在于最頂層。代替Oracle-side Programma

17、tic Interface (Oracle 端程序接口,OPI),在客戶機(jī)端,有一個(gè)內(nèi)建了Oracle Call Interface (Oracle調(diào)用接口,OCI)的應(yīng)用層。通過(guò)該應(yīng)用層,用戶產(chǎn)生一個(gè)要在服務(wù)器端進(jìn)行處理的請(qǐng)求。響應(yīng)通過(guò)堆棧從服務(wù)器發(fā)送到客戶機(jī)中。 客戶機(jī)/服務(wù)器之間的請(qǐng)求與響應(yīng) 2. Net8層 Net8的工作是提供會(huì)話層的功能。通過(guò)它的三個(gè)部件,Net8 建立并管理客戶機(jī)和服務(wù)器之間的連接,并允許信息在它們之間進(jìn)行交換。這三個(gè)部件為NI,組合部件NN/NR/NA以及TNS。Network Interface (NI)處理對(duì)連接的“斷開(kāi)”和“重置”請(qǐng)求。Network Ro

18、uting (NR)提供網(wǎng)絡(luò)會(huì)話到目標(biāo)的路由。這可能包括任何中間目標(biāo)或到服務(wù)器目標(biāo)路由中的“躍距”。Network Naming (NN)解析對(duì)Net8目標(biāo)地址的網(wǎng)絡(luò)服務(wù)名。Network Authentication (NA)通過(guò)對(duì)目標(biāo)的驗(yàn)證請(qǐng)求。Transparent network Substrate (TNS) 提供對(duì)行業(yè)標(biāo)準(zhǔn)協(xié)議的一個(gè)命令接口,以打開(kāi)、關(guān)閉、發(fā)送和接收來(lái)自Net8的請(qǐng)求,并澄清常規(guī)的機(jī)器級(jí)連接性問(wèn)題。在服務(wù)器-服務(wù)器通信中,活動(dòng)是相同的。3. Oracle使用的通信堆棧IIOP通信堆棧Java數(shù)據(jù)庫(kù)連接堆棧IIOP通信堆棧 堆棧層:說(shuō)明:客戶機(jī)應(yīng)用在Net8堆棧中出現(xiàn)

19、的相同的應(yīng)用層GIOP表示層Oracle TCP/IP或帶SSL的TCP/IP用來(lái)傳輸從一臺(tái)機(jī)器到另一臺(tái)機(jī)器的請(qǐng)求和相應(yīng)的網(wǎng)絡(luò)協(xié)議堆棧堆棧層:說(shuō)明:Oracle服務(wù)器執(zhí)行該請(qǐng)求處理的層TNSTransparent Network SubstrateOracle TCP/IP協(xié)議(有或沒(méi)有SSL)帶或不帶有安全套接層的傳輸協(xié)議層的Oracle的實(shí)現(xiàn)TCP/IP專用網(wǎng)絡(luò)協(xié)議在機(jī)器間傳輸請(qǐng)求和響應(yīng)的傳輸協(xié)議的網(wǎng)絡(luò)實(shí)現(xiàn)服務(wù)器端的IIOP通信堆棧客戶機(jī)端的IIOP通信堆棧 Java數(shù)據(jù)庫(kù)連接堆棧 有兩種JDBC驅(qū)動(dòng)程序可供您選擇:使用Java Web服務(wù)器或Java應(yīng)用程序編寫(xiě)一個(gè)基于客戶機(jī)/服務(wù)器或瘦

20、客戶機(jī)應(yīng)用的應(yīng)用程序。使用Java Applet編寫(xiě)應(yīng)用程序。使用第種方法時(shí),您將要使用JDBC/OCI驅(qū)動(dòng)程序。該驅(qū)動(dòng)程序?qū)DBC代碼轉(zhuǎn)換為對(duì)Oracle調(diào)用接口的調(diào)用。一旦JDBC調(diào)用轉(zhuǎn)換為OCI,Net8發(fā)送轉(zhuǎn)換了的調(diào)用到Oracle數(shù)庫(kù)服務(wù)器中。使用第種方法(即使用Java Applet)時(shí),瘦JDBC(JDBC Thin)驅(qū)動(dòng)程序用來(lái)建立在Java套階層上對(duì)Oracle數(shù)據(jù)庫(kù)服務(wù)的直接連接。 4客戶機(jī)端 使用Java連接數(shù)據(jù)庫(kù)時(shí)所用的堆棧非常類似與標(biāo)準(zhǔn)的Oracle通信堆棧,它們的唯一區(qū)別在于客戶機(jī)的接口。在標(biāo)準(zhǔn)的Oracle堆棧中,頂層為客戶機(jī)應(yīng)用層。對(duì)于Java數(shù)據(jù)庫(kù)連接堆棧,

21、頂層實(shí)際有三層,這些層次實(shí)現(xiàn)的方法不同取決于應(yīng)用是用JDBC/OCI編寫(xiě),還是用Java小程序瘦JDBC代碼調(diào)用編寫(xiě)。 堆棧層說(shuō)明JDBC客戶機(jī)Java應(yīng)用代碼JDBC驅(qū)動(dòng)程序JDBC/OCI驅(qū)動(dòng)程序或瘦JDBC驅(qū)動(dòng)程序DBAccess接口用來(lái)啟動(dòng)SQL會(huì)話的機(jī)制(很像OCI接口)堆棧層說(shuō)明JavaTTC由兩任務(wù)共用層的一個(gè)子集組成,能進(jìn)行Java客戶機(jī)和數(shù)據(jù)庫(kù)之間的信息交換JavaNet由三層組成:通信接口、尋址、以及Java Network Substrate網(wǎng)絡(luò)協(xié)議層由兩層組成:Java接插層和TCP/IPJDBC客戶機(jī)應(yīng)用堆棧層次 瘦JDBC通信堆棧的層次 5服務(wù)器端在服務(wù)器端所用的堆

22、棧和標(biāo)準(zhǔn)的Oracle通信堆棧是一致的。當(dāng)一個(gè)請(qǐng)求通過(guò)瘦JDBC通信堆棧進(jìn)行處理時(shí),它看起來(lái)就像由服務(wù)器通過(guò)Net8所接受的其它請(qǐng)求一樣。6Oracle兼容的協(xié)議協(xié)議:說(shuō)明:TCP/IP允許客戶機(jī)/服務(wù)器使用TCP/IP在網(wǎng)絡(luò)上的會(huì)話帶SSL的TCP/IP允許客戶機(jī)/服務(wù)器使用TCP/IP和安全接插層(SSL)在網(wǎng)絡(luò)上的會(huì)話。SSL在一個(gè)Oracle Wallet中存儲(chǔ)驗(yàn)證數(shù)據(jù),如信用證書(shū)和私有密匙。SPX允許客戶機(jī)/服務(wù)器使用SPX/IPX在網(wǎng)絡(luò)上會(huì)話。該協(xié)議主要在Novell NetWare環(huán)境中使用。Named Pipes(命名管道)提供客戶機(jī)和服務(wù)器之間的內(nèi)部進(jìn)程通信的高級(jí)接口(分布式應(yīng)用)。一個(gè)進(jìn)程(應(yīng)用的服務(wù)器端)建立管道,另一個(gè)進(jìn)程(客戶機(jī)端)通過(guò)名字打開(kāi)該管道。一端寫(xiě)什么,另一端就可以讀什么,反之亦然。Logical Unit Type6.2(LU6.2)IBM Advanced Program-to-Program Communication(APPC)體系結(jié)構(gòu)的一部分,允許客戶機(jī)和主機(jī)在SNA網(wǎng)絡(luò)上的通信,而不強(qiáng)迫客戶機(jī)模擬一個(gè)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論