基于java的學習管理系統(tǒng)(lms)—前臺程序設計-畢業(yè)論文_第1頁
已閱讀1頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  基于JAVA的學習管理系統(tǒng)(LMS)</p><p><b>  —前臺程序設計</b></p><p>  [摘要] 學習管理系統(tǒng)是指通過計算機、網絡等數字化方法進行學習與教學的系統(tǒng),它充分利用IT技術為教學活動提供了一個具有全新溝通機制與資源豐富的學習環(huán)境,實現了一種新的學習方式。本系統(tǒng)是基于Java平臺,Struts框架,MVC設計模式實現

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

3、ce,email,option,login和grade模塊。本文詳細介紹了各個模塊的頁面表單設計,頁面流程等。在web 用戶界面部分開發(fā)過程中,采用了大量的struts和jstl標簽,使得頁面顯得簡潔,高效而又不失美觀。</p><p>  最后,本文對系統(tǒng)的運行結果做了大致的介紹,包括對主要用戶界面的詳細說明。</p><p>  關鍵詞: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的概念和體系結構2</p><p>  1.1.2 Struts框架的工作原理和組件4</p><p>  1.1.3 Struts標簽庫10</p><p>  1.

11、2 JSP的介紹22</p><p>  1.2.1 JSP的概念和體系結構23</p><p>  1.2.2 JSP標簽庫25</p><p>  1.2.3 JSP的優(yōu)缺點26</p><p>  1.3 JSTL的介紹26</p><p>  1.3.1 JSTL的概念和體系結構26</p&g

12、t;<p>  1.3.2 JSTL的標簽介紹28</p><p>  1.3.3 JSTL的優(yōu)缺點28</p><p>  1.4 Ajax的介紹29</p><p>  1.4.1 Ajax的概念和體系結構29</p><p>  1.4.2 Ajax的優(yōu)缺點29</p><p>  1.4

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

14、1 Web UI詳細設計34</p><p>  3.1.1 announcement模塊詳細設計34</p><p>  3.1.2 calendar模塊詳細設計34</p><p>  3.1.3 course模塊詳細設計35</p><p>  3.1.4 forum模塊詳細設計37</p><p> 

15、 3.1.5 homework模塊詳細設計38</p><p>  3.1.6 resource模塊詳細設計39</p><p>  3.1.7 email模塊詳細設計39</p><p>  3.1.8 option模塊詳細設計40</p><p>  3.1.9 login模塊詳細設計41</p><p>

16、;  3.1.10 grade模塊詳細設計41</p><p>  第四章 運行結果44</p><p><b>  結論53</b></p><p><b>  致謝語54</b></p><p><b>  [參考文獻]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>  學習管理系統(tǒng)是一個教育單位不可缺少的部分,它的內容對于學校的決策者和

28、管理者來說都至關重要,所以學習管理系統(tǒng)應該能夠為用戶提供充足的信息和快捷的查詢手段。但一直以來人們使用傳統(tǒng)人工的方式管理教學活動,這種管理方式存在著許多缺點,如:效率低、保密性差。另外,時間一長,將產生大量的文件和數據,這對于查找、更新和維護都帶來了不少的困難。隨著科學技術的不斷提高,計算機科學日漸成熟,其強大的功能已為人們深刻認識,它已進入人類社會的各個領域并發(fā)揮著越來越重要的作用。作為計算機應用的一部分,使用計算機對教學活動進行管理

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

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

31、.1.1 Struts的概念和體系結構</p><p>  Struts有一組相互協作的類、Serlvet以及Jsp TagLib組成?;赟truts構架的web應用程序基本上符合JSP Model2的設計標準,可以說是MVC設計模式的一種變化類型。根據上面對framework的描述,我們很容易理解為什么說Struts是一個web framwork,而不僅僅是一些標記庫的組合。但 Struts 也包含了豐富的標

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

33、Struts與Web App的關系</p><p>  既然struts叫做web framework,那么其肯定主要基于web層的應用系統(tǒng)開發(fā)。按照J2EE Architecture的標準,struts應當和jsp/servlet一樣,存在于web container一層。</p><p>  圖1-1 Struts與WebApp的關系</p><p>  Str

34、uts的體系結構</p><p>  我們說struts framework是MVC 模式的體現,下面我們就從分別從模型、視圖、控制來看看struts的體系結構(Architecture)。下圖顯示了struts framework的體系響應客戶請求時候,各個部分工作的原理。</p><p>  圖1-2 Struts體系結構</p><p>  從視圖角度(Vie

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

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

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

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

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

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

41、From Bean。</p><p>  Struts ActionServlet控制器對象</p><p>  ActionServlet繼承自javax.servlet.http.HttpServlet類,其在Struts framework中扮演的角色是中心控制器。它提供一個中心位置來處理全部的終端請求。控制器ActionServlet主要負責將HTTP的客戶請求信息組裝后,根據配置

42、文件的指定描述,轉發(fā)到適當的處理器。</p><p>  按照Servelt的標準,所有得Servlet必須在web配置文件(web.xml)聲明。同樣,ActoinServlet必須在Web Application配置文件(web.xml)中描述,有關配置信息如下。</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、部的請求URI以*.do的模式存在并映射到這個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>  一個該模式的請求URI符合如下格式: </p><p>  http://www.my_site_name.com/mycontext/actionName.do</p><p>  中心控制器為所有的表示層請求提供了一個集中的訪問點。這個控制器提供的抽

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

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

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

49、。</p><p>  Action最為常用的是execute()方法。(注意,以前的perform方法在struts1.1中已經不再支持),還有一個execute()方法,請參考apidoc,在此不在說明。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>  當Controller收到客戶的請求的時候,在將請求轉移到一個Action實例時,如果這個實例不存在,控制器會首先創(chuàng)建,然后會調用這個Action實例的execute()方法。Struts Framework為應用系統(tǒng)中的每一個Action類只創(chuàng)建一個實例。因為所有的用戶都使用這一個實例,所以你必須確定你的Action 類運行在一個多線程的環(huán)境中。下圖顯示了一個execute()方法如

55、何被訪問:</p><p>  圖1-4 Action實例的execute()方法</p><p>  注意,客戶自己繼承的Action子類,必須重寫execute()方法,因為Action類在默認情況下是返回null的。</p><p>  Struts Action Mapping</p><p>  上面講到了一個客戶請求是如何被控制

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

57、che.struts.action.ActionMapping類的一個實例對應。下表就顯示了一個登陸的配置映射。</p><p>  上面的配置表示:當可以通過/logonAction.do(此處假設配置的控制器映射為*.do)提交請求信息的時候,控制器將信息委托com.test.LogonAction處理。調用LogonAction實例的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>  同時將Mapping實例

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

60、應信息轉到適當的地方。如上面現實,如果客戶登陸成功,則調用welcome forward,將成功信息返回到/welcome.jsp頁面。在你的execute()方法的結尾可以使用下面的實例代碼而返回welcome forward。當然你的welcome forward必須在action元素屬性中定義,正如上面所聲明的那樣。</p><p>  return (mapping.findForward("w

61、elcome"));</p><p>  ActionForward對象是配置對象。這些配置對象擁有獨一無二的標識以允許它們按照有意義的名稱如“success”,“failure”等來檢索。ActionForward對象封裝了向前進的URL路徑且被請求處理器用于識別目標視圖。ActionForward對象建立自<forward>元素位于struts-config.xml。下面是一個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í)行請求處理器的execute(…)方法的結果,當傳遞一個值匹配指定于<forward>元素中name屬性的值的時候,下一個視圖可以在execute(…)方法中被開發(fā)者用方便的方法org.apache.struts.actio

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

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

67、ot;/></p><p>  如果redirect=true, URL建立如/contextPath/path因為HttpServletResponse.sendRedirect(…)中解釋URL采用”/”開頭相對于servlet容器根目錄。</p><p>  如果redirect=false, URI建立如/path因為ServletContext.getRequestDisp

68、tacher(…)采用虛擬目錄相關URL。</p><p>  在此稍稍說一下有關global-forwards的概念。其在配置文件中描述了整個應用系統(tǒng)可以使用的ActionForward,而不是僅僅是一個特定的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捕獲表單數據</p><p>  一個應用系統(tǒng)的消息轉移(或者說狀態(tài)轉移)的非持久性數據存儲,是由ActionForm Bean的負責保持的。ActionForm派生的對象用于保存請求對象的參數,因此它們和用戶緊密聯系。一個ActionForm類被RequestProcessor建立。這是發(fā)生在已完成向前進到一個URL,該URL為映射到控制器servlet而不是JSP和相應的動作映射指定的表單屬性的。在

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

72、僅當ActionMapping對象中validate屬性被設為true時,validate(…)方法被調用;這就是默認的行為。request.getParameterValues(parameterName)被用于得到一個String[]對象,它用來表單填充;驗證的結果應該是一個ActionErrors對象,用org.apache.struts.taglib.html.ErrorsTag來顯示驗證錯誤給用戶。ActionForm也可以被

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

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

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

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

77、驗證。</p><p>  有關其詳細信息,請參考http://home.earthlink.net/~dwinterfeldt 。個人建議對于小型應用系統(tǒng)可以采用這種配置方式,但是對于應用系統(tǒng)中有大量web層表單應用的系統(tǒng),并且業(yè)務需求變動比較大的,使用validation framework 可能會加重開發(fā)難度、系統(tǒng)維護難度??梢越梃bvalidation framework的Javascript Valida

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

79、><p>  Struts-bean.tld</p><p>  使訪問bean以及新bean的定義更容易,,為了實現國際化,應使用不同的屬性文件</p><p>  struts-html.tld</p><p>  提供顯示HTML對象(例如,表單、按鈕和復選框)的簡便方法</p><p>  struts-logic

80、.tld</p><p>  支持邏輯構造,以便可以有條件地顯示文本或者作為處理循環(huán)的結果來顯示文本</p><p>  struts-template.tld</p><p>  支持使用在運行時可以修改的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>  每個<taglib>偽指令都

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

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

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

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

86、plication”參數的值。如:</p><p>  \WEB-INF\classes\ApplicationResources.properties</p><p>  ― 消息標記中的key屬性指向屬性文件中的“鍵-字符串”對;在本例中,指向下面的“鍵-字符串”對:</p><p>  market. text.title=Current Market Con

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

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

89、resent></p><p>  Struts標記允許很方便地訪問Java bean內容。例如,以下標記將解析為存儲在 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之間的數據傳送是通過使用html:form 和html:text標記來完成的。 register.jsp中的輸入表單是按如下所示構建的:</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 標記解析為HTML FORM 標記并導致html: text 標記引用適當的表單bean;特別是在 path=“/

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

93、p>  JSP視窗組件所使用的 struts標記庫由四類標記組成:</p><p>  Bean標記:用來在JSP頁中管理bean</p><p>  邏輯標記:用來在JSP頁中控制流程</p><p>  HTML標記:用來生成HTML標記,在表單中顯示數據,使用會話ID對URL進行編程</p><p>  模板標記:使用動

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

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

96、復制標記</b></p><p>  可定義新bean,可復制現有bean,還可從現有bean復制屬性。</p><p>  <bean:define>標記用來:</p><p><b>  定義新字符串常數</b></p><p>  將現有的bean復制到新定義的bean對象</p>

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

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

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

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

101、</p><p>  <bean:include>標記將對一個資源的響應進行檢索,并引入一個腳本變量和字符串類型的頁作用域屬性。這個資源可以是一個頁,一個ActionForward或一個外部URL。與<jsp:include>的不同是資源的響應被存儲到一個頁作用域的bean中,而不是寫入到輸出流。例如:</p><p>  <bean:include id=”

102、myInclude” page=”MyJsp?x=1”/></p><p>  腳本變量的名稱是myInclude,要檢索的響應來自資源MyJsp?x=1。</p><p>  <bean:resource>標記將檢索web應用中的資源,并引入一個腳本變量和InputStream或字符串類型的頁作用域屬性。如果在檢索資源時發(fā)生問題,就會產生一個請求時間異常。例如:<

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>  標記庫中定義了<bean:write>標記,用來將bean的屬性輸送到封裝的JSP頁寫入器。這個標記與<jsp:getProperty>類似,例如:</p><p>  <bean:write name=”myBean” property=”myProperty” scope=”request” filter=”true”/></p>

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

106、的消息都使用了適當的語言。一個應用程序可能提供了很多資源文件,每個文件提供了用不同語言編寫的消息。如果沒有找到所選語言的資源文件,就將使用默認的資源文件。</p><p>  struts框架對國際化的支持是使用<bean:message>標記,以及使用java.util數據包中定義的Locale和ResourceBundle類來實現Java2平臺對這些任務的支持。Java.text.MessageF

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

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

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

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

111、特定用戶計算機的區(qū)域對象?,F在可以運行一個國際化的web站點,它可以根據用戶計算機上的設置的區(qū)域自動以相應的語言顯示。</p><p>  我們還可以使用特定的字符串來替換部分消息,就象用java.text.MessageFormat的方法一樣:</p><p>  error.invalid.number = The number {0} is valid</p><

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

113、”5” arg1=”6” arg2=”7” arg3=”8”/></p><p>  這個信息標記輸出到JSP頁會顯示為:The numbers entered are 5,6,7,8</p><p><b>  邏輯標記</b></p><p>  邏輯庫的標記能夠用來處理外觀邏輯而不需要使用scriptlet.Struts邏輯標簽庫包

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

溫馨提示

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

評論

0/150

提交評論