《Java-web程序設(shè)計(jì)》教案(共57頁)_第1頁
《Java-web程序設(shè)計(jì)》教案(共57頁)_第2頁
《Java-web程序設(shè)計(jì)》教案(共57頁)_第3頁
《Java-web程序設(shè)計(jì)》教案(共57頁)_第4頁
《Java-web程序設(shè)計(jì)》教案(共57頁)_第5頁
已閱讀5頁,還剩52頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、課題:第一章 Java Web概述【教學(xué)目標(biāo)】 掌握J(rèn)SP運(yùn)行環(huán)境的搭建,能進(jìn)行簡單的JSP程序編寫與運(yùn)行?!窘虒W(xué)重點(diǎn)】Eclipse+Dreamweaver工具、項(xiàng)目的導(dǎo)入、導(dǎo)出、發(fā)布打包【教學(xué)難點(diǎn)】Eclipse+Dreamweaver工具、項(xiàng)目的導(dǎo)入、導(dǎo)出、發(fā)布打包【教學(xué)方法】講解、討論【教學(xué)地點(diǎn)】教學(xué)樓、綜合樓【課時安排】4課時【教學(xué)過程】1.1 配置JSP運(yùn)行環(huán)境1.1.1 任務(wù)描述與實(shí)現(xiàn)正確安裝Tomcat服務(wù)器,并顯示其歡迎頁面。如圖1-1所示。圖1- 1 使用Tomcat歡迎頁面實(shí)現(xiàn)過程: 1安裝JDK 安裝Tomcat服務(wù)器前首先安裝JDK(Java Development

2、Kit),其包括了Java運(yùn)行環(huán)境,Java工具和Java基礎(chǔ)的類庫。目前,提供下載的最新版本為JDK7。讀者可到官方網(wǎng)站下載,下載地址為下載后雙擊安裝,畫面如圖1-2所示,按“下一步”操作直到完成。 圖1- 2 JDK安裝界面2安裝Tomcat Tomcat官方網(wǎng)站下載地址:。本書采用的版本是Tomcat-7.0.20。下載后,雙擊安裝,如圖1-3所示。點(diǎn)擊Next到第一步,進(jìn)行安裝組件選擇,如圖1-4所示。第二步選擇路徑,按照系統(tǒng)默認(rèn)路徑即可。第三步為配置Tomcat端口信息和賬號信息,如圖1-5所示,按照實(shí)際配置即可。第四步為選擇JDK的安裝

3、路徑,如圖1-6所示,選擇在之前第1步操作中安裝的JDK所在的位置。之后單擊“Next”開始安裝。安裝完畢后,提示安裝完成,如圖1-7所示。單擊“Finish”完成Tomcat的安裝。安裝完成之后,在程序菜單中可以看到Tomcat的選項(xiàng),如圖1-8所示。點(diǎn)擊Monitor Tomcat,可在任務(wù)欄看到Tomcat的服務(wù)圖標(biāo),如圖1-9所示,雙擊該圖標(biāo),彈出如圖1-10所示的Tomcat啟動界面,在此界面中可以選擇啟動或停止Tomcat服務(wù)。啟動Tomcat后,在地址欄中輸入http:/localhost:8080,若出現(xiàn)圖1-1的顯示效果,則Tomcat已正常安裝并運(yùn)行。圖1-3 Tomcat

4、安裝:歡迎界面1.1.2 新知識點(diǎn)JSP概述、Tomcat目錄結(jié)構(gòu)、虛擬目錄配置 JSP概述1. 動態(tài)網(wǎng)頁動態(tài)網(wǎng)頁是在服務(wù)器運(yùn)行的程序或者網(wǎng)頁,它們會隨不同用戶、不同時間、不同需求,返回不同的內(nèi)容。如:當(dāng)?shù)卿浀秸搲瘯r,作為論壇管理員身份,就可以看到“刪除”、“修改”等操作;作為論壇普通用戶身份,則只能看到帖子的瀏覽頁面。動態(tài)網(wǎng)頁會使用服務(wù)器端腳本語言,比如目前流行的JSP等,訪問動態(tài)網(wǎng)頁時會獲取最新內(nèi)容顯示,這就是為什么不同時間訪問網(wǎng)頁顯示內(nèi)容會發(fā)生變化的原因。動態(tài)網(wǎng)頁的特點(diǎn): 交互性好:即網(wǎng)頁會根據(jù)用戶需求和選擇而動態(tài)改變和響應(yīng)。例如用戶在網(wǎng)頁中填寫表單信息并提交,服務(wù)器經(jīng)過處

5、理將信息自動存儲到后臺數(shù)據(jù)庫中,并轉(zhuǎn)到相應(yīng)提示頁面。因此,采用動態(tài)網(wǎng)頁技術(shù)的網(wǎng)站可以實(shí)現(xiàn)與用戶的交互功能,如用戶注冊、用戶登錄、信息查詢等。自動更新:對于網(wǎng)頁設(shè)計(jì)者來說,無需每次修改頁面內(nèi)容,只需在后臺添加或者刪除要顯示的信息即可。例如,在論壇發(fā)布信息,后臺服務(wù)器將自動生成新的網(wǎng)頁內(nèi)容。2B/S技術(shù)使用動態(tài)網(wǎng)頁技術(shù)開發(fā)網(wǎng)站實(shí)際上是B/S技術(shù)的一種應(yīng)用,因此,要更好地理解動態(tài)網(wǎng)頁的開發(fā)原理,首先需要了解B/S技術(shù)的一些基本概念。B/S技術(shù)跟C/S技術(shù)的區(qū)別: C/S(客戶機(jī)/服務(wù)器)結(jié)構(gòu)分為客戶機(jī)和服務(wù)器兩層,一般將應(yīng)用軟件安裝在客戶機(jī)端,通過網(wǎng)絡(luò)與服務(wù)器相互通信,實(shí)現(xiàn)交互,如QQ、飛信、MSN

6、等軟件。對于這類系統(tǒng)的結(jié)構(gòu)如圖1-11所示。對于C/S結(jié)構(gòu)的應(yīng)用軟件,若要在客戶機(jī)運(yùn)行,就必須在先安裝,而且每次對系統(tǒng)做了微小的改動,所有客戶機(jī)的應(yīng)用軟件都需要更新。3. JSP簡介(1) 什么是JSP JSP(Java Server Pages)是由Sun Microsystems公司倡導(dǎo)、許多公司參與一起建立的一種動態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn)。它是在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標(biāo)記(tag),從而形成JSP文件(*.jsp)。Web服務(wù)器在遇到訪問JSP網(wǎng)頁的請求時,首先對其中的Java代碼進(jìn)行處理,然后將執(zhí)行結(jié)果連同JSP文件中

7、的HTML代碼一起返回給客戶的瀏覽器。插入的Java程序段可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁等,以實(shí)現(xiàn)建立動態(tài)網(wǎng)頁所需要的功能。 4JSP的特點(diǎn)JSP最大的優(yōu)點(diǎn)是開發(fā)的跨平臺結(jié)構(gòu),它可以運(yùn)行在幾乎所有的操作系統(tǒng)平臺。JSP的優(yōu)勢: 一次編寫,到處運(yùn)行。在這一點(diǎn)上Java比PHP更出色,除了系統(tǒng)之外,代碼不用做任何更改。系統(tǒng)的多平臺支持。基本上可以在所有平臺上的任意環(huán)境中開發(fā),在任意環(huán)境中進(jìn)行系統(tǒng)部署,在任意環(huán)境中擴(kuò)展。相比ASP/PHP的局限性是顯而易見的。強(qiáng)大的可伸縮性。從只有一個小的Jar文件就可以運(yùn)行Servlet/JSP,到由多臺服務(wù)器進(jìn)行集群和負(fù)載均衡,到多臺Application進(jìn)行事務(wù)

8、處理,消息處理,一臺服務(wù)器到無數(shù)臺服務(wù)器,Java顯示了一個巨大的生命力。多樣化和功能強(qiáng)大的開發(fā)工具支持。這一點(diǎn)與ASP很像,Java已經(jīng)有了許多非常優(yōu)秀的開發(fā)工具,而且許多可以免費(fèi)得到,并且其中許多已經(jīng)可以順利的運(yùn)行于多種平臺之下。JSP的劣勢: 與ASP一樣,Java的一些優(yōu)勢正是它致命的問題所在。正是由于為了跨平臺的功能,為了極度的伸縮能力,所以極大的增加了產(chǎn)品的復(fù)雜性。Java的運(yùn)行速度是用class常駐內(nèi)存來完成的,所以它在一些情況下所使用的內(nèi)存比起用戶數(shù)量來說確實(shí)是“最低性能價格比”了。從另一方面,它還需要硬盤空間來儲存一系列的.java文件和.class文件以及對應(yīng)的版本文件。5

9、. JSP開發(fā)及運(yùn)行環(huán)境要求 操作系統(tǒng)要求操作系統(tǒng)可以選擇Windows操作系統(tǒng)、Unix操作系統(tǒng)和Linux操作系統(tǒng)等。軟件環(huán)境要求 集成開發(fā)工具:集成開發(fā)工具有NetBeans、Eclipse等。本書選用Eclipse。Web服務(wù)器:JSP運(yùn)行時需要安裝JDK和Web服務(wù)器,目前使用較多的Web服務(wù)器有Tomcat、WebLogic、Jboss和Resin等。本書選用Tomcat。Tomcat是Apache 軟件基金會(Apache Software Foundation)的Jakarta 項(xiàng)目中的一個核心項(xiàng)目,由Apache、Sun 和其他一些公司及個人共同開發(fā)而成。本書選用目前最新版本

10、Tomcat7.0。 虛擬目錄配置配置JavaWebExample的虛擬目錄,方法如下: 1前期準(zhǔn)備工作 在D盤建立D:WorkSpaceJavaWebExample的文件夾(也可以建立在其他磁盤)。 在JavaWebExample文件夾中新建index.html文件,輸入“歡迎”二字。2. 配置Tomcat虛擬目錄 打開Tomcat的安裝目錄下conf文件夾的server.xml文件。在和標(biāo)簽之間加上虛擬目錄配置標(biāo)簽,即,其中path屬性值為虛擬目錄名稱,docBase屬性值為虛擬目錄指向的物理目錄。修改后如圖1-16所示。這里path保存的值是你在瀏覽器中輸入的值即虛擬目錄,

11、docBase保存的值是你要訪問的文件的物理絕對路徑。1.2 利用開發(fā)工具制作Hello.jsp 1.2.1 任務(wù)描述與實(shí)現(xiàn)任務(wù)描述: 利用Dreamweaver、Eclipse搭配開發(fā)一個簡單的JSP網(wǎng)頁。開發(fā)過程采用Eclipse和Dreamweaver搭配開發(fā),設(shè)計(jì)顯示界面部分用Dreamweaver實(shí)現(xiàn),代碼在界面制作自動生成基礎(chǔ)上在Eclipse中編寫,最后在Eclipse中測試運(yùn)行實(shí)現(xiàn)過程: 1下載安裝Eclipse 到Eclipse的官方網(wǎng)站下載Eclipse IDE for Java EE Developers,下載后解壓即可使用。Eclipse官方網(wǎng)站http:/www.ec

12、。2下載并安裝DreamWeaver8 3配置Eclipse開發(fā)環(huán)境啟動后,配置Web項(xiàng)目測試服務(wù)器。打開WindowPreferences菜單,選擇ServerRuntime Environments選項(xiàng),然后選擇添加服務(wù)器,添加已經(jīng)安裝的Tomcat v7.0。4在Eclipse中創(chuàng)建JavaWebExample項(xiàng)目在新建項(xiàng)目選擇對話框,選擇Dynamics Web Project,如圖1-24所示。單擊“Next”按鈕后,出現(xiàn)如圖1-25所示的對話框,填寫項(xiàng)目名稱JavaWebExample,選擇與項(xiàng)目相關(guān)的信息。在本例中,項(xiàng)目文件都置于D:workspace Java

13、WebExample中,因此以默認(rèn)選項(xiàng)配置;測試用服務(wù)器選擇Tomcat7.0,其它部分按默認(rèn)配置,之后單擊“Finish”按鈕。5在Dreamweaver中創(chuàng)建JavaWebExample站點(diǎn)在Dreamweaver中創(chuàng)建站點(diǎn)時,其站點(diǎn)根目錄指向在Eclipse中創(chuàng)建的項(xiàng)目的WebContent目錄,本例的根目錄為D:workspace JavaWebExampleWebContent,如圖1-29所示。此外,設(shè)置站點(diǎn)為JSP站點(diǎn),并指定前綴。6測試。測試在Dreamweaver中編寫的Web頁面,在Eclipse中運(yùn)行。本例中為了方便演示,在Dreamweaver的JavaWebExamp

14、le站點(diǎn)的Chapter1文件夾創(chuàng)建一個簡單的JSP頁面exam1_1_Hello.jsp1.2.2 新知識點(diǎn)Eclipse、Dreamweaver工具簡介 Eclipse簡介Eclipse是著名的跨平臺的自由集成開發(fā)環(huán)境(IDE),最初主要用于Java語言開發(fā),目前也有人通過插件使其作為其他計(jì)算機(jī)語言(如C+和Python)的開發(fā)工具。雖然Eclipse本身只是一個框架平臺,但是眾多插件的支持使得Eclipse擁有其他功能相對固定的IDE軟件很難具有的靈活性。許多軟件開發(fā)商以Eclipse為框架開發(fā)自己的IDE。Eclipse就其本身而言,它只是一個框架和一組服務(wù),但可通過插件

15、組件構(gòu)建集成開發(fā)環(huán)境。Eclipse附帶了一個標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具(Java Development Tools,JDT)。Eclipse最初是由IBM公司開發(fā)的替代商業(yè)軟件Visual Age for Java的下一代IDE Eclipse,2001年11月貢獻(xiàn)給開源社區(qū),現(xiàn)在它由非盈利軟件供應(yīng)商聯(lián)盟Eclipse基金會(Eclipse Foundation)管理。 Dreamweaver簡介 Dreamweaver,簡稱DW,是一款有著多年歷史和良好口碑的可視化網(wǎng)頁編輯工具,它最大的優(yōu)點(diǎn)就是所見即所得,對W3C網(wǎng)頁標(biāo)準(zhǔn)化支持十分到位。同時它還支持網(wǎng)站管理,包含H

16、TML檢查、HTML格式控制、HTML格式化選項(xiàng)、HomeSite/BBEdit捆綁、圖像編輯、全局查找替換、全FTP功能、處理Flash和Shockwave等多媒體格式和動態(tài)HTML,以及支持ASP、JSP、PHP、ASP.NET、XML等程序語言的編寫與調(diào)試。 工具聯(lián)合開發(fā)調(diào)試項(xiàng)目 使用Eclipse開發(fā)程序時,雖然系統(tǒng)框架結(jié)構(gòu)會給你帶來方便,但并不太適合于開發(fā)Web顯示界面,而Dreamweaver開發(fā)Web頁面時可以實(shí)現(xiàn)所見即所得的效果,頁面也遵循W3C國際標(biāo)準(zhǔn)。因此,可以利用這些開發(fā)工具各自的優(yōu)點(diǎn),結(jié)合開發(fā)Web程序,從而提高開發(fā)效率。1.2.3 擴(kuò)展現(xiàn)有項(xiàng)目導(dǎo)入、導(dǎo)出

17、、發(fā)布打包對于程序員來說,有時需要將現(xiàn)有項(xiàng)目導(dǎo)入、導(dǎo)出和發(fā)布打包,下面介紹如何將項(xiàng)目導(dǎo)入、導(dǎo)出和發(fā)布打包。 項(xiàng)目導(dǎo)入 項(xiàng)目導(dǎo)入可直接將文件拷貝至相應(yīng)文件夾中,也可導(dǎo)入War文件。下面先來介紹第一種方法。1. 文件拷貝(1) 新建項(xiàng)目在Eclipse中新建project,參考1.2.2中介紹新建項(xiàng)目。新建項(xiàng)目test,此時src及WebContent均為空,【教學(xué)小結(jié)】 本章介紹了進(jìn)行Java Web應(yīng)用開發(fā)的特點(diǎn),B/S架構(gòu)的優(yōu)勢,介紹了Java Web程序的服務(wù)器運(yùn)行的安裝配置及開發(fā)工具的搭配使用,重點(diǎn)介紹了JDK、Tomcat的安裝與配置,以及利用DreamWeaver與Ec

18、lipse搭配開發(fā)項(xiàng)目。通過本章的學(xué)習(xí),讀者可以創(chuàng)建簡單的JSP文件,并且進(jìn)行測試。課題:第二章 JSP語法【教學(xué)目標(biāo)】 掌握J(rèn)SP的頁面組成,掌握J(rèn)SP簡單網(wǎng)站的制作【教學(xué)重點(diǎn)】page指令、include指令、tablib指令、動作指令、動作指令【教學(xué)難點(diǎn)】page指令、include指令、tablib指令、動作指令、動作指令【教學(xué)方法】講解、討論【教學(xué)地點(diǎn)】教學(xué)樓、綜合樓【課時安排】4課時【教學(xué)過程】2.1 制作第一個JSP頁面2.1.1 任務(wù)描述與實(shí)現(xiàn)在Jsp文件中定義方法實(shí)現(xiàn)兩個數(shù)的加法定義方法實(shí)現(xiàn)兩個數(shù)的加法,調(diào)用其計(jì)算1+2并顯示結(jié)果,如圖2-1所示。圖2-1 求和效果實(shí)現(xiàn)過程:

19、 1新建JSP文件。在項(xiàng)目的chapter2文件夾中,單擊右鍵選擇NewJSP File選項(xiàng),彈出如圖2-2所示的對話框,在File name中輸入exam2_1_sum.jsp,單擊Finish之后進(jìn)入JSP頁面編輯窗口,輸入代碼如程序2-1。2.1.2 新知識點(diǎn)JSP頁面組成、聲明、代碼段、表達(dá)式、注釋JSP頁面由兩部分組成,一部分為靜態(tài)部分,即HTML標(biāo)記,用來完成數(shù)據(jù)頁面顯示;另一部分為動態(tài)部分,用來完成數(shù)據(jù)處理,包括腳本元素、指令元素和動作元素。腳本元素用來嵌入Java代碼,這些Java代碼將成為轉(zhuǎn)換得到的Servlet的一部分;JSP指令元素用來從整體上控制Servlet的結(jié)構(gòu);動

20、作元素用來引入現(xiàn)有的組件或者控制JSP引擎的行為。 聲明 JSP中聲明部分可以進(jìn)行變量、方法和類的聲明,其一般在標(biāo)簽中進(jìn)行。其語法格式為。如在程序2-1中,進(jìn)行了求和方法的聲明。下邊進(jìn)行一個變量的聲明,如程序2-2。 代碼段 在JSP頁面中嵌入Java代碼來執(zhí)行特定的功能,其放置在標(biāo)記中。格式為: 這種Java代碼在Web服務(wù)器響應(yīng)請求時就會運(yùn)行。如程序2-3,定義2個變量并輸出。 表達(dá)式 JSP表達(dá)式可以把JSP頁面中的數(shù)據(jù)直接輸出到頁面,其格式為: 表達(dá)式一次只能使用一個表達(dá)式,并且該表達(dá)式是完整的。在表達(dá)式的語句中不能使用分號。如程序2-4,進(jìn)行

21、了變量輸出這種代碼段的主要功能是輸出一個變量或常量,有時候?qū)⑵浣凶霰磉_(dá)式輸出。使用方法見程序2-5所示。 注釋在JSP中支持兩種注釋,一種是顯式注釋,這種注釋客戶端允許查看的;另一種是隱式注釋,這種注釋客戶端是看不到的。1. 顯式注釋語法(HTML注釋) !- 這是顯式注釋 2. 隱式注釋語法(1) / Java提供的單行注釋 (2) /* Java提供的多行注釋 */ (3) 2.1.3 擴(kuò)展代碼編寫規(guī)范好的代碼應(yīng)該容易理解,并且見名知意的,因此大家都需要遵守一些約定,下面介紹一些常規(guī)的編寫規(guī)范。1JSP文件命名JSP文件名稱要以小寫字母命名,名稱要體現(xiàn)出該頁面的意義,最好能夠

22、與模塊名稱聯(lián)系在一起。例如: login.jsp -登錄頁面register.jsp -注冊頁面message.jsp -消息頁面2Java Web項(xiàng)目文件夾組織規(guī)范Java Web項(xiàng)目的目錄結(jié)構(gòu)為: src -存放java源文件的文件夾WebContent - web站點(diǎn)文件存放文件夾|-images -圖片文件夾|-css -樣式文件夾|-js - js文件夾|- -其他功能模塊文件夾(存放與某個功能模塊相關(guān)的資源) |-WEB-INF -網(wǎng)站配置及類和庫文件夾|-classes - 存放類編譯后的字節(jié)碼文件的文件夾|-lib - 存放jar文件的文件夾2.2 制作一個帶包含文件的JSP頁

23、面2.2.1 任務(wù)描述與實(shí)現(xiàn)實(shí)現(xiàn)靜態(tài)包含功能,編寫三個不同類型的文件,然后將這三個不同類型的文件靜態(tài)包含于某一JSP文件中2.2.2 新知識點(diǎn)JSP指令:page指令、include指令JSP指令是為JSP引擎而設(shè)計(jì)的。它們并不直接產(chǎn)生任何可見的輸出,而只是告訴引擎如何處理其余的JSP頁面。JSP指令有三種,分別為頁面設(shè)置指令page、頁面包含指令include和標(biāo)記指令taglib。JSP指令一般語法形式為: 1page指令page指令就是通過設(shè)置內(nèi)部的多個屬性來定義JSP文件中的全局特性。需要注意的是,page指令只能對當(dāng)前自身頁面進(jìn)行設(shè)置,即每個頁面都有自身的page指令。如果沒有對屬性

24、進(jìn)行設(shè)置,JSP將使用默認(rèn)指令屬性值。2include指令在JSP開發(fā)中,可以將一些重用的代碼寫入一個單獨(dú)的文件中,然后通過include指令引用該文件,從而緩解代碼的冗余問題,修改也比較方便。Include指令語法格式為: inlcude也被稱為靜態(tài)包含指令,包含的文件可以是JSP文件、HTML文件、文本文件和Java程序段。靜態(tài)包含指令只是簡單的將內(nèi)容合在一起顯示,所以,在一個完整的頁面中,對于、等元素只能出現(xiàn)一次,如果重復(fù)出現(xiàn),則會造成HTML錯誤。在2.2.1節(jié)任務(wù)中,其主要采用include指令完成不同類型文件的包含。2.2.3 擴(kuò)展taglib指令的使用使用指令在JSP文件中導(dǎo)入標(biāo)

25、簽,以便在JSP中使用標(biāo)簽方便地完成一些動作。Taglib指令的語法為: uri是一個URI標(biāo)識標(biāo)記庫描述器。一個標(biāo)記庫描述器用來唯一的命名一組定制的標(biāo)記,并且告訴包容器如何處理特殊的標(biāo)記。Prefix定義一個prefix:tagname形式的字符串前綴,用于定義定制的標(biāo)記。2.3 制作一個簡單的JSP網(wǎng)站2.3.1 任務(wù)描述與實(shí)現(xiàn) 制作一個簡單的JSP網(wǎng)站制作一個簡單的JSP網(wǎng)站。網(wǎng)站主題為產(chǎn)品網(wǎng)站,主要包括網(wǎng)站首頁、產(chǎn)品和下載頁面等,效果如圖2-102-12所示。要求公共部分采用單獨(dú)文件,并被包含。開發(fā)過程采用Eclipse和Dreamweaver搭配開發(fā),設(shè)計(jì)顯示界面部分全

26、部用Dreamweaver實(shí)現(xiàn),JSP程序部分在Eclipse中編寫,最后在Eclipse中測試運(yùn)行。2.3.2 新知識點(diǎn)JSP動作指令、在JSP中,還存在另外一類標(biāo)記,其符合XML的語法格式。利用這些標(biāo)記可以達(dá)到控制Servlet引擎的作用,如動態(tài)的插入文件,調(diào)用JavaBean,頁面重定向等,這類標(biāo)記稱為JSP動作標(biāo)記。JSP的常用動作標(biāo)記有、等。2.3.3 擴(kuò)展的使用動作指令表示把當(dāng)前的頁面控制權(quán)轉(zhuǎn)向另外一個對象,該對象可以是一個HTML文件、JSP文件或者一個Servlet文件。的語法格式: jsp:forward page=”轉(zhuǎn)向的文件路徑|”/ 或者jsp:forward page

27、=”轉(zhuǎn)向的文件路徑|” 在上述格式中,page屬性為一個字符串或者一個表達(dá)式,用來表示轉(zhuǎn)向文件的路徑;字句指令為傳遞參數(shù),name指定參數(shù)名,value指定參數(shù)值?!窘虒W(xué)小結(jié)】 本章主要介紹了JSP頁面的組成、指令、動作等技術(shù),重點(diǎn)介紹了JSP的page指令、include指令的使用,、等動作指令的使用。通過本章的學(xué)習(xí),讀者可以建立一個簡單功能的JSP網(wǎng)站。課題:第三章 JSP內(nèi)置對象【教學(xué)目標(biāo)】掌握J(rèn)SP常用內(nèi)置對象及使用方法【教學(xué)重點(diǎn)】JSP內(nèi)置對象【教學(xué)難點(diǎn)】JSP內(nèi)置對象【教學(xué)方法】講解【教學(xué)地點(diǎn)】教學(xué)樓、綜合樓【課時安排】4課時【教學(xué)過程】3.1獲取客戶端數(shù)據(jù)3.1.1 任務(wù)描述與實(shí)

28、現(xiàn) 實(shí)現(xiàn)用戶注冊信息獲取及顯示編寫用戶注冊功能,注冊信息包括用戶名、密碼、性別、E-mail、熟練開發(fā)語言,如圖3-1所示,提交后,顯示用戶輸入的數(shù)據(jù)。為了提高開發(fā)效率,開發(fā)過程采用Eclipse和Dreamweaver搭配開發(fā),設(shè)計(jì)顯示界面部分全部用Dreamweaver實(shí)現(xiàn),代碼在界面制作自動生成基礎(chǔ)上在Eclipse中編寫,最后在Eclipse中測試運(yùn)行。3.1.2 新知識點(diǎn)JSP內(nèi)置對象、request JSP內(nèi)置對象概述為了簡化Web頁面的開發(fā)過程,JSP提供了一些由容器實(shí)現(xiàn)和管理的對象,這些對象在JSP中可以直接使用,不需要JSP頁面編寫進(jìn)行實(shí)例化,可

29、以直接使用,此類對象稱之為JSP的內(nèi)置對象。JSP中規(guī)范定義了9個內(nèi)置對象,分別是request、response、session、application、out、page、pageContext和exception。其說明見表3-1。表3- 1 JSP內(nèi)置對象對象 所屬類 說明 request javax.servlet.http.HttpServletRequest 封裝了客戶端的請求信息response javax.servlet.http.HttpServletResponse包含了響應(yīng)客戶請求的相關(guān)信息session javax.servlet.http.HttpSession 與當(dāng)

30、前請求相關(guān)的會話application javax.servlet.ServletContext 存放全局變量,實(shí)現(xiàn)用戶間的數(shù)據(jù)共享out javax.servlet.jsp.JspWriter 向客戶端輸出數(shù)據(jù)的對象page java.lang.Object 指當(dāng)前JSP頁面本身,作用類似于this pageContext javax.servlet.jsp.PageContext 提供了對JSP頁面內(nèi)所有的對象及名字空間的訪問config javax.servlet.servletConfig Servlet初始化時,向其傳遞配置參數(shù)的對象exception java.lang.Throw

31、able 頁面運(yùn)行中發(fā)生異常而產(chǎn)生的對象3.1.3 擴(kuò)展中文亂碼處理、request中其他信息獲取 獲取顯示含有中文的信息客戶端提交數(shù)據(jù)當(dāng)含有中文時,JSP不能正常顯示。如將節(jié)的表單增加個人簡介后,程序?yàn)閑xam3_1_reg_2.jsp,此處略,運(yùn)行效果如圖3-6,其提交后顯示會是亂碼,如圖3-7所示。因此,要對含有中文的表單數(shù)據(jù),要進(jìn)行編碼設(shè)置。其主要方法為在獲取程序中設(shè)置字符集,使request其字符集與頁面字符集保持一致。 獲得客戶端請求的相關(guān)信息HttpServletRequest包含很多可以獲取與當(dāng)前請求相關(guān)信息的方法,具體可查看API文檔

32、,下面的例子將展示其中一部分方法的使用,exam3_1_request.jsp是提交請求的頁面,exam3_1_showInfo.jsp是處理請求的頁面,在此頁面中將調(diào)用request對象的各種方法,以獲取與當(dāng)前請求相關(guān)的一些信息。3.2 處理服務(wù)器響應(yīng)3.2.1 任務(wù)描述與實(shí)現(xiàn) 實(shí)現(xiàn)四則運(yùn)算測試功能針對剛學(xué)會整數(shù)四則運(yùn)算的小學(xué)生,開發(fā)一個測試網(wǎng)站。要求在測試頁面中能隨機(jī)產(chǎn)生一個四則運(yùn)算式,當(dāng)用戶在userAnswer表單域內(nèi)填寫答案并提交后,獲取用戶所填的答案,判斷答案的對錯后,如果錯誤則進(jìn)入錯誤提示頁面;如果正確則進(jìn)入正確頁面3.2.2 新知識點(diǎn)response、out 3.

33、2.2.1 response JSP的內(nèi)置對象response代表服務(wù)器端返回給客戶端的相應(yīng),其主要用于處理響應(yīng)數(shù)據(jù)。該對象的方法主要包括處理響應(yīng)頭的相關(guān)屬性的方法、設(shè)定響應(yīng)狀態(tài)碼的方法、重定向方法、設(shè)置響應(yīng)體相關(guān)內(nèi)容和屬性的方法等等。其常用方法見表3-3所示。表3- 3 response對象的常用方法方法 說明 void setHeader(String name, String value) 為名為name的響應(yīng)頭設(shè)定值為value oolean containsHeader(String name) 判斷響應(yīng)對象中是否有名為name的頭void addCookie(Cookie cook

34、ie) 將參數(shù)指定的cookie添加到response對象中void sendRedirect(String location) 將頁面重定向到參數(shù)所指定的URL void setContentType(String type) 設(shè)置響應(yīng)的MIME類型PrintWriter getWriter() 得到返回客戶端的打印流 out對象 out對象是javax.servlet.jsp.JspWriter類的實(shí)例,表示一個輸出流,用于向客戶端輸出數(shù)據(jù)。查閱API文檔可知,JspWriter對象和由ServletResponse的getWriter()方法得到的PrintWriter對象

35、是有依賴關(guān)系的。如果頁面沒有緩沖區(qū),那么寫入JspWriter對象的數(shù)據(jù)將直接通過PrintWriter對象進(jìn)行輸出;如果頁面有緩沖區(qū),則直到緩沖區(qū)滿且如setContentType()等操作都合法時才創(chuàng)建PrintWriter對象,由PrintWrtier對象進(jìn)行輸出。3.2.3 擴(kuò)展設(shè)置響應(yīng)的MIME類型任務(wù):將一個文本文件包含在jsp頁面中,且在顯示頁面內(nèi)容之前先讓用戶選擇查看文件所使用的方式,將三種可選方式(文本方式、網(wǎng)頁方式、word文檔方式)放在下拉框中供用戶選擇。當(dāng)用戶選擇并點(diǎn)擊“查看按鈕”后,按用戶所選方式展現(xiàn)內(nèi)容。3.3 存儲用戶會話3.3.1 任務(wù)描述與實(shí)現(xiàn)

36、判斷用戶是否已登錄實(shí)現(xiàn)如下功能:用戶成功登錄后,只要未關(guān)閉瀏覽器的情況下,可隨時訪問本站點(diǎn)的任何頁面(當(dāng)然此處本站點(diǎn)只有登錄頁面和歡迎頁面),如果用戶在未登錄的情況下訪問歡迎頁面的話,給出相應(yīng)的提示,并在5秒后跳轉(zhuǎn)到登錄頁面。實(shí)現(xiàn):當(dāng)用戶在登錄頁面(exam3_3_login.jsp)輸入用戶名和密碼并點(diǎn)擊登錄后,在處理頁面exam3_3_login_do.jsp(代碼如程序3-12所示)中判斷用戶名和密碼是否正確,如果正確,即登錄成功,則將名為“username”,值為用戶所輸入的用戶名的屬性添加到session對象中,然后進(jìn)入exam3_3_welcome.jsp(代碼如程序3-13所示)

37、中;如果用戶名或密碼不正確,則輸出提示“用戶名或密碼不正確,5秒后為您跳轉(zhuǎn)回登錄頁面”,并在5秒后跳轉(zhuǎn)回登錄頁面。如果用戶沒有登錄,而直接訪問exam3_3_welcome.jsp,則輸出提示“您必須先登錄,5秒后為您跳轉(zhuǎn)回登錄頁面”,并在5秒后跳轉(zhuǎn)回登錄頁面。3.3.2 新知識點(diǎn)session、aplication session session(會話)是用來在訪問一個網(wǎng)站時發(fā)出的多個頁面請求或者在多次頁面跳轉(zhuǎn)之間識別同一個用戶并且存儲這個用戶的相關(guān)信息的一種方式。通常從一個客戶連接到某個服務(wù)器開始,直到他關(guān)閉瀏覽器離開這個服務(wù)器為止,稱之為一次會話。Servlet容器使用j

38、avax.servlet.http.HttpSession這個接口在HTTP客戶端和服務(wù)器端之間創(chuàng)建一個會話,JSP的內(nèi)置對象session就是這個接口的一個實(shí)例。一個session通常只對應(yīng)一個用戶,它有一定的生存時間,它可以使同一個用戶在訪問同一個Web站點(diǎn)時在多個頁面連接和請求之間共享數(shù)據(jù)。服務(wù)器通常通過cookie或者重寫URL的方式來維持session,不過開發(fā)者無需關(guān)心這些細(xì)節(jié)。 HttpSession接口的方法主要分為兩類,一類是查看和操作關(guān)于這個session的信息的方法,如session的ID、創(chuàng)建時間、最近訪問時間等;另一類方法是將對象綁定到session中,以能夠使用戶信

39、息在客戶端與服務(wù)器端的多次連接中能夠共享。 application JSP內(nèi)置的application對象是javax.servlet.ServletContext類的一個實(shí)例,可以通過它和Servlet容器進(jìn)行通信,如獲取一個文件的MIME類型,轉(zhuǎn)發(fā)請求,寫日志文件等等;也可以通過它共享一些全局信息。Application對象表示Servlet的上下文,每臺Java虛擬機(jī)上的同一個Web應(yīng)用只有一個上下文,即當(dāng)Web應(yīng)用被部署到服務(wù)器上,服務(wù)器啟動時就創(chuàng)建一個application對象,所有訪問該應(yīng)用的客戶都共享同一個application對象,直到服務(wù)器關(guān)閉。因此可以通過將一

40、些信息放在application對象里,以實(shí)現(xiàn)全局共享,當(dāng)然要注意這個“全局”只是相對的,因?yàn)椴煌腏ava虛擬機(jī)上的Servlet上下文也是不同的。3.3.3 擴(kuò)展cookie 記錄用戶以往訪問當(dāng)前站點(diǎn)的相關(guān)信息任務(wù)描述:當(dāng)用戶訪問本網(wǎng)站的登錄頁面時,能夠自動顯示出該用戶以前訪問本網(wǎng)站時曾經(jīng)使用過的用戶名。實(shí)現(xiàn)過程:這樣的功能一般都是基于cookie實(shí)現(xiàn)的。首先創(chuàng)建一個web應(yīng)用,當(dāng)用戶訪問本網(wǎng)站的登錄頁面exam3_3_cookie_login.jsp(代碼如程序3-17所示)時,該頁面讀取客戶端的cookie,如果cookie中存在username記錄,則在登錄表單的用戶名

41、一欄中自動填入該username值。當(dāng)用戶成功登錄后,將該username存入cookie中。 知識點(diǎn):Cookie簡介Cookie 是 Web服務(wù)器發(fā)送給客戶端的一小段信息。如果服務(wù)器需要在客戶端記錄某些數(shù)據(jù)時,就可以向客戶端發(fā)送Cookie,客戶端接收并保存該 Cookie,而且客戶端每次訪問該服務(wù)器上的頁面時就會將 Cookie 隨請求數(shù)據(jù)一同發(fā)送給服務(wù)器。下面從向客戶端發(fā)送Cookie以及從客戶端讀取Cookie兩方面來介紹Cookie的使用方法。1.向客戶端發(fā)送Cookie 首先需要創(chuàng)建Cookie對象:Cookie c=new Cookie(“cookieName”,

42、 “cookieValue”);然后需要調(diào)用setMaxAge(long time)為Cookie對象設(shè)置有效時間(該時間參數(shù)以秒為單位),不然瀏覽器關(guān)閉時Cookie就會被刪除;最后使用HttpServletResponse對象的addCookie(Cookie c)方法把Cookie對象添加到HTTP響應(yīng)頭中發(fā)送到客戶端。2.從客戶端讀取Cookie 首先獲取客戶端上傳的Cookie數(shù)組:調(diào)用HttpServeltRequest對象的getCookies()得到一個Cookie對象的數(shù)組;然后遍歷該數(shù)組,找尋需要的Cookie對象:通過Cookie的getName()方法,獲取Cookie

43、對象的name屬性,通過getValue()方法獲取Cookie對象的值?!窘虒W(xué)小結(jié)】 本章介紹了JSP的各個內(nèi)置對象,并著重講解了request、response、session、application、out這幾個最常用的對象,這些對象在JSP開發(fā)中具有很重要的地位,希望讀者能夠結(jié)合本章任務(wù)理解這些對象,并能夠掌握其用法。對于其它未詳解的對象,可參考相關(guān)的API文檔。課題:第四章 JDBC與數(shù)據(jù)庫應(yīng)用【教學(xué)目標(biāo)】掌握通過JDBC連接數(shù)據(jù)庫并進(jìn)行數(shù)據(jù)操作的方法【教學(xué)重點(diǎn)】連接數(shù)據(jù)庫和讀取數(shù)據(jù)庫、寫入數(shù)據(jù)庫【教學(xué)難點(diǎn)】連接數(shù)據(jù)庫和讀取數(shù)據(jù)庫、寫入數(shù)據(jù)庫【教學(xué)方法】講解、演示【教學(xué)地點(diǎn)】教學(xué)樓、

44、綜合樓【課時安排】4課時【教學(xué)過程】 4.1 連接數(shù)據(jù)庫并讀取數(shù)據(jù)4.1.1 任務(wù)描述與實(shí)現(xiàn)通過JDBC連接Mysql數(shù)據(jù)庫,查詢hncst數(shù)據(jù)庫中users數(shù)據(jù)表中的數(shù)據(jù),并以表格形式顯示,如表4-1所示。Users表的結(jié)構(gòu)如表4-1所示。表4- 1 任務(wù)執(zhí)行結(jié)果用戶名 密碼 性別 Email 熟練開發(fā)語言leiyanrui 123456 female leiyanruiJAVA,C,C# 4.1.2 新知識點(diǎn)JDBC概述、JDBC連接Mysql數(shù)據(jù)庫 JDBC簡介JDBC的英文名稱是Java Database Connecivity,中文名稱是Java數(shù)據(jù)庫連接,它是一種用于

45、執(zhí)行SQL語句的Java API類包,由一組用Java語言編寫的類和接口組成,通過它可以構(gòu)建更高級的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠用純 Java API 編寫數(shù)據(jù)庫應(yīng)用程序。JDBC是Java操作數(shù)據(jù)庫的方法,由SUN提供。有了JDBC,向各種關(guān)系數(shù)據(jù)發(fā)送SQL語句就是一件很容易的事。換言之,有了JDBC API,就不必為訪問MySQL數(shù)據(jù)庫專門寫一個程序,為訪問Oracle數(shù)據(jù)庫又專門寫一個程序。使用JDBC API,程序員只需用JDBC API寫一個程序就夠了,它可向相應(yīng)數(shù)據(jù)庫發(fā)送SQL調(diào)用,這和Microsoft的ODBC技術(shù)是類似的,ODBC是由Microsoft公司倡導(dǎo)并得到業(yè)界普

46、遍響應(yīng)的數(shù)據(jù)庫連接技術(shù),通過它可以使用一組通用的接口與各種數(shù)據(jù)庫進(jìn)行連接,但這僅限于Windows平臺;而JDBC不同,使用Java編寫的應(yīng)用程序可以在任何支持Java的平臺上運(yùn)行,程序員甚至不必在不同的平臺上編寫不同的應(yīng)用。這也是Java語言“編寫一次,處處運(yùn)行”的優(yōu)勢。 Mysql數(shù)據(jù)庫簡介MySQL是一個小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典MySQL AB公司。在2008年1月16日被Sun公司收購。2009年,Sun又被Oracle收購。目前MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn)受到了眾多中

47、小型網(wǎng)站制作者的青睞。MySQL的開發(fā)也得到了很多著名廠商和技術(shù)團(tuán)隊(duì)支持。 JDBC連接Mysql數(shù)據(jù)庫的基本步驟1. 下載驅(qū)動。要通過JDBC連接數(shù)據(jù)庫需要使用數(shù)據(jù)庫廠商提供的JDBC Drive。在Mysql官方網(wǎng)站下載其JDBC驅(qū)動,官網(wǎng)地址:,下載頁面如圖4-2所示。2將下載好的驅(qū)動mysql-connector-java-5.1.17-bin.jar文件(此處的5.1.17為驅(qū)動版本號),復(fù)制到當(dāng)前工程的WEB-INF的lib目錄中,如圖4-3、圖4-4所示。3.編寫數(shù)據(jù)庫連接程序。(1)加載驅(qū)動。Class.forName(“com.mysql.jdbc.Driver

48、”).newInstance(); (2)建立連接對象。String url=”jdbc:mysql:/localhost:3306/hncst”;/連接字符串Connection conn=DriverManager.getConnection(url); (3)建立Statement對象或PreparedStatement對象。 Statement stmt=conn.createStatement();/創(chuàng)建Statement 對象String sql=”select * from users where oolean=? And password=?”; PreparedStateme

49、nt pstmt=conn.prepareStatement(sql); /創(chuàng)建Preparedment 對象pstmt.setString(1,”admin”); pstmt.setString(2,”liubin”); Statement是PreparedStatement的父接口。Statement 對象用于執(zhí)行不帶參數(shù)的簡單SQL語句;PreparedStatement 對象用于執(zhí)行預(yù)編譯SQL語句;也就是說,Statement接口提供了基本方法,而PreparedStatement接口添加了處理 IN 參數(shù)的方法。對于需多次執(zhí)行的SQL語句,用PreparedStatement即可以

50、減輕編碼負(fù)擔(dān),又可以提高系統(tǒng)效率。(4)執(zhí)行SQL語句。執(zhí)行SQL查詢1String sql=”select * from users”; ResultSet rs=stmt.executeQuery(sql); 執(zhí)行insert,update,delete等語句,先定義sql 2stmt.executeUpdate(sql); Statement 接口提供了三種執(zhí)行 SQL 語句的方法:executeQuery、executeUpdate 和 execute。使用哪一個方法由 SQL 語句所產(chǎn)生的內(nèi)容決定。(5)關(guān)閉對象,釋放資源。Rs.close(); stmt.close(); conn

51、.close(); 通過上面五個步驟,就可以完成JDBC連接數(shù)據(jù)庫,執(zhí)行SQL語句,并在執(zhí)行完后釋放數(shù)據(jù)庫資源。4.1.3 擴(kuò)展JDBC連接SQL Server、Oracle JDBC連接SQL Server SQL Server是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。SQL Server使用集成的商業(yè)智能工具提供企業(yè)級的數(shù)據(jù)管理,可以為不同規(guī)模的企業(yè)提供不同的數(shù)據(jù)管理解決方案。下邊以SQL Server2005為例,介紹JDBC連接SQL Server數(shù)據(jù)庫。實(shí)現(xiàn)過程: 通過JDBC連接SQL Server的hncst數(shù)據(jù)庫,實(shí)例文件為exam4_2_sqlserver.jsp,具體步驟

52、如下: 1.在Microsoft SQL Server的官網(wǎng)下載SQL Server JDBC 驅(qū)動(不同版本的數(shù)據(jù)庫對應(yīng)不同驅(qū)動程序)。將下載好的驅(qū)動sqljdbc.jar文件復(fù)制到網(wǎng)站的lib目錄中。2.將SQL Server的驗(yàn)證方式改為混合驗(yàn)證方式,并設(shè)置合法用戶名和密碼。打開Microsoft SQL Server Management Studio Express,通過右鍵點(diǎn)擊數(shù)據(jù)庫“服務(wù)器屬性”面板,在“安全”選項(xiàng)里進(jìn)行配置,重啟SQL Server后生效, JDBC連接Oracle 與JDBC連接Mysql、SQLServer類似,需要先下載Oracle數(shù)據(jù)庫的J

53、DBC驅(qū)動,并將其放置在網(wǎng)站的lib目錄下。在此不再詳細(xì)描述。其次,創(chuàng)建連接文件JDBCOracleConnection.jsp,代碼如程序4-3所示。4.2 寫入數(shù)據(jù)庫4.2.1 任務(wù)描述與實(shí)現(xiàn)編寫程序完成用戶注冊功能,即通過JDBC連接數(shù)據(jù)庫,并向users表中添加一條新記錄。注冊的資料包含姓名、密碼、性別、熟練開發(fā)語言、個人簡介。4.2.2 新知識點(diǎn)Connection、Statement、ResultSet等對象的常用方法在Java語言中提供了豐富的類和接口用于數(shù)據(jù)庫編程,利用它們可以方便地進(jìn)行數(shù)據(jù)的訪問和處理。下面主要介紹Java.sql包中提供的常用類和接口。1Driver接口每個

54、數(shù)據(jù)庫驅(qū)動程序必須實(shí)現(xiàn)Driver接口,對于JSP開發(fā)者來說只要使用Driver接口就可以了。在編程中要連接數(shù)據(jù)庫必須要裝載特定的數(shù)據(jù)庫驅(qū)動程序(Driver),格式如下: Class.forName(“數(shù)據(jù)庫商提供的驅(qū)動程序名稱”); 在使用Class.forName之前,應(yīng)先使用Import語句導(dǎo)入java.sql包,即在Java源程序中為:import java.sql.*; 在JSP程序中為: 2DriverManager接口java.sql.DriverManager類負(fù)責(zé)管理JDBC驅(qū)動程序的基本服務(wù),是JDBC的管理層,作用于用戶和驅(qū)動程序之間,用來管理數(shù)據(jù)庫中的所有驅(qū)動程序。它可以跟蹤可用的驅(qū)動程序,注冊、注銷以及為數(shù)據(jù)庫連接合適的驅(qū)動程序,設(shè)置登錄時間限制等。4Statement接口Statement接口用于在已經(jīng)建立連接的基礎(chǔ)上向數(shù)據(jù)庫發(fā)送SQL語句。Statement接口中包含了執(zhí)行SQL語句和獲取返回結(jié)果的方法。在JDBC中有3種Statement對象:Statement、PreparedStateme

溫馨提示

  • 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

提交評論