《Web應(yīng)用開發(fā)技術(shù)》課件第六章_第1頁
《Web應(yīng)用開發(fā)技術(shù)》課件第六章_第2頁
《Web應(yīng)用開發(fā)技術(shù)》課件第六章_第3頁
《Web應(yīng)用開發(fā)技術(shù)》課件第六章_第4頁
《Web應(yīng)用開發(fā)技術(shù)》課件第六章_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

6.1JSP指令元素6.2JSP動作習(xí)題6第6章JSP標(biāo)簽

JSP指令元素為翻譯階段提供全局信息。例如,設(shè)置全局變量的值和輸出內(nèi)容的類型,聲明要引用的類,指明頁面中包含的文件等。所有的指令元素在整個文件的范圍內(nèi)都有效。指令元素從JSP發(fā)送這些信息到JSP/Servlet容器上,但它們并不向客戶機產(chǎn)生任何輸出。

目前,JSP中有三個指令元素,分別是page、include和taglib。6.1JSP指令元素6.1.1page指令

page指令用來定義JSP文件的全局屬性。其語法格式如下:

<%@page屬性1="屬性1的值"屬性2="屬性2的值"……%>

例如:

<%@pagecontentType="text/html;charset=GB2312"%>

這條page指令就指定了contentType屬性的值是"text/html;charset=GB2312",即JSP頁面的MIME類型是text/html,使用的字符集是GB2312,這樣可以顯示標(biāo)準(zhǔn)的漢字。

page指令的屬性主要包括:language,import,contentType,info,pageEncoding,buffer,autoFlush,session,errorPage,isErrorPage,isThreadSafe等。表6.1列出了page指令的屬性及其作用。

表6.1page指令的屬性及其用法說明續(xù)表在一個JSP頁面中,可以用一條page指令來指定多個屬性的值,也可以用多條page指令來指定各個屬性的值。但是,需要注意的是,除import屬性外,其它屬性只能使用一次page指令給該屬性指定一個值。由于import屬性的取值較多,因此,可以在一條page指令中為import屬性指定多個值,各個值間用逗號分隔;也可以使用多個page指令給import屬性指定幾個值。例如,下面兩種寫法都是正確的:

<%@pageimport="java.io.*","javax.servlet.*","java.util.Date"%>

或者

<%@pageimport="java.io.*"%>

<%@pageimport="javax.servlet.*","java.util.Date"%>

注意:page指令對整個頁面有效,可以在JSP頁面的任何地方寫這種代碼。但是,好的習(xí)慣是把它寫在JSP程序的最前面,而且因為它是JSP頁面指令,請記住一定要寫在<HTML>標(biāo)記的前面。6.1.2include指令

include指令的作用是在JSP頁面出現(xiàn)該指令的位置處靜態(tài)插入一個文件,即通知JSP容器在當(dāng)前頁面的include指令位置上嵌入指定的資源文件的內(nèi)容。include指令的語法如下:

<%@includefile="文件名"%>

所謂靜態(tài)插入,就是將當(dāng)前JSP頁面和插入的部分合并成一個新的JSP頁面,然后再由JSP引擎將這個新的JSP頁面轉(zhuǎn)譯成Java類文件。因此,使用include指令插入文件時,應(yīng)注意下面幾個問題:

(1)

include指令所包含文件的文件名不能是變量,文件名后也不能帶任何參數(shù)。文件的擴(kuò)展名可以是

.jsp、.html、.txt和

.inc等,且必須保證被插入的文件是可獲得和可訪問的。

(2)如果在文件名中包含有路徑信息,則路徑必須是相對于當(dāng)前JSP網(wǎng)頁文件的路徑,一般情況下該文件必須和當(dāng)前JSP頁面在同一Web服務(wù)目錄中。如果路徑以“/”開頭,則這個路徑主要是參照J(rèn)SP應(yīng)用的上下關(guān)系路徑;如果路徑是以目錄名開頭,則這個路徑就是正在使用的JSP文件的當(dāng)前路徑。

(3)使用include指令插入文件后,必須保證新合并成的JSP頁面符合JSP語法規(guī)則,即形成一個新的JSP頁面文件后,不存在語法沖突。例如,如果在一個JSP頁面中使用include指令插入另一個JSP文件,而這兩個文件中都用page指令設(shè)置了頁面contentType屬性,如果二者不一致時就會出現(xiàn)語法錯誤,當(dāng)轉(zhuǎn)譯合并JSP頁面到Java文件時就會失敗。

(4)如果修改了被包含的文件,則也應(yīng)將當(dāng)前的JSP文件修改一下(在實際操作中,就是在編輯狀態(tài)下打開該JSP文件,重新保存一次)。這是因為JSP引擎是通過比較JSP頁面文件和相應(yīng)的字節(jié)碼文件的最后修改日期來判斷JSP頁面是否被修改過,如果兩者相同,則認(rèn)為JSP網(wǎng)頁未被修改。由于在include指令中被包含的文件是在編譯成字節(jié)碼文件之前插入到源JSP頁面中的,所以,如果只是修改了被包含的文件,而沒有修改JSP頁面文件,則得到的結(jié)果將和修改前是一樣的。

【示例程序include.jsp和calculate.jsp】

include指令的使用。在這個例子中我們編寫了一個計算平方根的程序calculate.jsp,然后在include.jsp中使用<%@includefile="calculate.jsp"%>指令將這個文件包含進(jìn)來,使include.jsp能完成計算平方根的功能。其執(zhí)行效果如圖6.1所示。

圖6.1在include.jsp中包含calculate.jsp的效果

(1)

include.jsp文件的源代碼如下。

<%@pagecontentType="text/html;charset=gb2312"%>

<HTML>

<HEAD>

<TITLE>使用include包含文件</TITLE>

</HEAD>

<BODY>

<PALIGN=center>

請輸入一個正數(shù),單擊按鈕計算這個數(shù)的平方根!

<%@includefile="calculate.jsp"%>

</P>

</BODY>

</HTML>

(2)

calculate.jsp文件的源代碼如下。

<%@pagecontentType="text/html;charset=gb2312"%>

<FORM

ACTION=""METHOD="post">

<INPUTTYPE="text"NAME="ok">

<INPUTTYPE="submit"VALUE="計算">

</FORM>

<%Stringa=request.getParameter("ok");

if(a==null)a="1";

try

{

doublenumber=Integer.parseInt(a);

out.println("<BR>計算結(jié)果是:"+Math.sqrt(number));

}

catch(NumberFormatExceptione)

{out.println("<BR>請輸入數(shù)字");}

%>6.1.3taglib指令

這個指令用于引入一些特定的標(biāo)簽庫以簡化JSP頁面的開發(fā)。這些標(biāo)簽可以是JSP標(biāo)準(zhǔn)標(biāo)簽庫(JSPStandardTagLibrary,JSTL)中的標(biāo)簽,也可以是使用者自己定義和開發(fā)的標(biāo)簽。使用JSP標(biāo)簽庫的語法格式如下:

<%@taglibprefix="標(biāo)簽前綴"uri="標(biāo)簽庫的統(tǒng)一資源定位符"%>

其中,prefix指出要引入的標(biāo)簽的前綴;uri(UniformResourceIdentifer,統(tǒng)一資源定位符)用于指出所引用標(biāo)簽資源的位置,可以使用絕對路徑或相對路徑。例如:

<%@taglibprefix="c"uri="/jsp/jstl/core"%>

表示從JSP標(biāo)準(zhǔn)標(biāo)簽庫的core庫中引入前綴為c的標(biāo)簽。

使用標(biāo)簽庫的主要好處是增加了代碼的重用度,使頁面易于維護(hù)。例如,可以把一些需要迭代顯示的內(nèi)容做成一個標(biāo)簽,在每次迭代顯示時,使用這個標(biāo)簽就可以了,不必重復(fù)書寫這些代碼。然而,由于目前的tomcat中還沒有將JSTL集成進(jìn)去,如果要使用標(biāo)準(zhǔn)標(biāo)簽庫(JSTL),需要下載和安裝標(biāo)簽庫文件,修改web.xml文件并進(jìn)行相關(guān)的設(shè)置等,操作比較繁雜。雖然通過下載并安裝MyEclipse插件可以解決一些問題,但仍然需要具備一些相關(guān)的知識。鑒于此,我們將在第11章介紹了XML語言后,在第12章專門介紹JSP中開發(fā)自定義標(biāo)簽庫的技術(shù)和使用標(biāo)準(zhǔn)標(biāo)簽庫的方法。

與在編譯階段提供全局信息的JSP指令元素相對應(yīng),JSP動作元素在執(zhí)行階段起作用,動態(tài)地為頁面提供一些信息和插件等。JSP動作元素采用類似HTML/XML語法書寫,并采用以下兩種語法格式中的一種:6.2JSP動作

<jsp:動作名屬性1="值1"屬性2="值2"……/>

或者

<jsp:動作名屬性1="值1"屬性2="值2"……>

……

</jsp:動作名>

JSP規(guī)范定義了一系列的標(biāo)準(zhǔn)動作,它們均以jsp作為前綴。這些動作元素中使用比較頻繁的主要有:<jsp:param>,<jsp:include>,<jsp:forword>,<jsp:plugin>,<jsp:fallback>,<jsp:useBean>,<jsp:setProperty>,<jsp:getProperty>,<jsp:attribute>等。6.2.1param動作

param動作以“名—值”對的形式為其它標(biāo)簽提供附加信息。這個動作與<jsp:include>、<jsp:forward>、<jsp:plugin>動作一起使用。它的使用方式如下:

<jsp:paramname="名字"value="指定給param的值"/>

我們將在下面的幾個小節(jié)中結(jié)合<jsp:include>、<jsp:forward>、<jsp:plugin>動作的使用來說明<jsp:param>動作。6.2.2include動作

如果需要在JSP頁面內(nèi)某處動態(tài)地加入一個文件,可以使用include動作。該動作告訴JSP頁面,在JSP頁面執(zhí)行時將指明的文件加入進(jìn)來。其使用格式如下:

<jsp:includepage="文件名"flush="true"/>

或者

<jsp:includepage="文件名"flush="true">

<jsp:paramname="名字"value="指定給param的值"/>

……

</jsp:include>

include動作與include指令有下述幾點不同:

(1)

include動作動態(tài)地插入文件到JSP頁面中,而include指令靜態(tài)地插入文件到JSP頁面中。即當(dāng)JSP引擎把JSP頁面轉(zhuǎn)譯成Java文件時,不把JSP頁面中用include動作所包含的文件與原JSP頁面合并成一個新的JSP頁面,而是告訴Java解釋器,這個文件在JSP運行時(Java文件的字節(jié)碼文件被加載執(zhí)行時)才包含進(jìn)來。如果被包含的文件是普通的HTML文件(靜態(tài)文件),就將文件的內(nèi)容發(fā)送到客戶端,由客戶端負(fù)責(zé)顯示;如果被包含的文件是JSP文件(動態(tài)文件),JSP引擎就執(zhí)行這個文件,然后將執(zhí)行結(jié)果發(fā)送到客戶端,由客戶端負(fù)責(zé)顯示執(zhí)行結(jié)果。

(2)由于include動作在執(zhí)行時才對包含的文件進(jìn)行處理,因此,JSP頁面和它所包含的文件在邏輯上和語法上都是獨立的。如果對include動作中包含的文件進(jìn)行了修改,那么運行時可以看到所包含文件修改后的結(jié)果;而如果對include指令中包含的文件進(jìn)行了修改,則必須重新編譯JSP頁面文件,否則只能看到所包含文件修改前的內(nèi)容。

(3)當(dāng)include動作與param動作一起使用時,可以將param動作中的參數(shù)值傳遞到include動作要加載的文件中去。因此,include動作如果結(jié)合param動作,可以在加載文件的過程中向該文件提供信息。

(4)

include動作可以動態(tài)增加內(nèi)容,但它的運行效率比include指令低。

【示例程序jsp_include.jsp、twoParam.jsp和login.html】

include動作與include指令的應(yīng)用對比。在這個例子的jsp_include.jsp程序中,我們分別使用<%@include%>指令和<jsp:include>動作包含了twoParam.jsp程序,并在twoParam.jsp和jsp_include.jsp兩個文件中都使用JSP內(nèi)置對象request的getParameter方法獲取兩個參數(shù)yourname和yourpass的值,在jsp_include.jsp中還使用<jsp:param>動作傳遞這兩個參數(shù)的值。下面是這幾個文件的源代碼。

(1)程序jsp_include.jsp的源代碼如下。

<%@pagecontentType="text/html;charset=gb2312"language="java"%>

<HTML><BODY>

兩種不同的文件包含方式執(zhí)行效果比較:<BR>

<%@includefile="login.html"%>

1.使用include指令靜態(tài)包含twoParam.jsp的執(zhí)行效果:

<%@includefile="twoParam.jsp"%>

<BR><BR>

2.使用include動作動態(tài)包含twoParam.jsp的執(zhí)行效果:

<jsp:includepage="twoParam.jsp"flush="true">

<jsp:paramname="yourname"value="<%=request.getParameter("user")%>"/>

<jsp:paramname="yourpass"value="<%=request.getParameter("passw")%>"/>

</jsp:include>

</BODY></HTML>

(2)程序twoParam.jsp的源代碼如下。

<%@pagecontentType="text/html;charset=gb2312"language="java"%>

<BR>twoParam.jsp文件的執(zhí)行效果:

<BR>你的名字是:<%=request.getParameter("yourname")%>

<BR>你的口令是:<%=request.getParameter("yourpass")%>

<BR>

<%out.println("你好?來自twoParam.jsp文件");%>

(3)文件login.html的源代碼如下。

<HTML><BODY>

<FORMMETHOD=postACTION="jsp_include.jsp">

<TABLE>

<TR><TD>Pleaseinputyourname:</TD>

<TD><INPUTTYPE=textNAME=user></TD>

</TR>

<TR><TD>Inputyourpassword:</TD>

<TD><INPUTTYPE=textNAME=passw></TD>

</TR>

<TR><TD><INPUTTYPE=submitVALUE=login></TD>

</TR>

</TABLE>

</FORM>

</BODY></HTML>

圖6.2是上述文件在兩種情況下的執(zhí)行效果。從圖中可以看出,不論在哪種情況下,使用<%@include%>指令靜態(tài)包含文件的執(zhí)行結(jié)果都是相同的;而使用<jsp:include>動作動態(tài)包含文件時,執(zhí)行結(jié)果可根據(jù)參數(shù)的變化而變化。

(a)執(zhí)行jsp_include.jsp的初始效果圖6.2使用include動作與include指令的效果對比

(b)輸入數(shù)據(jù)后點擊login按鈕的效果圖6.2使用include動作與include指令的效果對比6.2.3forward動作

forward動作的作用是將請求轉(zhuǎn)向另一個頁面,并停止執(zhí)行當(dāng)前頁面中該動作后的內(nèi)容。在控制型的JSP頁面中經(jīng)常使用這個動作。該動作只有一個page屬性,其使用格式如下:

<jsp:forwardpage="要轉(zhuǎn)向頁面的相對URL"或"<%=表達(dá)式%>"/>

或者

<jsp:forwardpage="要轉(zhuǎn)向頁面的相對URL"或"<%=表達(dá)式%>">

<jsp:paramname="名字"value="指定給param的值"/>

……

</jsp:forword>

【示例程序checklogin.jsp、success.jsp和login1.html】

forward動作應(yīng)用。下面以登錄驗證頁面checklogin.jsp為例來說明forward動作的使用。幾乎所有的登錄驗證頁面的機制都是:首先提供登錄界面(本例為login1.html)讓用戶輸入登錄信息,然后在登錄驗證頁面(本例為checklogin.jsp)中獲取用戶輸入的信息并進(jìn)行驗證,如果驗證通過則把頁面轉(zhuǎn)向到登錄成功后的頁面(本例為success.jsp),否則,把頁面重新定位到登錄頁面。圖6.3是本例的運行效果。

(a)在login1.html表單輸入數(shù)據(jù)圖6.3使用forward動作的checklogin.jsp程序的執(zhí)行效果

(b)驗證成功后顯示success.jsp頁面的內(nèi)容圖6.3使用forward動作的checklogin.jsp程序的執(zhí)行效果

(1)登錄驗證頁面checklogin.jsp程序的源代碼如下。

<%@pagecontentType="text/html;charset=gb2312"%>

<%

Stringname=request.getParameter("user");

Stringpassword=request.getParameter("passw");

if(name.equals("Seamens")&&password.equals("123456"))

{

%>

<jsp:forwardpage="sucess.jsp">

<jsp:paramname="userXy"value="<%=name%>"/>

</jsp:forward>

<%

}

else

{

%>

<jsp:forwardpage="login1.html">

<jsp:paramname="userXy"value="<%=name%>"/>

</jsp:forward>

<%}%>

(2)下面的代碼是登錄成功success.jsp頁面的源代碼。登錄界面login1.html的源代碼只是將6.2.2節(jié)login.html中的<FORM>標(biāo)記的ACTION屬性值改為ACTION=checklogin.jsp,再把第二個輸入框的TYPE屬性改為TYPE=password,故此處從略。

<%@pagecontentType="text/html;charset=gb2312"%>

<%=request.getParameter("user")%>

登錄成功,歡迎您進(jìn)入本系統(tǒng)!注意,在執(zhí)行結(jié)果圖6.3(b)的地址欄里顯示的是checklogin.jsp,而頁面實際顯示的內(nèi)容卻是success.jsp的。即使用forward動作時,客戶端看到的地址是A頁面的,而實際看到的內(nèi)容卻是B頁面的。

另外需指出的是,實際網(wǎng)站中的這些頁面的代碼都比本例中的代碼要復(fù)雜得多。首先,實際網(wǎng)站的登錄驗證往往通過連接數(shù)據(jù)庫來進(jìn)行。其次,驗證通過后將引導(dǎo)用戶至他所感興趣的頁面。作為一個例子,這里只寫了一段最為簡單的代碼,用戶名和密碼都直接以字符串常量的形式給出。6.2.4useBean動作

useBean動作用來在JSP頁面中創(chuàng)建和使用一個JavaBean組件,并指定它的名字以及作用范圍。它保證對象在動作指定的范圍內(nèi)可以使用。useBean動作的使用格式如下:

<jsp:useBeanid="名字id"scope="作用范圍"typeSpec/>

其中:“作用范圍”可以是page、request、session、application四者之一;“typeSpec”可以是下面四個中的一個:

class="類名"

class="類名"type="類型名"

beanName="bean的名字id"

type="類型名"

表6.2列出了useBean動作的屬性及其含義和使用方法。

表6.2useBean動作的屬性及含義和使用方法注意,<jsp:useBean>動作所引用的類必須存放在服務(wù)器的class路徑中,否則,JSP將無法通過編譯。如果編寫的Bean需要存放在特定的目錄下,則應(yīng)將其所在的目錄加到系統(tǒng)的classpath變量中。關(guān)于useBean更詳細(xì)的使用技術(shù)將在第8章講述。6.2.5setProperty動作

setProperty動作用來設(shè)置Bean的屬性值。在使用這個動作標(biāo)簽之前,必須使用<jsp:useBean>動作聲明此Bean。實際上,<jsp:setProperty>動作使用Bean給定的setXxx()方法來設(shè)置Bean的屬性值。其語法如下:

<jsp:useBeanid="名字id"……/>

……

<jsp:setPropertyname="Bean的名字id"propertyDetails/>

<jsp:useBeanid="Bean的名字id"……/>

……

<jsp:setPropertyname="名字id"propertyDetails/>

</jsp:useBean>其中,“Bean的名字id”是此前在<jsp:useBean>中用id屬性引入的名字;“propertyDetails”可以是下面四個中的一個:

Property="*"

Property="Bean的屬性名"

Property="Bean的屬性名"param="request中的參數(shù)名"

Property="Bean的屬性名"value="字符串"或"<%=表達(dá)式%>"

例如:

<jsp:useBeanid="cart"scope="session"class="session.Carts">

<jsp:setPropertyname="cart"property="name"value="Peter"/>

</jsp:useBean>6.2.6getProperty動作

getProperty動作是對setProperty動作的補充,用來訪問一個Bean的屬性,并將獲得的屬性值轉(zhuǎn)化成一個字符串后發(fā)送到輸出流中。同理,在使用這個動作標(biāo)簽之前,必須使用useBean動作聲明此Bean。該動作的使用格式如下:

<jsp:getPropertyname="Bean的名字id"property="屬性名"/>

例如:

<jsp:useBeanid="usersession"scope="session"class="user.UserSession">

<jsp:getPropertyname="usersession"property="name"/>

<jsp:getPropertyname="usersession"property="password"/>

useBean、getProperty和setProperty動作的使用。

【示例程序ProductWeight.jsp和ProductWeight.java】

這個例子中包括兩個程序:ProductWeight.jsp和ProductWeight.java。其中,ProductWeight.java就是我們開發(fā)的一個JavaBean,它實際上是一個包(packagepWeight),在這個包中我們只定義了一個ProductWeight類,并為這個類定義了兩個屬性和五個方法。為此,我們在useBean動作中用class="pWeight.ProductWeight"指出類的全名,用id="pw"指出它在Bean中的名字。此外,在執(zhí)行ProductWeight.jsp前需要將ProductWeight.java文件編譯成ProductWeight.class文件(在Eclipse環(huán)境下只需創(chuàng)建相應(yīng)的包,系統(tǒng)會自動編譯)。

(1)

ProductWeight.jsp文件的源代碼如下。

<%@pagecontentType="text/html;charset=GBK"%>

<HTML>

<HEAD><TITLE>使用Javabeans</TITLE></HEAD>

<BODY>

<jsp:useBeanid="pw"scope="application"class="pWeight.ProductWeight"/>

修改前

<BR>使用getProperty取得Bean的屬性值

<BR>產(chǎn)品型號:<jsp:getPropertyname="pw"property="product"/>

<BR>產(chǎn)品重量:<jsp:getPropertyname="pw"property="weight"/>

<BR><BR>使用類中定義的方法獲取產(chǎn)品的屬性值

<BR>產(chǎn)品型號:<%=pw.getProduct()%>

<BR>產(chǎn)品重量:<%=pw.getWeight()%>

<jsp:setPropertyname="pw"property="product"value="k1568"/>

<jsp:setPropertyname="pw"property="weight"value="35"/>

<HR><BR>修改后

<BR>使用getProperty取得Bean的屬性值

<BR>產(chǎn)品型號:<jsp:getPropertyname="pw"property="product"/>

<BR>產(chǎn)品重量:<jsp:getPropertyname="pw"property="weight"/>

<BR><BR>使用類中定義的方法獲取產(chǎn)品的屬性值

<BR>產(chǎn)品型號:<%=pw.getProduct()%>

<BR>產(chǎn)品重量:<%=pw.getWeight()%>

</BODY></HTML>

(2)

ProductWeight.java文件的源代碼如下。

packagepWeight;

publicclassProductWeight

{Stringproduct;

doubleweight;

publicProductWeight()

{//構(gòu)造方法進(jìn)行初始化

duct="Y8015";

this.weight=32;

}

publicvoidsetProduct(StringProductName)

{//用于設(shè)置屬性值的方法

duct=ProductName;

}

publicStringgetProduct()

{//用于得到屬性值的方法

return(duct);

}

publicvoidsetWeight(doubleWeightValue)

{

this.weight=WeightValue;

}

publicdoublegetWeight()

{return(this.weight

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論