課件-cookie與主要內(nèi)容_第1頁(yè)
課件-cookie與主要內(nèi)容_第2頁(yè)
課件-cookie與主要內(nèi)容_第3頁(yè)
課件-cookie與主要內(nèi)容_第4頁(yè)
課件-cookie與主要內(nèi)容_第5頁(yè)
已閱讀5頁(yè),還剩32頁(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)介

主要內(nèi)容:1.理解會(huì)話與會(huì)話狀態(tài)的管理2.

技術(shù)3.session技術(shù)4.

應(yīng)用

與session技術(shù)提出問題HTTP協(xié)議是一種無(wú)狀態(tài)的協(xié)議,WEB服務(wù)器本身不能識(shí)別出哪些請(qǐng)求是同一個(gè)瀏覽器發(fā)出的,瀏覽器的每一次請(qǐng)求都是完全孤立的即使HTTP1.1

支持持續(xù)連接,但當(dāng)用戶有一段時(shí)間沒有提交請(qǐng)求,連接也會(huì)關(guān)閉。網(wǎng)上商店的購(gòu)物車功能如何實(shí)現(xiàn)?:加入購(gòu)物車的商品在下次再查看時(shí)還在瀏覽記錄功能如何實(shí)現(xiàn)?:

你查看過(guò)的

都顯示在瀏覽記錄列表中作為web

服務(wù)器,必須能夠采用一種機(jī)制來(lái)唯一地標(biāo)識(shí)一個(gè)用戶,同時(shí)記錄該用戶的狀態(tài)提出問題HTTP協(xié)議是一種無(wú)狀態(tài)的協(xié)議,WEB服務(wù)器本身不能識(shí)別出哪些請(qǐng)求是同一個(gè)瀏覽器發(fā)出的,瀏覽器的每一次請(qǐng)求都是完全孤立的即使HTTP1.1

支持持續(xù)連接,但當(dāng)用戶有一段時(shí)間沒有提交請(qǐng)求,連接也會(huì)關(guān)閉。網(wǎng)上商店的購(gòu)物車功能如何實(shí)現(xiàn)?:加入購(gòu)物車的商品在下次再查看時(shí)還在瀏覽記錄功能如何實(shí)現(xiàn)?:

你查看過(guò)的

都顯示在瀏覽記錄列表中作為web

服務(wù)器,必須能夠采用一種機(jī)制來(lái)唯一地標(biāo)識(shí)一個(gè)用戶,同時(shí)記錄該用戶的狀態(tài)會(huì)話和會(huì)話狀態(tài)WEB應(yīng)用中的會(huì)話是指一個(gè)客戶端瀏覽器與WEB服務(wù)器之間連續(xù)發(fā)生的一系列請(qǐng)求和響應(yīng)過(guò)程。WEB應(yīng)用的會(huì)話狀態(tài)是指WEB服務(wù)器與瀏覽器在會(huì)話過(guò)

產(chǎn)生的狀態(tài)信息,借助會(huì)話狀態(tài),WEB服務(wù)器能夠把屬于同一會(huì)話中的一系列的請(qǐng)求和響應(yīng)過(guò)程關(guān)聯(lián)起來(lái)。session如何實(shí)現(xiàn)有狀態(tài)的會(huì)話WEB服務(wù)器端程序要能從大量的請(qǐng)求消息中區(qū)分出哪些請(qǐng)求消息屬于同一個(gè)會(huì)話,即能識(shí)別出來(lái)自同一個(gè)瀏覽器的

請(qǐng)求,這需要瀏覽器對(duì)其發(fā)出的每個(gè)請(qǐng)求消息都進(jìn)行標(biāo)識(shí):屬于同一個(gè)會(huì)話中的請(qǐng)求消息都附帶同樣的標(biāo)識(shí)號(hào),而屬于不同會(huì)話的請(qǐng)求消息總是附帶不同的標(biāo)識(shí)號(hào),這個(gè)標(biāo)識(shí)號(hào)就稱之為會(huì)話ID(SessionID)。在Servlet

規(guī)范中,常用以下兩種機(jī)制完成會(huì)話(瀏覽器端的緩存技術(shù))Session(服務(wù)器端和瀏覽器端的緩存技術(shù))的應(yīng)用案例:最近瀏覽記錄session的應(yīng)用案例:購(gòu)物車session的應(yīng)用案例:用戶的自動(dòng)登陸機(jī)制??機(jī)制采用的是在客戶端保持HTTP

狀態(tài)信息的方案是在瀏覽器

WEB服務(wù)器的某個(gè)資源時(shí),由WEB服務(wù)器在HTTP響應(yīng)消息頭中附帶傳送給瀏覽器的一個(gè)小文本文件。該WEB服務(wù)器時(shí),一旦WEB瀏覽器保存了某個(gè)都會(huì)在HTTP請(qǐng)求頭中將這個(gè),那么它在以后每次回傳給WEB服務(wù)器。底層的實(shí)現(xiàn)原理:

WEB服務(wù)器通過(guò)在HTTP響應(yīng)消息中增加Set-

響應(yīng)頭字段將請(qǐng)求頭字段將給瀏覽器,瀏覽器則通過(guò)在HTTP請(qǐng)求消息中增加回傳給WEB服務(wù)器。一個(gè) 只能標(biāo)識(shí)一種信息,它至少含有一個(gè)標(biāo)識(shí)該信息的名稱(NAME)和設(shè)置值(VALUE)。一個(gè)WEB站點(diǎn)可以給一個(gè)WEB瀏覽器發(fā)送多個(gè) ,一個(gè)WEB瀏覽器也。,每個(gè)站點(diǎn)最多存放20個(gè),每個(gè)可以 多個(gè)WEB站點(diǎn)提供的瀏覽器一般只允許存放300個(gè)的大小限制為4KB。的傳送過(guò)程示意圖不存在①第一次Server1的④寫入Server1的③第一次響應(yīng)Set- 2:

name=value②第一次請(qǐng)求WEBServer1WEBServer2瀏覽器Server1的Server2的區(qū)⑤后續(xù) 存在Server1的⑥后續(xù)請(qǐng)求:

name=value類信息,它Servlet

API中提供了一個(gè)javax.servlet.http.

類來(lái)封裝包含有生成 信息和提取 信息的各個(gè)屬性的方法。?(String

name,String

value)類的方法:構(gòu)造方法:publicgetName方法setValue與getValue方法setMaxAgesetPathHttpServletResponse接口中定義了一個(gè)add

方法,它用于在發(fā)送給瀏覽器的HTTP響應(yīng)消息中增加一個(gè)Set-

響應(yīng)頭字段。HttpServletRequest接口中定義了一個(gè)get

s方法,它用于從HTTP請(qǐng)求消息的 請(qǐng)求頭字段中 所有的 項(xiàng)。的回送1.創(chuàng)建

對(duì)象2.設(shè)置最大時(shí)效3.將 放入到HTTP響應(yīng)報(bào)頭如果創(chuàng)建了一個(gè)

,并將他發(fā)送到瀏覽器,默認(rèn)情況下它是一個(gè)會(huì)話級(jí)別的

;

在瀏覽器的內(nèi)存中,用戶退出瀏覽器之后被刪除。若希望瀏覽器將該

在磁盤上,則需要使用maxAge,并給出一個(gè)以秒為單位的時(shí)間。將最大時(shí)效設(shè)為0則是命令瀏覽器刪除該

。發(fā)送

需要使用HttpServletResponse的add

方法,將到一個(gè)

Set-

HTTP響應(yīng)報(bào)頭中。由于這個(gè)方法并不修改任何之前指定的Set-

報(bào)頭,而是創(chuàng)建新的報(bào)頭,因此將這個(gè)方法稱為是add

,而非set

。的1.調(diào)用request.gets()要獲取瀏覽器發(fā)送來(lái)的,需要調(diào)用HttpServletRequest的get

s方法,這個(gè)調(diào)用返回

對(duì)象的數(shù)組,對(duì)應(yīng)由HTTP請(qǐng)求中

報(bào)頭輸入的值。2.對(duì)數(shù)組進(jìn)行循環(huán),調(diào)用每個(gè)的getName方法,直到找到感的為止會(huì)話

和持久的區(qū)別如果不設(shè)置過(guò)期時(shí)間,則表示這個(gè)生命周期為瀏覽器會(huì)話期間,只要關(guān)閉瀏覽器窗口,就 了。這種生命期為瀏覽器會(huì)話期的 被稱為會(huì)話。會(huì)話一般不保存在硬盤上而是保存在內(nèi)存里。?如果設(shè)置了過(guò)期時(shí)間,瀏覽器就會(huì)把保存到硬盤上,關(guān)閉后再次打開瀏覽器,這些依然有效直到超過(guò)設(shè)定的過(guò)期時(shí)間。在硬盤上的可以在不同的瀏覽器進(jìn)程間共享,比如兩個(gè)IE窗口。而對(duì)于保存在內(nèi)存的,不同的瀏覽器有不同的處理方式。之項(xiàng)目實(shí)戰(zhàn)(6)功能需求:顯示

瀏覽記錄1).

顯示 的瀏覽記錄(最多顯示4條,

最后瀏覽的 面)2).可以清空瀏覽記錄session在不同環(huán)境下的不同含義session,中文經(jīng)常翻譯為會(huì)話,其本來(lái)的含義是指有始有終的一系列動(dòng)作/消息,對(duì)瀏覽來(lái)說(shuō)是指:從打開瀏覽發(fā)送請(qǐng)求開始,到關(guān)閉瀏覽器窗口為止。session在Web開發(fā)環(huán)境下的語(yǔ)義又有了新的擴(kuò)展,它的含義是指一類用來(lái)在客戶端與服務(wù)器端之間保持狀態(tài)的解決方案。Session有時(shí)候也用來(lái)指這種解決方案的 結(jié)構(gòu),

也就是HttpSession接口對(duì)象Session機(jī)制session機(jī)制采用的是在服務(wù)器端保持

HTTP

狀態(tài)信息的方案。服務(wù)器使用一種類似于散列表的結(jié)構(gòu)(也可能就是使用散列表)來(lái)保存信息。當(dāng)程序需要為某個(gè)客戶端的請(qǐng)求創(chuàng)建一個(gè)session時(shí),服務(wù)器首先檢查這

個(gè)客戶端的請(qǐng)求里是否包含了一個(gè)session標(biāo)識(shí)(即sessionId),如果已經(jīng)包

含一個(gè)sessionId則說(shuō)明以前已經(jīng)為此客戶創(chuàng)建過(guò)session,服務(wù)器就按照

session

id把這個(gè)session檢索出來(lái)使用(如果檢索不到,可能會(huì)新建一個(gè),這種情況可能出現(xiàn)在服務(wù)端已經(jīng)刪除了該用戶對(duì)應(yīng)的session對(duì)象,但用

戶人為地在請(qǐng)求的URL后面附加上一個(gè)JSESSION的參數(shù))。如果客戶請(qǐng)求不包含sessionId,

則為此客戶創(chuàng)建一個(gè)session

并且生成一個(gè)與此

session相關(guān)聯(lián)的sessionId,這個(gè)session

id將在本次響應(yīng)中返回給客戶

端保存。JESSESIONID=eriereidfd3243Session的交互過(guò)程不存①當(dāng)前會(huì)話第一次在JSESSIONID的④寫入Server1的③第一次響應(yīng)Set-

2:JSESSIONID=

x②第一次請(qǐng)求WEBServer1瀏覽器Server1的區(qū)⑤后續(xù)存在Server1的⑥后續(xù)請(qǐng)求:

JSESSIONID=

x獲取session時(shí),會(huì)創(chuàng)建session對(duì)象(sessionid=

x)獲取session時(shí)不會(huì)新建,而是根據(jù)JSESSIONID的值

x找到對(duì)應(yīng)的session對(duì)象HttpSession接口中的方法getId方法getCreationTime方法getLastAccessedTime方法setMaxInactiveInterval方法getMaxInactiveInterval方法isNew方法*如果客戶端請(qǐng)求消息中返回了一個(gè)與Servlet程序當(dāng)前獲得的HttpSession對(duì)象的會(huì)話標(biāo)識(shí)號(hào)相同的會(huì)話標(biāo)識(shí)號(hào),則認(rèn)為這個(gè)HttpSession對(duì)象不是新建的。invalidate方法getServletContext方法setAttribute方法getAttribute方法removeAttribute方法getAttributeNames方法Request.getSession();Session的創(chuàng)建與刪除一個(gè)常見的錯(cuò)誤是以為session在有客戶端 時(shí)就被創(chuàng)建,然而事實(shí)是直到某server端程序(如Servlet)調(diào)用HttpServletRequest.getSession(true)

或者HttpServletRequest.getSession()這樣的語(yǔ)句時(shí)才會(huì)被創(chuàng)建。session在下列情況下被刪除:A.程序調(diào)用HttpSession.invalidate()B.距離上一次收到客戶端發(fā)送的session

id時(shí)間間隔超過(guò)了session的最大有效時(shí)間C.服務(wù)器進(jìn)程被停止注意:關(guān)閉瀏覽器只會(huì)使

在客戶端瀏覽器內(nèi)存中的session失效,不會(huì)使服務(wù)器端的session對(duì)象失效。兩個(gè)瀏覽器窗口 應(yīng)用程序會(huì)使用同一個(gè)session通常session

是不能跨窗口使用的(IE

8

版本以前),當(dāng)你新開了一個(gè)瀏覽器窗口進(jìn)入相同頁(yè)面時(shí),系統(tǒng)會(huì)賦予你一個(gè)新的sessionid,這樣信息共享的目的就達(dá)不到了。此時(shí)可以先把session

id保存在persistent

中(通過(guò)設(shè)置

的最大有效時(shí)間),然后在新窗口中讀出來(lái),就可以得到上一個(gè)窗口的sessionid了,這樣通過(guò)session和persistent

的結(jié)合就可以實(shí)現(xiàn)了跨窗口的會(huì)話

。保存session

id的幾種方式保存session

id的方式可以采用

,這樣在交互過(guò)瀏覽器可以自動(dòng)的按照規(guī)則把這個(gè)標(biāo)識(shí)發(fā)送給服務(wù)器。由于可以

為的禁用,必須有其它的機(jī)制以便在

被禁用時(shí)仍然能夠把sessionid傳遞回服務(wù)器,經(jīng)常采用的一種技術(shù)叫做URL重寫,就是把sessionid附加在URL路徑的后面,附加的方式也有兩種,一種是作為URL路徑的附加信息,另一種是作為查詢字符串附加在URL后面。網(wǎng)絡(luò)在整個(gè)交互過(guò)始終保持狀態(tài),就必須在每個(gè)客戶端可能請(qǐng)求的路徑后面都包含這個(gè)session

id。Sessionsession通過(guò)SessionID來(lái)區(qū)分不同的客戶,session是以或URL重寫為基礎(chǔ)的,默認(rèn)使用

來(lái)實(shí)現(xiàn),系統(tǒng)會(huì)創(chuàng)造一個(gè)名為JSESSIONID的輸出

,這稱之為session

,以區(qū)別persistent s(也就是

通常所說(shuō)的),session

是于瀏覽器內(nèi)存中的,并不是寫到硬盤上的,通??床坏絁SESSIONID,但是當(dāng)把瀏覽器的后,web服務(wù)器會(huì)采用URL重寫的方式傳遞Sessionid,這時(shí)地址欄看到session

針對(duì)某一次會(huì)話而言,會(huì)話結(jié)束session也就隨著 了,而persistent

只是存在于客戶端硬盤上的一段文本。關(guān)閉瀏覽器,只會(huì)是瀏覽器端內(nèi)存里的session

,但不會(huì)使保存在服務(wù)器端的session對(duì)象

,同樣也不會(huì)使已經(jīng)保存到硬盤上的持久化

。Session的超時(shí)管理WEB服務(wù)器無(wú)法判斷當(dāng)前的客戶端瀏覽器是否還會(huì)繼續(xù),也無(wú)法檢測(cè)客戶端瀏覽器是否關(guān)閉,所以,即使客戶已經(jīng)離開或關(guān)閉了瀏覽器,WEB服務(wù)器還要保留與之對(duì)應(yīng)的HttpSession對(duì)象。隨著時(shí)間的推移而不斷增加新的客戶端,WEB服務(wù)器內(nèi)存中將會(huì)因此積累起大量的不再被使用的HttpSession對(duì)象,并將最終導(dǎo)致服務(wù)器內(nèi)存耗盡。WEB服務(wù)器采用“超時(shí)限制”的辦法來(lái)判斷客戶端是否還在繼續(xù) ,如果某個(gè)客戶端在一定的時(shí)間之內(nèi)沒有發(fā)出后續(xù)請(qǐng)求,WEB服務(wù)器則認(rèn)為客戶端已經(jīng)停止了活動(dòng),結(jié)束與該客戶端的會(huì)話并將與之對(duì)應(yīng)的HttpSession對(duì)象變成 。如果客戶端瀏覽器超時(shí)后再次發(fā)出

請(qǐng)求,WEB服務(wù)器則認(rèn)為這是一個(gè)新的會(huì)話的開始,將為之創(chuàng)建新的HttpSession對(duì)象和分配新的會(huì)話標(biāo)識(shí)號(hào)。會(huì)話的超時(shí)間隔可以在web.xml文件中設(shè)置,其默認(rèn)值由Servlet容器定義。<session-config><session-timeout>30</session-timeout></session-config>利用URL重寫實(shí)現(xiàn)SessionServlet規(guī)范中引入了一種補(bǔ)充的會(huì)話管理機(jī)制,它允許不支持 的瀏覽器也可以與WEB服務(wù)器保持連續(xù)的會(huì)話。這種補(bǔ)充機(jī)制要求在響應(yīng)消息的實(shí)體內(nèi)容中必須包含下一次請(qǐng)求的超 ,并將會(huì)話標(biāo)識(shí)號(hào)作為超

的URL地址的一個(gè)特殊參數(shù)。將會(huì)話標(biāo)識(shí)號(hào)以參數(shù)形式附加在超

的URL地址后面的技術(shù)稱為URL重寫。如果在瀏覽器不支持 或者關(guān)閉了 功能的情況下,WEB服務(wù)器還要能夠與瀏覽器實(shí)現(xiàn)有狀態(tài)的會(huì)話,就必須對(duì)所有可能被客戶端 的請(qǐng)求路徑(包括超

、form表單的action屬性設(shè)置和重定向的URL)進(jìn)行URL重寫。HttpServletResponse接口中定義了兩個(gè)用于完成URL重寫方法:encodeURL方法encodeRedirectURL方法HttpSession

的生命周期什么時(shí)候創(chuàng)建

HttpSession

對(duì)象是否瀏覽器 服務(wù)端的任何一個(gè)

JSP

Servlet,服務(wù)器都會(huì)立即創(chuàng)建一個(gè)

HttpSession

對(duì)象呢?不一定。若當(dāng)前的

JSP(或

Servlet)

是客戶端 的當(dāng)前

WEB

應(yīng)用的第一個(gè)資源,且

JSP

page

指定的session

屬性值為

false,

則服務(wù)器就不會(huì)為

JSP

創(chuàng)建一個(gè)

HttpSession對(duì)象;若當(dāng)前

JSP

不是客戶端 的當(dāng)前

WEB

應(yīng)用的第一個(gè)資源,且其他頁(yè)面已經(jīng)創(chuàng)建一個(gè)

HttpSession

對(duì)象,則當(dāng)前

JSP

頁(yè)面會(huì)返回一個(gè)會(huì)話的

HttpSession

對(duì)象,而不會(huì)創(chuàng)建一個(gè)新的

HttpSession‘

對(duì)象session=“false“到底表示什么意思?當(dāng)前JSP

頁(yè)面禁用session

隱含變量!但可以使用其他的顯式的

HttpSession

對(duì)象對(duì)于

Serlvet

而言:若

Serlvet

是客戶端

的第一個(gè)

WEB

應(yīng)用的資源,則只有調(diào)用了

request.getSession()或request.getSession(true)才會(huì)創(chuàng)建

HttpSession

對(duì)象什么時(shí)候銷毀

HttpSession

對(duì)象:JSESSIOINID=Sessionrequest.getSession()id

=

request.get

(“JSESSIOINID”)session

=

sessionMap.get(id);if(session==null)

{session

=

new

HttpSessionImpl(newId)c

=

new

(“JSESSIONID,

newId);response.add

(c);}return

sessionid1=session1id2=session2Session的結(jié)構(gòu)id,

Map<String,Object>attributes表單的重復(fù)提交?在沒有刷新表單頁(yè)面的情況下多次提交了請(qǐng)求1.快速點(diǎn)擊提交按鈕(服務(wù)器處理慢)2.請(qǐng)求處理完成后(轉(zhuǎn)發(fā)),再次點(diǎn)擊瀏覽器的”刷新”按鈕3.點(diǎn)擊瀏覽器的回退按鈕,不刷新表單頁(yè)面,再次點(diǎn)擊提交按鈕問題:1.給服務(wù)器添加了不必要的壓力2.有可能出現(xiàn)錯(cuò)誤操作解決方法一:JS

客戶端避免表單重復(fù)提交不足:只能解決第一種情況的問題解決方法二:使用請(qǐng)求的重定向不足:只能解決第二種情況的問題解決方法三:使用Session現(xiàn)實(shí)事例:

一位乘客在

火車站買了一張去

的火車票(直接刷的那種),他刷票進(jìn)站坐火車去了

,

回來(lái)后過(guò)了幾天,

他又需要去這次他不想再買票,

直接拿上次的票去進(jìn)站口刷,

檢票機(jī)提示“此火車票已使用過(guò)了”,

不能能進(jìn)站.牛人A火車票務(wù)系統(tǒng)在窗口請(qǐng)求買張火車票生成一個(gè)隨機(jī)唯一的id,作為票號(hào),并保存(db)印一新的票,票上有id(123)及相關(guān)信息,給乘客得到一張火車票火車票id=123拿著火車票去刷票進(jìn)站在系統(tǒng)中看是否存在此id的記錄?有,刪除保存的id記錄,并通過(guò),沒有,此票已使用過(guò)了,不能通過(guò)下次再拿著上次的票去刷票進(jìn)站利用Session防止表單重復(fù)提交包含有FORM表單的頁(yè)面必須通過(guò)一個(gè)服務(wù)器程序動(dòng)態(tài)產(chǎn)生,服務(wù)器程序?yàn)槊看萎a(chǎn)生的頁(yè)面中的FORM表單都分配一個(gè)唯一的隨機(jī)標(biāo)識(shí)號(hào),并在FORM表單的一個(gè)隱藏字段中設(shè)置這個(gè)標(biāo)識(shí)號(hào),同時(shí)在當(dāng)前用戶的Session域中保存這個(gè)標(biāo)識(shí)號(hào)。當(dāng)用戶提交FORM表單時(shí),負(fù)責(zé)接收這一請(qǐng)求的服務(wù)器程序比較FORM表單隱藏字段中的標(biāo)識(shí)號(hào)與 在當(dāng)前用戶的Session域中的標(biāo)識(shí)號(hào)是否相同,如果的標(biāo)識(shí)號(hào)。相同則處理表單數(shù)據(jù),處理完后清除當(dāng)前用戶的Session域中在下列情況下,服務(wù)器

溫馨提示

  • 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)論