基于java的學(xué)習(xí)管理系統(tǒng)(lms)—前臺(tái)程序設(shè)計(jì)-畢業(yè)論文_第1頁(yè)
已閱讀1頁(yè),還剩65頁(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、<p>  基于JAVA的學(xué)習(xí)管理系統(tǒng)(LMS)</p><p><b>  —前臺(tái)程序設(shè)計(jì)</b></p><p>  [摘要] 學(xué)習(xí)管理系統(tǒng)是指通過(guò)計(jì)算機(jī)、網(wǎng)絡(luò)等數(shù)字化方法進(jìn)行學(xué)習(xí)與教學(xué)的系統(tǒng),它充分利用IT技術(shù)為教學(xué)活動(dòng)提供了一個(gè)具有全新溝通機(jī)制與資源豐富的學(xué)習(xí)環(huán)境,實(shí)現(xiàn)了一種新的學(xué)習(xí)方式。本系統(tǒng)是基于Java平臺(tái),Struts框架,MVC設(shè)計(jì)模式實(shí)現(xiàn)

2、的。提供了一個(gè)簡(jiǎn)潔、高效、穩(wěn)定的在線學(xué)習(xí)管理系統(tǒng),旨在為教師、學(xué)生的教與學(xué)提供一個(gè)方便的交流平臺(tái)。</p><p>  首先本文對(duì)系統(tǒng)所采用的JSP,Struts,JSTL和Ajax技術(shù)的概念,原理進(jìn)行了簡(jiǎn)要的介紹,接下來(lái)對(duì)系統(tǒng)Web界面的設(shè)計(jì)和實(shí)現(xiàn)作了詳細(xì)的介紹。系統(tǒng)web界面即前臺(tái)部分由10個(gè)功能模塊組成,包括announcement,calendar,course,fourm,homework,resour

3、ce,email,option,login和grade模塊。本文詳細(xì)介紹了各個(gè)模塊的頁(yè)面表單設(shè)計(jì),頁(yè)面流程等。在web 用戶界面部分開(kāi)發(fā)過(guò)程中,采用了大量的struts和jstl標(biāo)簽,使得頁(yè)面顯得簡(jiǎn)潔,高效而又不失美觀。</p><p>  最后,本文對(duì)系統(tǒng)的運(yùn)行結(jié)果做了大致的介紹,包括對(duì)主要用戶界面的詳細(xì)說(shuō)明。</p><p>  關(guān)鍵詞:Struts JSTL Ajax</p

4、><p>  JAVA based learn management system (LMS)</p><p>  —foreground module design </p><p>  [Abstract] Learning Management System implements a nearly new way to study through computer

5、 and network to do teaching and studying activity. Learning Management Systsem relies on IT technology, this supplies students and teachers an environment with rich resources and convenient way to communicate with each o

6、ther. This system is based on Java platform, so it can run on every OS.</p><p>  First, the concept and architecture of JSP, STRUTS, JSTL, AJAX, which used in this system was introduced. And then the detail

7、designing of the web UI part was introduced. The web UI part is consisted of 10 models, such as announcement, calendar, course, fourm, homework, resource, email, option, login and grade model. The disignning and implemen

8、ting of each model was introduced, readers can read the detail of designning of the web forms and the data flow of the web pages in this article also. In </p><p>  At last, the running results of this system

9、, and the detail of each result were introduced.</p><p>  Keywords: Struts JSTL Ajax </p><p><b>  目錄</b></p><p><b>  引言1</b></p><p>  第一章 St

10、ruts,JSP,JSTL,Ajax概述2</p><p>  1.1 Struts框架的介紹2</p><p>  1.1.1 Struts的概念和體系結(jié)構(gòu)2</p><p>  1.1.2 Struts框架的工作原理和組件4</p><p>  1.1.3 Struts標(biāo)簽庫(kù)10</p><p>  1.

11、2 JSP的介紹22</p><p>  1.2.1 JSP的概念和體系結(jié)構(gòu)23</p><p>  1.2.2 JSP標(biāo)簽庫(kù)25</p><p>  1.2.3 JSP的優(yōu)缺點(diǎn)26</p><p>  1.3 JSTL的介紹26</p><p>  1.3.1 JSTL的概念和體系結(jié)構(gòu)26</p&g

12、t;<p>  1.3.2 JSTL的標(biāo)簽介紹28</p><p>  1.3.3 JSTL的優(yōu)缺點(diǎn)28</p><p>  1.4 Ajax的介紹29</p><p>  1.4.1 Ajax的概念和體系結(jié)構(gòu)29</p><p>  1.4.2 Ajax的優(yōu)缺點(diǎn)29</p><p>  1.4

13、.3 Ajax的框架介紹30</p><p>  第二章 系統(tǒng)總體設(shè)計(jì)32</p><p>  2.1 系統(tǒng)目標(biāo)32</p><p>  2.2 系統(tǒng)特性32</p><p>  2.3 Web UI模塊設(shè)計(jì)32</p><p>  第三章 系統(tǒng)詳細(xì)設(shè)計(jì)34</p><p>  3.

14、1 Web UI詳細(xì)設(shè)計(jì)34</p><p>  3.1.1 announcement模塊詳細(xì)設(shè)計(jì)34</p><p>  3.1.2 calendar模塊詳細(xì)設(shè)計(jì)34</p><p>  3.1.3 course模塊詳細(xì)設(shè)計(jì)35</p><p>  3.1.4 forum模塊詳細(xì)設(shè)計(jì)37</p><p> 

15、 3.1.5 homework模塊詳細(xì)設(shè)計(jì)38</p><p>  3.1.6 resource模塊詳細(xì)設(shè)計(jì)39</p><p>  3.1.7 email模塊詳細(xì)設(shè)計(jì)39</p><p>  3.1.8 option模塊詳細(xì)設(shè)計(jì)40</p><p>  3.1.9 login模塊詳細(xì)設(shè)計(jì)41</p><p>

16、;  3.1.10 grade模塊詳細(xì)設(shè)計(jì)41</p><p>  第四章 運(yùn)行結(jié)果44</p><p><b>  結(jié)論53</b></p><p><b>  致謝語(yǔ)54</b></p><p><b>  [參考文獻(xiàn)]55</b></p><

17、p><b>  附 錄56</b></p><p><b>  Contents</b></p><p><b>  preface1</b></p><p>  chapter 1 CONCEPT OF STRUTS,JSP,JSTL,AJAX2</p><p>

18、;  1.1 INTRODUCTION OF STRUTS2</p><p>  1.1.1 Concept and Architecture of Struts2</p><p>  1.1.2 Theory and Components of Struts4</p><p>  1.1.3 Tag library of Struts10</p>

19、;<p>  1.2 INTRODUCTION OF JSP22</p><p>  1.2.1 Concept and Architecture of JSP23</p><p>  1.2.2 Tag library of JSP25</p><p>  1.2.3 Advantages and Disadvantages of JSP26

20、</p><p>  1.3 INTRODUCTION OF JSTL26</p><p>  1.3.1 Concept and Architecture of JSTL26</p><p>  1.3.2 Introduction of JSTL's Library28</p><p>  1.3.3 Advantages

21、and Disadvantages of JSTL28</p><p>  1.4 INTRODUCTION TO AJAX29</p><p>  1.4.1 Concept and Architecture of Ajax29</p><p>  1.4.2 Advantages and Disadvantages of Ajax29</p>

22、<p>  1.4.3 Some Useful Ajax Framework30</p><p>  chpter 2 GLOBAL DESIGNING32</p><p>  2.1 TARGET OF SYSTEM32</p><p>  2.2 PREFERENCES OF SYSTEM32</p><p>  2

23、.3 DESIGNING OF WEB UI32</p><p>  chapter 3 DETAIL DESIGNING34</p><p>  3.1 DETAIL DESIGNING OF WEB UI MODULES34</p><p>  3.1.1 Detail Designing of Announcement Module34</p&g

24、t;<p>  3.1.2 Detail Designing of Calendar Module34</p><p>  3.1.3 Detail Designing of Course Module35</p><p>  3.1.4 Detail Designing of Fourm Module37</p><p>  3.1.5 Det

25、ail Designing of Homework Module38</p><p>  3.1.6 Detail Designing of Resource Module39</p><p>  3.1.7 Detail Designing of Email Module39</p><p>  3.1.8 Detail Designing of Optio

26、n Module40</p><p>  3.1.9 Detail Designing of Login Module41</p><p>  3.1.10 Detail Designing of Grade Module41</p><p>  chapter 4 running RESULT44</p><p>  conclus

27、ion53</p><p>  ACKNOWLEDGEMENT54</p><p>  REFERENCES55</p><p>  SUPPLEMENT56</p><p><b>  引言</b></p><p>  學(xué)習(xí)管理系統(tǒng)是一個(gè)教育單位不可缺少的部分,它的內(nèi)容對(duì)于學(xué)校的決策者和

28、管理者來(lái)說(shuō)都至關(guān)重要,所以學(xué)習(xí)管理系統(tǒng)應(yīng)該能夠?yàn)橛脩籼峁┏渥愕男畔⒑涂旖莸牟樵兪侄?。但一直以?lái)人們使用傳統(tǒng)人工的方式管理教學(xué)活動(dòng),這種管理方式存在著許多缺點(diǎn),如:效率低、保密性差。另外,時(shí)間一長(zhǎng),將產(chǎn)生大量的文件和數(shù)據(jù),這對(duì)于查找、更新和維護(hù)都帶來(lái)了不少的困難。隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識(shí),它已進(jìn)入人類(lèi)社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來(lái)越重要的作用。作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對(duì)教學(xué)活動(dòng)進(jìn)行管理

29、,具有著手工管理所無(wú)法比擬的優(yōu)點(diǎn)。例如,檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、保密性好、壽命長(zhǎng)、成本低等。這些優(yōu)點(diǎn)能夠極大地提高學(xué)生教學(xué)活動(dòng)管理的效率,也是企業(yè)的科學(xué)化、正規(guī)化管理,與世界接軌的重要條件。因此,開(kāi)發(fā)這樣一套管理軟件成為很有必要的事情,在下面的各章中我們將以開(kāi)發(fā)一套學(xué)習(xí)管理系統(tǒng)為例,談?wù)勂溟_(kāi)發(fā)過(guò)程和所涉及到的問(wèn)題及解決方法。</p><p>  本系統(tǒng)基于Java平臺(tái),Struts框架和MVC設(shè)計(jì)

30、模式來(lái)實(shí)現(xiàn),整個(gè)系統(tǒng)由客戶端(前臺(tái))和服務(wù)器端(后臺(tái))程序組成,并通過(guò)對(duì)Java,Struts網(wǎng)絡(luò)編程技術(shù)的詳細(xì)介紹,深入地探討了該學(xué)習(xí)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)的過(guò)程。用戶可以快捷與方便地登陸用戶端程序,進(jìn)而進(jìn)行網(wǎng)上交流。</p><p>  第一章 Struts,JSP,JSTL,Ajax概述</p><p>  1.1 Struts框架的介紹</p><p>  1

31、.1.1 Struts的概念和體系結(jié)構(gòu)</p><p>  Struts有一組相互協(xié)作的類(lèi)、Serlvet以及Jsp TagLib組成。基于Struts構(gòu)架的web應(yīng)用程序基本上符合JSP Model2的設(shè)計(jì)標(biāo)準(zhǔn),可以說(shuō)是MVC設(shè)計(jì)模式的一種變化類(lèi)型。根據(jù)上面對(duì)framework的描述,我們很容易理解為什么說(shuō)Struts是一個(gè)web framwork,而不僅僅是一些標(biāo)記庫(kù)的組合。但 Struts 也包含了豐富的標(biāo)

32、記庫(kù)和獨(dú)立于該框架工作的實(shí)用程序類(lèi)。Struts有其自己的控制器(Controller),同時(shí)整合了其他的一些技術(shù)去實(shí)現(xiàn)模型層(Model)和視圖層(View)。在模型層,Struts可以很容易的與數(shù)據(jù)訪問(wèn)技術(shù)相結(jié)合,包括EJB,JDBC和Object Relation Bridge。在視圖層,Struts能夠與JSP, Velocity Templates,XSL等等這些表示層組件想結(jié)合。</p><p>  

33、Struts與Web App的關(guān)系</p><p>  既然struts叫做web framework,那么其肯定主要基于web層的應(yīng)用系統(tǒng)開(kāi)發(fā)。按照J(rèn)2EE Architecture的標(biāo)準(zhǔn),struts應(yīng)當(dāng)和jsp/servlet一樣,存在于web container一層。</p><p>  圖1-1 Struts與WebApp的關(guān)系</p><p>  Str

34、uts的體系結(jié)構(gòu)</p><p>  我們說(shuō)struts framework是MVC 模式的體現(xiàn),下面我們就從分別從模型、視圖、控制來(lái)看看struts的體系結(jié)構(gòu)(Architecture)。下圖顯示了struts framework的體系響應(yīng)客戶請(qǐng)求時(shí)候,各個(gè)部分工作的原理。</p><p>  圖1-2 Struts體系結(jié)構(gòu)</p><p>  從視圖角度(Vie

35、w)</p><p>  首先,Struts提供了Java類(lèi)org.apache.struts.action.ActionForm,Java開(kāi)發(fā)者將該類(lèi)細(xì)分來(lái)創(chuàng)建表單bean。在運(yùn)行時(shí),該bean有兩種用法:</p><p>  ― 當(dāng)JSP準(zhǔn)備相關(guān)的HTML,表單以進(jìn)行顯示時(shí),JSP將訪問(wèn)該bean(它保存要放入表單中的值)。那些值是從業(yè)務(wù)邏輯或者是從先前的用戶輸入來(lái)提供的。</

36、p><p>  ― 當(dāng)從Web瀏覽器中返回用戶輸入時(shí),該bean將驗(yàn)證并保存該輸入以供業(yè)務(wù)邏輯或(如果驗(yàn)證失敗的話)后續(xù)重新顯示使用。</p><p>  其次,Struts提供了許多定制JSP標(biāo)記,它們的使用簡(jiǎn)單,但是它們?cè)陔[藏信息方面功能強(qiáng)大。例如,除了bean名稱和給定bean中每個(gè)段的名稱之外,頁(yè)面設(shè)計(jì)者不需要知道有關(guān)表單bean的更多信息。</p><p>

37、  從模型角度(Model)</p><p>  Struts雖然不直接有助于模型開(kāi)發(fā)。在Struts中,系統(tǒng)模型的狀態(tài)主要由ActiomForm Bean和值對(duì)象體現(xiàn)。</p><p>  從控制器角度(Controller)</p><p>  在Struts framework中, Controller主要是ActionServlet,但是對(duì)于業(yè)務(wù)邏輯的操作則

38、主要由Action、ActionMapping、ActionForward這幾個(gè)組件協(xié)調(diào)完成(也許這幾個(gè)組件,應(yīng)該劃分到模型中的業(yè)務(wù)邏輯一塊)。其中,Action扮演了真正的控制邏輯的實(shí)現(xiàn)者,而ActionMapping和ActionForward則指定了不同業(yè)務(wù)邏輯或流程的運(yùn)行方向。</p><p>  Struts的基本組件包</p><p>  整個(gè)struts大約有15包,近200

39、個(gè)類(lèi)所組成,而且數(shù)量還在不斷的擴(kuò)展。在此我們不能一一介紹,只能列舉幾個(gè)主要的簡(jiǎn)要的介紹一下。下表說(shuō)明了目前struts api中基本的幾個(gè)組件包,包括action、actions、config、util、taglib、validator。下圖則顯現(xiàn)了這幾個(gè)組件包之間的關(guān)系。其中action是整個(gè)struts framework的核心</p><p>  表1-1 核心組件包的關(guān)系</p><

40、p>  圖 1-3 struts的基本組件關(guān)系圖</p><p>  1.1.2 Struts框架的工作原理和組件</p><p>  對(duì)于Struts 如何控制、處理客戶請(qǐng)求,讓我們通過(guò)對(duì)struts的四個(gè)核心組件介紹來(lái)具體說(shuō)明。這幾個(gè)組件就是:ActionServlet,Action Classes,Action Mapping(此處包括ActionForward),Action

41、From Bean。</p><p>  Struts ActionServlet控制器對(duì)象</p><p>  ActionServlet繼承自javax.servlet.http.HttpServlet類(lèi),其在Struts framework中扮演的角色是中心控制器。它提供一個(gè)中心位置來(lái)處理全部的終端請(qǐng)求??刂破鰽ctionServlet主要負(fù)責(zé)將HTTP的客戶請(qǐng)求信息組裝后,根據(jù)配置

42、文件的指定描述,轉(zhuǎn)發(fā)到適當(dāng)?shù)奶幚砥鳌?lt;/p><p>  按照Servelt的標(biāo)準(zhǔn),所有得Servlet必須在web配置文件(web.xml)聲明。同樣,ActoinServlet必須在Web Application配置文件(web.xml)中描述,有關(guān)配置信息如下。</p><p><b>  <servlet></b></p><p

43、>  <servlet-name>action</servlet-name></p><p>  <servlet-class>org.apache.struts.action.ActionServlet</servlet-class></p><p>  </servlet></p><p>  全

44、部的請(qǐng)求URI以*.do的模式存在并映射到這個(gè)servlet,其配置如下:</p><p>  <servlet-mapping></p><p>  <servlet-name>action</servlet-name></p><p>  <url-pattern>*.do</url-pattern>&

45、lt;/p><p>  </servlet-mapping></p><p>  一個(gè)該模式的請(qǐng)求URI符合如下格式: </p><p>  http://www.my_site_name.com/mycontext/actionName.do</p><p>  中心控制器為所有的表示層請(qǐng)求提供了一個(gè)集中的訪問(wèn)點(diǎn)。這個(gè)控制器提供的抽

46、象概念減輕了開(kāi)發(fā)者建立公共應(yīng)用系統(tǒng)服務(wù)的困難,如管理視圖、會(huì)話及表單數(shù)據(jù)。它也提供一個(gè)通用機(jī)制如錯(cuò)誤及異常處理,導(dǎo)航,國(guó)際化,數(shù)據(jù)驗(yàn)證,數(shù)據(jù)轉(zhuǎn)換等。</p><p>  當(dāng)用戶向服務(wù)器端提交請(qǐng)求的時(shí)候,實(shí)際上信息是首先發(fā)送到控制器ActionServlet,一旦控制器獲得了請(qǐng)求,其就會(huì)將請(qǐng)求信息傳交給一些輔助類(lèi)(help classes)處理。這些輔助類(lèi)知道如何去處理與請(qǐng)求信息所對(duì)應(yīng)的業(yè)務(wù)操作。在Struts中,

47、這個(gè)輔助類(lèi)就是org.apache.struts.action.Action。通常開(kāi)發(fā)者需要自己繼承Aciton類(lèi),從而實(shí)現(xiàn)自己的Action實(shí)例。</p><p>  Struts Action Classes </p><p>  ActionServlet把全部提交的請(qǐng)求都被控制器委托到RequestProcessor對(duì)象。RequestProcessor使用struts-confi

48、g.xml文件檢查請(qǐng)求URI找到動(dòng)作Action標(biāo)示符。</p><p>  一個(gè)Action 類(lèi)的角色,就像客戶請(qǐng)求動(dòng)作和業(yè)務(wù)邏輯處理之間的一個(gè)適配器(Adaptor),其功能就是將請(qǐng)求與業(yè)務(wù)邏輯分開(kāi)。這樣的分離,使得客戶請(qǐng)求和Action類(lèi)之間可以有多個(gè)點(diǎn)對(duì)點(diǎn)的映射。而且Action類(lèi)通常還提供了其它的輔助功能,比如:認(rèn)證(authorization)、日志(logging)和數(shù)據(jù)驗(yàn)證(validation)

49、。</p><p>  Action最為常用的是execute()方法。(注意,以前的perform方法在struts1.1中已經(jīng)不再支持),還有一個(gè)execute()方法,請(qǐng)參考apidoc,在此不在說(shuō)明。public ActionForward execute(ActionMapping mapping,</p><p>  ActionForm form,<

50、;/p><p>  javax.servlet.ServletRequest request,</p><p>  javax.servlet.ServletResponse response)</p><p>  throws java.io.IOException,javax.servlet.ServletException</p>

51、<p>  <action-mappings></p><p>  <action path="/logonAction"</p><p>  type="com.test.LogonAction"</p><p>  name="LogonForm"</p>

52、<p>  scope="request"</p><p>  input="logoncheck.jsp"</p><p>  validate="false"></p><p>  <forward name="welcome" path="/welc

53、ome.jsp"/></p><p>  <forward name="failure" path="/logon_failure.jsp "/></p><p><b>  </action></b></p><p>  </action-mappings&

54、gt;</p><p>  當(dāng)Controller收到客戶的請(qǐng)求的時(shí)候,在將請(qǐng)求轉(zhuǎn)移到一個(gè)Action實(shí)例時(shí),如果這個(gè)實(shí)例不存在,控制器會(huì)首先創(chuàng)建,然后會(huì)調(diào)用這個(gè)Action實(shí)例的execute()方法。Struts Framework為應(yīng)用系統(tǒng)中的每一個(gè)Action類(lèi)只創(chuàng)建一個(gè)實(shí)例。因?yàn)樗械挠脩舳际褂眠@一個(gè)實(shí)例,所以你必須確定你的Action 類(lèi)運(yùn)行在一個(gè)多線程的環(huán)境中。下圖顯示了一個(gè)execute()方法如

55、何被訪問(wèn):</p><p>  圖1-4 Action實(shí)例的execute()方法</p><p>  注意,客戶自己繼承的Action子類(lèi),必須重寫(xiě)execute()方法,因?yàn)锳ction類(lèi)在默認(rèn)情況下是返回null的。</p><p>  Struts Action Mapping</p><p>  上面講到了一個(gè)客戶請(qǐng)求是如何被控制

56、器轉(zhuǎn)發(fā)和處理的,但是,控制器如何知道什么樣的信息轉(zhuǎn)發(fā)到什么樣的Action類(lèi)呢?這就需要一些與動(dòng)作和請(qǐng)求信息相對(duì)應(yīng)的映射配置說(shuō)明。在struts 中,這些配置映射信息是存儲(chǔ)在特定的XML文件(比如struts-config.xml)。 </p><p>  這些配置信息在系統(tǒng)啟動(dòng)的時(shí)候被讀入內(nèi)存,供struts framework在運(yùn)行期間使用。在內(nèi)存中,每一個(gè)<action>元素都與org.apa

57、che.struts.action.ActionMapping類(lèi)的一個(gè)實(shí)例對(duì)應(yīng)。下表就顯示了一個(gè)登陸的配置映射。</p><p>  上面的配置表示:當(dāng)可以通過(guò)/logonAction.do(此處假設(shè)配置的控制器映射為*.do)提交請(qǐng)求信息的時(shí)候,控制器將信息委托com.test.LogonAction處理。調(diào)用LogonAction實(shí)例的execute()方法。</p><p>  &l

58、t;form-beans></p><p>  <form-bean name="LoginForm"</p><p>  type="com.test.LoginForm"/></p><p>  </form-beans></p><p>  同時(shí)將Mapping實(shí)例

59、和所對(duì)應(yīng)的LogonForm Bean信息傳入。其中name=LogonForm,使用的form-bean元素所聲明的ActionForm Bean。有關(guān)form-bean的申明如下顯示。</p><p>  使用ActionForward導(dǎo)航</p><p>  元素<forward>則表示了當(dāng)Action實(shí)例的execute()方法運(yùn)行完畢或,控制器根據(jù)Mapping可將響

60、應(yīng)信息轉(zhuǎn)到適當(dāng)?shù)牡胤?。如上面現(xiàn)實(shí),如果客戶登陸成功,則調(diào)用welcome forward,將成功信息返回到/welcome.jsp頁(yè)面。在你的execute()方法的結(jié)尾可以使用下面的實(shí)例代碼而返回welcome forward。當(dāng)然你的welcome forward必須在action元素屬性中定義,正如上面所聲明的那樣。</p><p>  return (mapping.findForward("w

61、elcome"));</p><p>  ActionForward對(duì)象是配置對(duì)象。這些配置對(duì)象擁有獨(dú)一無(wú)二的標(biāo)識(shí)以允許它們按照有意義的名稱如“success”,“failure”等來(lái)檢索。ActionForward對(duì)象封裝了向前進(jìn)的URL路徑且被請(qǐng)求處理器用于識(shí)別目標(biāo)視圖。ActionForward對(duì)象建立自<forward>元素位于struts-config.xml。下面是一個(gè)Strut

62、s中<forward>元素例子,屬于<action>元素范圍。</p><p>  <action path="/editCustomerProfile"</p><p>  type="packageName.EditCustomerProfileAction"</p><p>  name=&

63、quot;customerProfileForm" scope="request"></p><p>  <forward name="success" path="/MainMenu.jsp"/></p><p>  <forward name="failure" path=

64、"/CustomerService.jsp"/></p><p>  </action></p><p>  基于執(zhí)行請(qǐng)求處理器的execute(…)方法的結(jié)果,當(dāng)傳遞一個(gè)值匹配指定于<forward>元素中name屬性的值的時(shí)候,下一個(gè)視圖可以在execute(…)方法中被開(kāi)發(fā)者用方便的方法org.apache.struts.actio

65、n.ActionMapping.findForward(…)選擇。ActionMapping.findForward(…)方法既從它的本地范圍又從全局范圍提供一個(gè)ActionForward對(duì)象,該對(duì)象返回至RequestProcessor以RequestDispatcher.forward(…)或response.sendRedirect(…)調(diào)用下一個(gè)視圖。當(dāng)<forward>元素有redirect=“false”屬性或r

66、edirect屬性不存在的時(shí)候,RequestDispatcher.forward(…)被執(zhí)行;當(dāng)redirect=“true”是,將調(diào)用sendRedirect(…)方法。下例舉例說(shuō)明了redirect屬性的用法:</p><p>  <forward name="success" path="/Catalog.jsp" redirect="true&qu

67、ot;/></p><p>  如果redirect=true, URL建立如/contextPath/path因?yàn)镠ttpServletResponse.sendRedirect(…)中解釋URL采用”/”開(kāi)頭相對(duì)于servlet容器根目錄。</p><p>  如果redirect=false, URI建立如/path因?yàn)镾ervletContext.getRequestDisp

68、tacher(…)采用虛擬目錄相關(guān)URL。</p><p>  在此稍稍說(shuō)一下有關(guān)global-forwards的概念。其在配置文件中描述了整個(gè)應(yīng)用系統(tǒng)可以使用的ActionForward,而不是僅僅是一個(gè)特定的Action。</p><p>  <global-forwards></p><p>  <forward name="log

69、out" path="/logout.do"/></p><p>  <forward name="error" path="/error.jsp"/></p><p>  </global-forwards></p><p>  Struts ActionForm

70、 Bean捕獲表單數(shù)據(jù)</p><p>  一個(gè)應(yīng)用系統(tǒng)的消息轉(zhuǎn)移(或者說(shuō)狀態(tài)轉(zhuǎn)移)的非持久性數(shù)據(jù)存儲(chǔ),是由ActionForm Bean的負(fù)責(zé)保持的。ActionForm派生的對(duì)象用于保存請(qǐng)求對(duì)象的參數(shù),因此它們和用戶緊密聯(lián)系。一個(gè)ActionForm類(lèi)被RequestProcessor建立。這是發(fā)生在已完成向前進(jìn)到一個(gè)URL,該URL為映射到控制器servlet而不是JSP和相應(yīng)的動(dòng)作映射指定的表單屬性的。在

71、這個(gè)情況下,如果沒(méi)有在指定的活動(dòng)范圍內(nèi)找到,RequestProcessor將嘗試尋找可能導(dǎo)致創(chuàng)建一個(gè)新ActionForm對(duì)象的表單bean。該ActionForm對(duì)象在指定的活動(dòng)范圍內(nèi)被用<action>元素的name屬性找到;</p><p>  RequestProcessor將隨后重新安排表單屬性,用請(qǐng)求時(shí)參數(shù)填充表單,隨即調(diào)用表單對(duì)象的validate(…)方法以履行服務(wù)器端用戶輸入驗(yàn)證。

72、僅當(dāng)ActionMapping對(duì)象中validate屬性被設(shè)為true時(shí),validate(…)方法被調(diào)用;這就是默認(rèn)的行為。request.getParameterValues(parameterName)被用于得到一個(gè)String[]對(duì)象,它用來(lái)表單填充;驗(yàn)證的結(jié)果應(yīng)該是一個(gè)ActionErrors對(duì)象,用org.apache.struts.taglib.html.ErrorsTag來(lái)顯示驗(yàn)證錯(cuò)誤給用戶。ActionForm也可以被

73、用于為當(dāng)前用戶保存即將被一個(gè)視圖引用的中間模型狀態(tài)。</p><p>  當(dāng)一個(gè)表單對(duì)象被RequestProcessor找到,它被傳遞到請(qǐng)求處理器的execute(…)方法。一個(gè)ActionForm對(duì)象也可以被請(qǐng)求處理器建立。表單對(duì)象建立目的是提供中間模型狀態(tài)給使用請(qǐng)求范圍JSP;這將確保對(duì)象不會(huì)在有效性過(guò)期后仍然存在。默認(rèn)的,所有的表單都被保存為會(huì)話范圍。會(huì)話中表單對(duì)象脫離有效性的存在可能導(dǎo)致浪費(fèi)內(nèi)存,同樣的

74、,請(qǐng)求處理器必須跟蹤保存在會(huì)話中的表單對(duì)象的生命周期。一個(gè)好的捕獲表單數(shù)據(jù)的實(shí)踐是為橫跨多用戶交互的相關(guān)表單用一個(gè)單獨(dú)的表單bean。表單bean也可以在反饋的時(shí)候用來(lái)儲(chǔ)存能夠被自定義標(biāo)簽改變的中間模型狀態(tài)。在視圖中標(biāo)簽用法避免結(jié)合Java代碼,因此要成一個(gè)好的任務(wù)劃分,web生產(chǎn)組主要處理標(biāo)志,而應(yīng)用開(kāi)發(fā)組主要處理Java代碼。標(biāo)簽因素退出訪問(wèn)中間模型狀態(tài)的邏輯;當(dāng)訪問(wèn)嵌套的對(duì)象或當(dāng)通過(guò)聚集列舉時(shí)這個(gè)邏輯可能很復(fù)雜。</p>

75、;<p>  Struts的其他組件</p><p>  Struts framework本身提供了很多可擴(kuò)展的組件或sub framework,方便開(kāi)發(fā)人員在其構(gòu)架上構(gòu)建web層的應(yīng)用系統(tǒng)。比如upload、collections、logging等等。讓我們來(lái)看看兩個(gè)比較重要的組件:validationg framework和struts taglib。有關(guān)其他組件請(qǐng)參考Struts用戶手冊(cè)(ht

76、tp://jakarta.apache.org/struts/userGuide)。</p><p>  Validation Framework for Struts</p><p>  在struts 1.1中,新增了validation framework。增加了對(duì)form數(shù)據(jù)提交的驗(yàn)證。將原本需要在ActionFrom Bean的validate()進(jìn)行的驗(yàn)證通過(guò)配置文件的描述進(jìn)行

77、驗(yàn)證。</p><p>  有關(guān)其詳細(xì)信息,請(qǐng)參考http://home.earthlink.net/~dwinterfeldt 。個(gè)人建議對(duì)于小型應(yīng)用系統(tǒng)可以采用這種配置方式,但是對(duì)于應(yīng)用系統(tǒng)中有大量web層表單應(yīng)用的系統(tǒng),并且業(yè)務(wù)需求變動(dòng)比較大的,使用validation framework 可能會(huì)加重開(kāi)發(fā)難度、系統(tǒng)維護(hù)難度。可以借鑒validation framework的Javascript Valida

78、tor Tag。 </p><p>  1.1.3 Struts標(biāo)簽庫(kù)</p><p><b>  定制JSP標(biāo)記</b></p><p>  Struts提供了用來(lái)封裝邏輯的各種定制JSP標(biāo)記,因此頁(yè)面設(shè)計(jì)者可以將主要精力花在頁(yè)面的可視特征上,而不必主要考慮Java語(yǔ)法或其它JSP語(yǔ)法,在下列標(biāo)識(shí)庫(kù)描述符中引用了Struts標(biāo)記:</p

79、><p>  Struts-bean.tld</p><p>  使訪問(wèn)bean以及新bean的定義更容易,,為了實(shí)現(xiàn)國(guó)際化,應(yīng)使用不同的屬性文件</p><p>  struts-html.tld</p><p>  提供顯示HTML對(duì)象(例如,表單、按鈕和復(fù)選框)的簡(jiǎn)便方法</p><p>  struts-logic

80、.tld</p><p>  支持邏輯構(gòu)造,以便可以有條件地顯示文本或者作為處理循環(huán)的結(jié)果來(lái)顯示文本</p><p>  struts-template.tld</p><p>  支持使用在運(yùn)行時(shí)可以修改的JSP模板</p><p>  要在JSP文件頂部的<taglib>偽指令如下所示:<%@ taglib uri=“struts-

81、html. tld” prefix=“html”%></p><p>  <%@ taglib uri=“struts-bean.tld”prefix=“bean”%></p><p>  <%@ taglib uri=“struts-logic.tld”prefix=“l(fā)ogic”%></p><p>  每個(gè)<taglib>偽指令都

82、具有與基于 web.xml的< taglib>標(biāo)記中的URL相匹配的URL。另外JSP中的每個(gè) struts標(biāo)記都使用一個(gè)使標(biāo)記與特定標(biāo)記庫(kù)描述符相關(guān)的前綴:</p><p>  ― 沒(méi)有嵌套內(nèi)容的標(biāo)記可以采用以下格式:</p><p>  <prefix:tagName attributesAndValues/></p><p>  ― 嵌套內(nèi)容是在

83、一對(duì)標(biāo)記之間嵌套的:</p><p>  <prefix:tagName attributesAndValues /></p><p>  </prefix:tagName></p><p>  prefix:在JSP taglib偽指令中指定的前綴</p><p>  tagNam:標(biāo)記的名稱,如標(biāo)記庫(kù)描述符中所述;

84、描述符條目指定提供標(biāo)記邏輯的Jave類(lèi)</p><p>  attributesAndValues:― 系列屬性與值的配對(duì)(是必需的或者是可選的),每個(gè)配對(duì)都包括一種屬性、一個(gè)等號(hào)(沒(méi)有前導(dǎo)或結(jié)尾空白)和一個(gè)引起來(lái)的字符串</p><p>  文件resource.jsp包含bean:message標(biāo)記的幾個(gè)實(shí)例。以下是標(biāo)記的示例用法:</p><p>  <

85、bean:message key=“market. text. title”/></p><p><b>  資源束</b></p><p>  在最簡(jiǎn)單的情況下,bean:message標(biāo)記解析為存儲(chǔ)在根據(jù)屬性文件創(chuàng)建的資源束中的字符串:</p><p>  ― 屬性文件的名稱是用來(lái)調(diào)用ActoinServlet的web.xml “ap

86、plication”參數(shù)的值。如:</p><p>  \WEB-INF\classes\ApplicationResources.properties</p><p>  ― 消息標(biāo)記中的key屬性指向?qū)傩晕募械摹版I-字符串”對(duì);在本例中,指向下面的“鍵-字符串”對(duì):</p><p>  market. text.title=Current Market Con

87、ditions</p><p>  可以采用各種方法來(lái)定制bean:message標(biāo)記,以便(例如)JSP在運(yùn)行時(shí)引用不同的屬性文件。標(biāo)記提供了一種方法來(lái)支持多種語(yǔ)言以及最多將四個(gè)替代值插入到字符串中來(lái)代替{0}、{1}等等。</p><p>  僅當(dāng)指定的對(duì)象或值存在時(shí),logic:present 標(biāo)記才會(huì)導(dǎo)致顯示嵌套的文本。在register.jsp中,僅當(dāng)操作類(lèi)創(chuàng)建了作為 ticke

88、rBean引用(在任何作用域中)的 Java bean 時(shí)才為用戶提供HTML表行。 Struts標(biāo)記為如下所示:</p><p>  <logic:present name=“tickerBean”></p><p>  -->nested content for presentation<--</p><p>  </logic:p

89、resent></p><p>  Struts標(biāo)記允許很方便地訪問(wèn)Java bean內(nèi)容。例如,以下標(biāo)記將解析為存儲(chǔ)在 tickerBean中的值:</p><p>  <bean:write name= “tickerBean”property=“DJChange”/></p><p>  tickerBean的源代碼在以下目錄中:</

90、p><p>  Trade\Java Source\tradeCommon\tickerBean.java</p><p>  HTML表單與表單bean之間的數(shù)據(jù)傳送是通過(guò)使用html:form 和html:text標(biāo)記來(lái)完成的。 register.jsp中的輸入表單是按如下所示構(gòu)建的:</p><p>  <html:form action= “/regist

91、er”></p><p>  -->nested form content with html: text tags<--</p><p>  </html:form action></p><p>  html:form 標(biāo)記解析為HTML FORM 標(biāo)記并導(dǎo)致html: text 標(biāo)記引用適當(dāng)?shù)谋韱蝏ean;特別是在 path=“/

92、register”的 Struts配置文件的 <action>標(biāo)記中標(biāo)識(shí)的表單 bean。</p><p>  html:text標(biāo)記建立HTML輸入字段。例如,以下標(biāo)記確保在HTML輸入字段與表單bean的用戶名字段之間傳送信息:</p><p>  <html:text property=“username”size=“40”/></p><

93、p>  JSP視窗組件所使用的 struts標(biāo)記庫(kù)由四類(lèi)標(biāo)記組成:</p><p>  Bean標(biāo)記:用來(lái)在JSP頁(yè)中管理bean</p><p>  邏輯標(biāo)記:用來(lái)在JSP頁(yè)中控制流程</p><p>  HTML標(biāo)記:用來(lái)生成HTML標(biāo)記,在表單中顯示數(shù)據(jù),使用會(huì)話ID對(duì)URL進(jìn)行編程</p><p>  模板標(biāo)記:使用動(dòng)

94、態(tài)模板構(gòu)造普通格式的頁(yè)</p><p><b>  Bean標(biāo)記</b></p><p>  這個(gè)標(biāo)記庫(kù)中包含用于定義新bean、訪問(wèn)bean及其屬性的標(biāo)記。Struts框架提供了多種自定義標(biāo)記用來(lái)在JSP頁(yè)中處理JavaBean。這些標(biāo)記被封裝在一個(gè)普通的標(biāo)記庫(kù)中,在文件struts-bean.tld中定義了它的標(biāo)記庫(kù)描述器。Bean標(biāo)記庫(kù)將標(biāo)記定義在四個(gè)子類(lèi)別中:

95、</p><p>  創(chuàng)建和復(fù)制bean的標(biāo)記</p><p><b>  腳本變量定義標(biāo)記</b></p><p><b>  bean翻譯標(biāo)記</b></p><p><b>  消息國(guó)際化標(biāo)記</b></p><p><b>  Bean

96、復(fù)制標(biāo)記</b></p><p>  可定義新bean,可復(fù)制現(xiàn)有bean,還可從現(xiàn)有bean復(fù)制屬性。</p><p>  <bean:define>標(biāo)記用來(lái):</p><p><b>  定義新字符串常數(shù)</b></p><p>  將現(xiàn)有的bean復(fù)制到新定義的bean對(duì)象</p>

97、;<p>  復(fù)制現(xiàn)有bean的屬性來(lái)創(chuàng)建新的bean</p><p>  例如:定義一個(gè)bean:</p><p>  <bean:define id=”test” value=”this is a test”/></p><p>  源bean在頁(yè)作用域中被拷貝大哦請(qǐng)求作用域中的另一個(gè)bean:</p><p>

98、  <bean:define id=”targetBean” name=”sourceBean”</p><p>  scope=”page” toScope=”request”/></p><p><b>  定義腳本變量的標(biāo)記</b></p><p>  從多種資源中定義和生成腳本變量,這些資源包括cookie,請(qǐng)求參數(shù),HTT

99、P標(biāo)頭等等。例如:</p><p>  <bean:cookie id=”myCookie” name=”userName”/></p><p>  腳本變量名稱是myCookie,用來(lái)創(chuàng)建這個(gè)屬性的cookie的名稱是userName。</p><p>  <bean:header id=”myHeader” name=”Accept-Langu

100、age”/></p><p>  腳本變量名稱是myHeader,請(qǐng)求標(biāo)頭的名稱是Accept-Language。</p><p>  <bean:parameter id=”myParameter” name=”myParameter”></p><p>  腳本變量名稱是myPatameter,它保存的請(qǐng)求參數(shù)的名稱也是myParameter。

101、</p><p>  <bean:include>標(biāo)記將對(duì)一個(gè)資源的響應(yīng)進(jìn)行檢索,并引入一個(gè)腳本變量和字符串類(lèi)型的頁(yè)作用域?qū)傩?。這個(gè)資源可以是一個(gè)頁(yè),一個(gè)ActionForward或一個(gè)外部URL。與<jsp:include>的不同是資源的響應(yīng)被存儲(chǔ)到一個(gè)頁(yè)作用域的bean中,而不是寫(xiě)入到輸出流。例如:</p><p>  <bean:include id=”

102、myInclude” page=”MyJsp?x=1”/></p><p>  腳本變量的名稱是myInclude,要檢索的響應(yīng)來(lái)自資源MyJsp?x=1。</p><p>  <bean:resource>標(biāo)記將檢索web應(yīng)用中的資源,并引入一個(gè)腳本變量和InputStream或字符串類(lèi)型的頁(yè)作用域?qū)傩?。如果在檢索資源時(shí)發(fā)生問(wèn)題,就會(huì)產(chǎn)生一個(gè)請(qǐng)求時(shí)間異常。例如:<

103、/p><p>  <bean:resource id=”myResource” name=”/WEB-INF/images/myResource.xml”/></p><p>  腳本變量的名稱是myResource,要檢索的資源的名稱是myResource.xml。</p><p><b>  顯示Bean屬性</b></p&g

104、t;<p>  標(biāo)記庫(kù)中定義了<bean:write>標(biāo)記,用來(lái)將bean的屬性輸送到封裝的JSP頁(yè)寫(xiě)入器。這個(gè)標(biāo)記與<jsp:getProperty>類(lèi)似,例如:</p><p>  <bean:write name=”myBean” property=”myProperty” scope=”request” filter=”true”/></p>

105、<p>  myBean的屬性myProperty將會(huì)被顯示,作用域?yàn)檎?qǐng)求,如果發(fā)現(xiàn)任何HTML特殊字符都將被轉(zhuǎn)化為相應(yīng)的實(shí)體引用。</p><p><b>  消息標(biāo)記和國(guó)際化</b></p><p>  struts框架支持國(guó)際化和本地化。用戶在他們的計(jì)算機(jī)中定義自己所在的區(qū)域,當(dāng)web應(yīng)用程序需要輸出一條消息時(shí),它將引用一個(gè)資源文件,在這個(gè)文件中所有

106、的消息都使用了適當(dāng)?shù)恼Z(yǔ)言。一個(gè)應(yīng)用程序可能提供了很多資源文件,每個(gè)文件提供了用不同語(yǔ)言編寫(xiě)的消息。如果沒(méi)有找到所選語(yǔ)言的資源文件,就將使用默認(rèn)的資源文件。</p><p>  struts框架對(duì)國(guó)際化的支持是使用<bean:message>標(biāo)記,以及使用java.util數(shù)據(jù)包中定義的Locale和ResourceBundle類(lèi)來(lái)實(shí)現(xiàn)Java2平臺(tái)對(duì)這些任務(wù)的支持。Java.text.MessageF

107、ormat類(lèi)定義的技術(shù)可以支持消息的格式。利用此功能,開(kāi)發(fā)人員不需了解這些類(lèi)的細(xì)節(jié)就可進(jìn)行國(guó)際化和設(shè)置消息的格式。</p><p>  用struts實(shí)現(xiàn)國(guó)際化和本地化:</p><p>  第一步要定義資源文件的名稱,這個(gè)文件會(huì)包含用默認(rèn)語(yǔ)言編寫(xiě)的在程序中會(huì)出現(xiàn)的所有消息。這些消息以“關(guān)鍵字-值”的形式存儲(chǔ),如下:</p><p>  error.validati

108、on.location = The entered location is invalid</p><p>  這個(gè)文件需要存儲(chǔ)在類(lèi)的路徑下,而且它的路徑要作為初始化參數(shù)傳送給ActionServlet作為參數(shù)進(jìn)行傳遞時(shí),路徑的格式要符合完整Java類(lèi)的標(biāo)準(zhǔn)命名規(guī)范。比如,如果資源文件存儲(chǔ)在WEB-INF\classes目錄中,文件名是ApplicationResources.properties,那么需要傳遞的

109、參數(shù)值是ApplicationResources。如果文件在WEB-INF\classes\com\test中,那么參數(shù)值就應(yīng)該是com.test. ApplicationResources。</p><p>  為了實(shí)現(xiàn)國(guó)際化,所有的資源文件必須都存儲(chǔ)在基本資源文件所在的目錄中。基本資源文件包含的是用默認(rèn)地區(qū)語(yǔ)言-本地語(yǔ)言編寫(xiě)的消息。如果基本資源文件的名稱是ApplicationResources.proper

110、ties,那么用其他特定語(yǔ)言編寫(xiě)的資源文件的名稱就應(yīng)該是ApplicationResources_xx.properties(xx為ISO編碼,如英語(yǔ)是en)。因此這些文件應(yīng)包含相同的關(guān)鍵字,但關(guān)鍵字的值是用特定語(yǔ)言編寫(xiě)的。</p><p>  ActionServlet的區(qū)域初始化參數(shù)必須與一個(gè)true值一起傳送,這樣ActionServlet就會(huì)在用戶會(huì)話中的Action.LOCALE_KEY關(guān)鍵字下存儲(chǔ)一個(gè)

111、特定用戶計(jì)算機(jī)的區(qū)域?qū)ο蟆,F(xiàn)在可以運(yùn)行一個(gè)國(guó)際化的web站點(diǎn),它可以根據(jù)用戶計(jì)算機(jī)上的設(shè)置的區(qū)域自動(dòng)以相應(yīng)的語(yǔ)言顯示。</p><p>  我們還可以使用特定的字符串來(lái)替換部分消息,就象用java.text.MessageFormat的方法一樣:</p><p>  error.invalid.number = The number {0} is valid</p><

112、p>  我們可以把字符串{0}替換成任何我們需要的數(shù)字。例如:資源文件中定義了一個(gè)消息:</p><p>  info.myKey = The numbers entered are {0},{1},{2},{3}</p><p>  我們可使用下面的消息標(biāo)記:</p><p>  <bean:message key=”info.myKey” arg0=

113、”5” arg1=”6” arg2=”7” arg3=”8”/></p><p>  這個(gè)信息標(biāo)記輸出到JSP頁(yè)會(huì)顯示為:The numbers entered are 5,6,7,8</p><p><b>  邏輯標(biāo)記</b></p><p>  邏輯庫(kù)的標(biāo)記能夠用來(lái)處理外觀邏輯而不需要使用scriptlet.Struts邏輯標(biāo)簽庫(kù)包

114、含的標(biāo)記能夠有條件地產(chǎn)生輸出文本,在對(duì)象集合中循環(huán)從而重復(fù)地產(chǎn)生輸出文本,以及應(yīng)用程序流程控制。它也提供了一組在JSP頁(yè)中處理流程控制的標(biāo)記。這些標(biāo)記封裝在文件名為struts-logic。tld的標(biāo)記包中。邏輯標(biāo)記庫(kù)定義的標(biāo)記能夠執(zhí)行下列三個(gè)功能:</p><p><b>  條件邏輯</b></p><p><b>  重復(fù)</b></

溫馨提示

  • 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ù)僅提供信息存儲(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)論