Struts 培訓(xùn)教程

上傳人:無*** 文檔編號(hào):55184747 上傳時(shí)間:2022-02-17 格式:DOCX 頁數(shù):27 大?。?82.72KB
收藏 版權(quán)申訴 舉報(bào) 下載
Struts 培訓(xùn)教程_第1頁
第1頁 / 共27頁
Struts 培訓(xùn)教程_第2頁
第2頁 / 共27頁
Struts 培訓(xùn)教程_第3頁
第3頁 / 共27頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《Struts 培訓(xùn)教程》由會(huì)員分享,可在線閱讀,更多相關(guān)《Struts 培訓(xùn)教程(27頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、編號(hào): 時(shí)間:2021年x月x日 書山有路勤為徑,學(xué)海無涯苦作舟 頁碼:第27頁 共27頁 Struts 培訓(xùn)教程 1 概述 在這份教程中,我將介紹struts框架和與struts框架有關(guān)的技術(shù)。該教程主要分為以下幾部分: § MVC模式 § Struts的概念和體系結(jié)構(gòu) § Struts中主要技術(shù)的介紹 § 用jBuilder8開發(fā)struts應(yīng)用程序 2 MVC模式 所謂的MVC模式,即 模型—視圖—控制器(model—view--controller)模式。其結(jié)構(gòu)圖如下: View Controller Model

2、 § Model端 在MVC中,模型是執(zhí)行某些任務(wù)的代碼,而這部分代碼并沒有任何邏輯決定它對(duì)用戶端的表示方法。Model只有純粹的功能性接口,也就是一系列的公開方法,通過這些公開方法,便可以取得模型端的所有功能。在struts框架中,Model端是用Action和EJB技術(shù)實(shí)現(xiàn)的。 § View端 在MVC模式里,一個(gè)Model可以有幾個(gè)View端,而實(shí)際上復(fù)數(shù)的View端是使用MVC的原始動(dòng)機(jī)。使用MVC模式可以允許多于一個(gè)的View端存在,并可以在需要的時(shí)候動(dòng)態(tài)的登記上所需要的View. § Controller端 MVC模式的視圖端是與MVC的控制器結(jié)合使用的。當(dāng)用戶

3、端與相應(yīng)的視圖發(fā)生交互時(shí),用戶可以通過視窗更新模型的狀態(tài),而這種更新是通過控制器端進(jìn)行的??刂破鞫送ㄟ^調(diào)用模型端的方法更改其狀態(tài)值。與此同時(shí),控制器端會(huì)通知所有的登記了的視圖刷新顯示給用戶的表示。 在現(xiàn)在的j2ee應(yīng)用中,我們?cè)陂_發(fā)web server時(shí)基本上都是采用MVC模式來開發(fā)的,j2ee規(guī)范也相應(yīng)的為我們提供了技術(shù)支持,請(qǐng)看下圖: Web Server 2 6 5 Browser Action Servlet EJB Server

4、 1 2 3 5 4 JSP 7 1 瀏覽器用戶執(zhí)行servlet的doGet方法; 2 servlet根據(jù)不同的請(qǐng)求,將他們分發(fā)到不同的Action中。在這里,servl

5、et的作用就好比是controller; 3 Action調(diào)用EJB層的商務(wù)邏輯程序處理用戶的請(qǐng)求; 4 EJB層返回給Action處理結(jié)果; 5 Action 對(duì)將處理結(jié)果返回給servlet。在這里,可以將Action 和 EJB共同看成是model 6 servlet將信息發(fā)送給JSP頁面。這里的JSP就相當(dāng)于view; 7 browser用戶瀏覽JSP頁面; 大家可以看到,JSP、servlet和EJB各自在MVC模式中所起到的作用。 使用MVC的優(yōu)點(diǎn)如下: § 可靠性(Reliability):將表示層和處理層完全分開,可以在不重新編譯m

6、odel和controller的情況下修改view層。 § 復(fù)用性和適應(yīng)性(reuse & adaptability):MVC使你可以使用多種view去訪問相同的model。 § 快速開發(fā)(Rapid deployment):因?yàn)镸VC清晰的將表示層和處理層分開,所以使得不同的程序員可以各司其則,增加開發(fā)速度。 § 可維護(hù)性(Maintainability):清晰的分層同樣使得代碼清晰、程序的可維護(hù)性提高。 3 Struts的概念和體系結(jié)構(gòu) § 概述 struts源自于apache的jakarta工程,是一個(gè)開源代碼工程(http://jakarta.apache.o

7、rg/)?,F(xiàn)在struts最新的版本是1.2,而jBuilder自帶的版本是1.02。struts是一個(gè)完全遵照MVC模型設(shè)計(jì)的,web層的框架。 § struts與MVC模式 struts是一個(gè)完全遵照MVC模型設(shè)計(jì)的,web層的框架。在struts中,使用到了jsp、javabean、taglib和servlet技術(shù)。下圖是一個(gè)描述了struts框架的應(yīng)用請(qǐng)求的執(zhí)行路徑: 這個(gè)過程大體可以被分成5個(gè)基本步驟: 1 view發(fā)起一個(gè)請(qǐng)求 2 ActionServlet(servlet技術(shù)實(shí)現(xiàn))接受這個(gè)請(qǐng)求,它根據(jù)一份xml文件來得到處理這個(gè)請(qǐng)求的Actio

8、n對(duì)象,并將請(qǐng)求發(fā)送給這個(gè)Action對(duì)象。 3 Action對(duì)象接受這個(gè)請(qǐng)求,并調(diào)用model(EJB)去處理這個(gè)請(qǐng)求,并將處理結(jié)果返回給ActionServlet。 4 ActionServlet根據(jù)Action 的返回結(jié)果中的信息,決定將處理結(jié)果返回給對(duì)應(yīng)的view。 5 view得到處理結(jié)果,并將他顯示給用戶。 3.1 THE MODEL Struts框架提供Action作為model的一種實(shí)現(xiàn)。Action 是繼承org.apache.struts.action. Action的類,他用來處理用戶的請(qǐng)求,并將處理結(jié)果封裝在HttpServletRequest中,返回給A

9、ctionServlet。 3.2 THE VIEW Struts用JSP、taglib和javabean技術(shù)去實(shí)現(xiàn)view。JSP用來顯示視圖;struts通過使用自己定義的一組taglib來控制請(qǐng)求的流程、輔助處理結(jié)果的顯示;javabean用來保存用戶在JSP頁面中的輸入數(shù)據(jù),他用來方便的向Action傳遞用戶輸入數(shù)據(jù)。 3.3 THE CONTROLLER Struts用org.apache.struts.action.ActionServlet去實(shí)現(xiàn)controller的功能。這個(gè)servlet接收所有JSP頁面發(fā)送的請(qǐng)求,根據(jù)一份配置文件得到處理相應(yīng)用戶

10、請(qǐng)求的Action,并調(diào)用Action去處理用戶的請(qǐng)求。當(dāng)Action處理結(jié)束后,ActionServlet接受處理結(jié)果,并根據(jù)同樣的配置文件將處理結(jié)果發(fā)送當(dāng)相應(yīng)的JSP頁面。 4 Struts主要技術(shù)介紹 4.1 相關(guān)技術(shù) 學(xué)習(xí)Struts,首先要了解一下以下相關(guān)技術(shù)。(有些部分只提供相關(guān)的資料鏈接,不做講解)。 4.1.1 JavaBeans 大多數(shù)JavaBeans是由JavaBeans來編寫的. · The JavaBeans Component Architecture Documentation page at , including a link to downloa

11、d the JavaBeans 1.01 Specification · The JavaBean Trail in the Java Tutorial · JavaBeans Components in JSP Pages in the Java Web Services Tutorial 4.1.2 反射和內(nèi)省 反射機(jī)制是一種決定一個(gè)對(duì)象哪些成員域和成員方法被采用的過程。內(nèi)省技術(shù)是反射機(jī)制的一種特殊機(jī)制,Structs使用內(nèi)省技術(shù)轉(zhuǎn)換HTTP參數(shù)為JavaBean的屬性,讀取JavaBean屬性裝配HTML字段。 · The Reflection Trail · C

12、hapter 8 of the JavaBeans API Specification 4.1.3 屬性文件和ResourceBundles 4.1.3.1 屬性文件 屬性文件主要用來設(shè)置程序?qū)傩裕瑢傩晕募暮缶Y名為.properties,屬性文件的格式類似于以下內(nèi)容: book=my computer book pages=120 authors=zhf seminar=12 4.1.3.2 使用屬性文件 java.util包中Properties類用來管理一個(gè)Key/value對(duì),Properties類提供了以下方法: load()方法:Loading key

13、/value pairs into a Properties object form a Stream 從一個(gè)輸入流中加載 getProperty()方法:Retrieving a value from its key 通過關(guān)鍵字來獲得值 list()方法:Listing the keys and their values 列舉 Save()方法:Saving the properties to a stream 保存屬性 具體例子如下 import java.util.*; import java.io.*; public class useProperti

14、es { public static void main(String[] args) { try{ Properties defaultProps=new Properties(); FileInputStream file=new FileInputStream("test.properties"); defaultProps.load(file); file.close(); defaultProps.list(System.out); System.out.println("

15、getProperty(String key,Stringdefault)= " +defaultProps.getProperty("book")); FileOutputStream out=new FileOutputStream("appProperties"); defaultProps.store(out,"-----no comment--"); out.close(); }catch(Exception e) { e.printStackTrace(); } } } 4.1.3.3 使用本地化數(shù)

16、據(jù) 使用本地化數(shù)據(jù),需要建立多個(gè)屬性文件,假設(shè)我們系統(tǒng)中需要支持德文和法文,我們的默認(rèn)屬性文件為L(zhǎng)abelsBundle.properties文件,那么我們需要建立德文和法文所對(duì)應(yīng)的屬性文件: LabelBundle_de.properties LabelBundle_fr.properties # LabelsBundle.properties 內(nèi)容 s1 = computer s2 = disk s3 = monitor s4 = keyboard # LabelsBundle_de.properties內(nèi)容 s1 = Computer s2 = Platte

17、 s3 = Monitor s4 = Tastatur # LabelsBundle_fr.properties內(nèi)容 s1 = Computerfr s2 = Plattefr s3 = Monitorfr s4 = Tastaturfr 4.1.3.4 ResoureBundle和Locale                                   通過ResourceBundle結(jié)合Locale對(duì)象可以選擇屬性文件: 下面我們給一個(gè)具體的例子 import java.util.*; import java.io.*; public clas

18、s ResourceBundleDemo{ public static void main(String[] args) { //采用了德國(guó)設(shè)置 Locale currentLocal=Locale.GERMAN; ResourceBundle labels=ResourceBundle.getBundle("LabelsBundle",currentLocal); String myValue=labels.getString("s2"); System.out.println(" Local=GERMAN ; S2= "+myValu

19、e); //采用了法國(guó)設(shè)置 currentLocal=Locale.FRENCH; labels=ResourceBundle.getBundle("LabelsBundle",currentLocal); myValue=labels.getString("s2"); System.out.println(" Local= FRENCH ; S2= "+myValue); } } 更多的內(nèi)容可以查看: · Using Properties to Manage Program Attributes in The Java T

20、utorial · About the ResourceBundle Class in the Java Tutorial 4.1.4 JSP和JSP標(biāo)簽庫 Jsp中提供了一些標(biāo)準(zhǔn)的標(biāo)簽: useBean,setProperty/getProperty,include,forward,plugin。 使用例子如: 這些標(biāo)準(zhǔn)的標(biāo)簽,為操作JavaBean和相應(yīng)請(qǐng)求等提供便利,除此之外,JSP技術(shù)允許我們自己封裝特有的標(biāo)簽,來簡(jiǎn)化應(yīng)用程序開發(fā)。有經(jīng)驗(yàn)的開

21、發(fā)者可以利用標(biāo)簽處理表單,訪問數(shù)據(jù)庫或其他企業(yè)服務(wù)(如e-mail或目錄服務(wù)等)。 4.1.4.1 標(biāo)簽的主要技術(shù) 可以在JSP頁面中設(shè)置標(biāo)簽的參數(shù)。 可以訪問JSP頁面中所有的對(duì)象。 可以獲得JSP頁面的Response對(duì)象。 標(biāo)簽之間互相通訊。 標(biāo)簽可以被嵌套,實(shí)現(xiàn)標(biāo)簽的多層使用。 4.1.4.2 標(biāo)簽的使用 為了能夠在jsp頁面中使用一個(gè)標(biāo)簽,我們需要變現(xiàn)一個(gè)實(shí)現(xiàn)了TagSupport類的java程序,然后通過tld文件,定義該標(biāo)簽的屬性,然后通過web.xml聲明這個(gè)tld文件,最后才可以在JSP頁面中使用標(biāo)簽的。 下面我還是根據(jù)例子來簡(jiǎn)單講一下

22、詳細(xì)代碼下src/taguse目錄下。 4.1.4.2.1 定制標(biāo)簽類 package com.zhfelva.tag; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; import java.io.*; /** * 一個(gè)顯示當(dāng)前時(shí)間的標(biāo)簽 */ public class CurrentTimeTag extends TagSupport { public int doStartTag() { try { JspWriter out = pageContext.get

23、Out(); java.util.Date dt = new java.util.Date(System.currentTimeMillis()); out.print(dt.getHours()+":"+dt.getMinutes()+":"+dt.getSeconds()); } catch(IOException ioe) { System.out.println("Error in CurrentTimeTag: " + ioe); } return(SKIP_BODY); } } 4.1.4.2.2 編

24、寫標(biāo)簽定義文件 放于\WEB-INF\taglib\mytaglib.tld 1.0 1.1

25、current time A tag library for show current time CurrentTime com.zhfelva.tag.CurrentTimeTag EMPTY show current time 4.1.4.2.3

26、 在web.xml中進(jìn)行配置 一個(gè)網(wǎng)頁應(yīng)用程序要在web.xml中聲明他要使用的標(biāo)簽庫: my-taglib

27、on> /WEB-INF/taglib/mytaglib.tld 4.1.4.2.4 簡(jiǎn)單標(biāo)簽的使用 以上配置做好之后,就可以在JSP頁面中使用標(biāo)簽了: currenttime.jsp <%@ page contentType="text/html;charset=gb2312" %> <%@ taglib uri="my-taglib" prefix="mytag" %> 顯示當(dāng)前時(shí)間 - JSP/Ta</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>28、gLib

顯示當(dāng)前時(shí)間 - JSP/TagLib

Struts中真正將標(biāo)簽庫應(yīng)用了起來,大家可以從中看到標(biāo)簽庫的強(qiáng)大功能。 更多的內(nèi)容可以查看: · The JavaServer Pages Technology page at · The JSP 1.1 and 1.2 Specifications download page at · JavaServer Pages Technology in the J

29、ava Web Services Tutorial · Custom Tags in JSP Pages in the Java Web Services Tutorial 4.1.5 XML相關(guān)技術(shù) 這里,相關(guān)的內(nèi)容非常多,而且很重要,相信大家也都熟悉XML技術(shù),由于時(shí)間關(guān)系,這里就不做講述了。 4.2 主要技術(shù) 4.2.1 Struts體系結(jié)構(gòu) Client IE or Netscape Controller ActionServlet Business Logic Action Model JavaBean or EJB View JSP HT

30、TP Request Action Form HTTP Response Struts-config.xml Struts體系圖 控制:通過Struts體系圖大家可以看到有一個(gè)XML文件Struts-config.xml,與之相關(guān)聯(lián)的是Controller,在Struts中,承擔(dān)MVC中Controller角色的是一個(gè)Servlet,叫ActionServlet。ActionServlet是一個(gè)通用的控制組件。這個(gè)控制組件提供了處理所有發(fā)送到Struts的HTTP請(qǐng)求的入口點(diǎn)。它截取和分發(fā)這些請(qǐng)求到相應(yīng)的動(dòng)作類(這些動(dòng)作類都是Action類的子類)。另外控制組

31、件也負(fù)責(zé)用相應(yīng)的請(qǐng)求參數(shù)填充 Action From(通常稱之為FromBean),并傳給動(dòng)作類(通常稱之為ActionBean)。動(dòng)作類實(shí)現(xiàn)核心商業(yè)邏輯,它可以訪問java bean 或調(diào)用EJB。最后動(dòng)作類把控制權(quán)傳給后續(xù)的JSP 文件,后者生成視圖。所有這些控制邏輯利用Struts-config.xml文件來配置。 視圖:主要由JSP生成頁面完成視圖,Struts提供豐富的JSP 標(biāo)簽庫: Html,Bean,Logic,Template等,這有利于分開表現(xiàn)邏輯和程序邏輯。 模型:模型以一個(gè)或多個(gè)java bean的形式存在。這些bean分為三類:Action Form、Acti

32、on、JavaBean or EJB。Action Form通常稱之為FormBean,封裝了來自于Client的用戶請(qǐng)求信息,如表單信息。Action通常稱之為ActionBean,獲取從ActionSevlet傳來的FormBean,取出FormBean中的相關(guān)信息,并做出相關(guān)的處理,一般是調(diào)用Java Bean或EJB等。 流程:在Struts中,用戶的請(qǐng)求一般以*.do作為請(qǐng)求服務(wù)名,所有的*.do請(qǐng)求均被指向ActionSevlet,ActionSevlet根據(jù)Struts-config.xml中的配置信息,將用戶請(qǐng)求封裝成一個(gè)指定名稱的FormBean,并將此FormBean傳

33、至指定名稱的ActionBean,由ActionBean完成相應(yīng)的業(yè)務(wù)操作,如文件操作,數(shù)據(jù)庫操作等。每一個(gè)*.do均有對(duì)應(yīng)的FormBean名稱和ActionBean名稱,這些在Struts-config.xml中配置。 4.2.2 Struts的基本組件包 整個(gè)struts大約有15包,近200個(gè)類所組成,而且數(shù)量還在不斷的擴(kuò)展。在此我們不能一一介紹,只能列舉幾個(gè)主要的簡(jiǎn)要的介紹一下。下表說明了目前struts api中基本的幾個(gè)組件包,包括action,actions,taglib。圖片(5)則顯現(xiàn)了這幾個(gè)組件包之間的關(guān)系。其中action是整個(gè)struts framewor

34、k的核心 org.apache.struts.action 基本上,控制整個(gè)struts framework的運(yùn)行的核心類、組件都在這個(gè)包中,比如我們上面提到的控制器ActionServlet,Action,ActionForm,ActionMapping等等。struts1.1比1.0多了 DynaActionForm 類。增加了動(dòng)態(tài)擴(kuò)展生成FormBean功能 org.apache.struts.actions 這個(gè)包是主要作用是提供客戶的http請(qǐng)求和業(yè)務(wù)邏輯處理之間的特定適配器轉(zhuǎn)換功能,而1.0版本中的部分動(dòng)態(tài)增刪FromBean的類,也在struts1.1中被Action包的

35、DynaActionForm組件所取代 org.apache.struts.taglib 這不是一個(gè)包,而是是一個(gè)客戶標(biāo)簽類的集合。下面包括Bean Tags,HTML Tags,Logic Tags,Nested Tags,Template Tags這幾個(gè)用于構(gòu)建用戶界面的標(biāo)簽類。 Struts的基本組件關(guān)系圖 對(duì)于Struts 如何控制、處理客戶請(qǐng)求,讓我們通過對(duì)struts的四個(gè)核心組件介紹來具體說明。這幾個(gè)組件就是:ActionServlet。Action Classes,Action Mapping(此處包

36、括ActionForward),ActionFrom Bean。 4.2.3 Struts ActionServlet ActionServlet繼承自javax.servlet.http.HttpServlet類,其在Struts framework中扮演的角色是控制器,參看上面的“Struts體系圖”??刂破鰽ctionServlet主要負(fù)責(zé)將客戶的HTTP請(qǐng)求信息組裝后,根據(jù)配置文件的指定描述,轉(zhuǎn)發(fā)到適當(dāng)?shù)奶幚砥鳌?按照Servelt的標(biāo)準(zhǔn),所有得Servlet必須在web配置文件(web.xml)聲明。同樣,ActoinServlet必須在Web Application配置文件(

37、web.xml)中描述,有關(guān)配置信息,后面將會(huì)介紹。 當(dāng)用戶向服務(wù)器端提交請(qǐng)求的時(shí)候,實(shí)際上信息是首先發(fā)送到控制器ActionServlet,一旦控制器獲得了請(qǐng)求,其就會(huì)將請(qǐng)求信息傳交給一些輔助類(help classes)處理。這些輔助類知道如何去處理與請(qǐng)求信息所對(duì)應(yīng)的業(yè)務(wù)操作。在Struts中,這個(gè)輔助類就是org.apache.struts.action.Action。通常開發(fā)者需要自己繼承Aciton類,從而實(shí)現(xiàn)自己的Action實(shí)例。 4.2.4 Struts Action Classes public ActionForward execute(ActionMa

38、pping?mapping, ActionForm?form, javax.servlet.ServletRequest?request, javax.servlet.ServletResponse?response) throws java.io.IOException,javax.servlet.ServletException Action類所作的工作,正如

39、它的名稱一樣,就是具體的業(yè)務(wù)操作。Action類中最為常用的是execute()方法。 當(dāng)Controller收到客戶的請(qǐng)求的時(shí)候,就會(huì)將請(qǐng)求轉(zhuǎn)移到一個(gè)Action實(shí)例,然后會(huì)調(diào)用這個(gè)Action實(shí)例的execute()方法。Struts Framework為應(yīng)用系統(tǒng)中的每一個(gè)Action類只創(chuàng)建一個(gè)實(shí)例。所有的用戶都使用這一個(gè)實(shí)例, Action 類運(yùn)行在一個(gè)多線程的環(huán)境中。 注意,客戶自己繼承的Action子類,必須重寫execute()方法,因?yàn)锳ction類在默認(rèn)情況下是返回null的。 4.2.5 Struts Action Mapping 上面講到了一個(gè)客戶

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

42、屬性用來和JSP頁面中,調(diào)用時(shí)的action屬性相對(duì)應(yīng),它將JSP頁面和處理這個(gè)JSP頁面的Action對(duì)象對(duì)應(yīng)起來。 Type: 對(duì)應(yīng)的Action子類的完整類名。 Name: 對(duì)應(yīng)的ActionForm的名稱。他與下面將描述的元素的name屬性相應(yīng)。 Scope:這個(gè)屬性表示相對(duì)應(yīng)的ActionForm bean 的scope屬性。它的值可以是“page”、“request”、“session”和“application”。分別對(duì)應(yīng)java bean的“page”、“request”、“session”和“application”屬性。

43、Input:這個(gè)屬性表示如果對(duì)應(yīng)的ActionForm的validate方法返回值的ActionErrors非空,即ActionForm的屬性沒有通過校驗(yàn),則跳轉(zhuǎn)到當(dāng)前的頁面。 Validate: 是否調(diào)用FormBean的validate()方法來驗(yàn)證,關(guān)閉它之后就不會(huì)報(bào)出錯(cuò)誤信 息了。True表示需要調(diào)用validate方法;false表示不需要調(diào)用validate方法。 forward:定義可能的跳轉(zhuǎn)路徑。Name屬性表示Action類的execute方法中,生成的返回結(jié)果時(shí)的參數(shù);path表示將要跳轉(zhuǎn)到的頁面的路徑。

44、an name="LoginForm" type="com.test.LoginForm"/> 上面的配置表示:當(dāng)可以通過/logonAction.do提交請(qǐng)求信息的時(shí)候,控制器將信息委托com.test.LogonAction處理。調(diào)用LogonAction實(shí)例的execute()方法。同時(shí)將Mapping實(shí)例和所對(duì)應(yīng)的LogonForm Bean信息傳入。其中name=LogonForm,使用的form-bean元素所聲明的ActionForm Bean。有關(guān)form-bean的聲明如下顯示。 有兩個(gè)屬性: name

45、 :這個(gè)ActionForm的名字,他與被JSP頁面中的元素的name屬性應(yīng)該是相同的。比如,如果在一個(gè)JSP頁面中需要生成一個(gè)ActionForm對(duì)象,這個(gè)對(duì)象的名字(就是name屬性)是“LoginForm”,則JSP頁面中的元素的name屬性也應(yīng)該是“LoginForm”。   Type?。哼@個(gè)ActionForm對(duì)象的完整類名。這個(gè)屬性和JSP頁面中的元素的type屬性是相對(duì)應(yīng)的。 在此稍稍說一下有關(guān)global-forwards的概念。其在配置文件中描述了整個(gè)應(yīng)用系統(tǒng)可以使用的ActionForward,而

46、不是僅僅是一個(gè)特定的Action。 元素用來表示全局的跳轉(zhuǎn)頁面。和元素一樣,他有無數(shù)個(gè)元素。當(dāng)一個(gè)Action對(duì)象的execute方法執(zhí)行完畢以后,如果他返回的ActionForward對(duì)象沒有在這個(gè)元素的子元素中有對(duì)應(yīng)值的話,他將要查找中的元素,并跳轉(zhuǎn)到相應(yīng)頁面。 前面我們講過Struts采用屬性文件來保存應(yīng)用程序的信息,那么,Struts如何知道屬性文件的路徑呢,也在struts-config.xml文件來配置: 元素用來表示ApplicationResources.properties文件的位置。這個(gè)元素有一個(gè)屬性――parameter,這個(gè)屬性用來表示ApplicationR

48、esources.properties文件的存放地點(diǎn),但有意思的是,他是用一個(gè)類名來來表示存放路徑的。比如“com. ApplicationResources”是表示存放在WEB-INF/classes / com 路徑下面的ApplicationResources.properties文件。上圖表示的文件路徑為WEB-INF/classes /test/ApplicationResources.properties。 注意:以上所述的這些元素在struts-config.xml文件中的位置也是有先后順序的。它們的順序是: < global-forwards

49、 > < message-resources > 4.2.6 Struts ActionForm Bean 在上面講解ActionServlet,Action Classes和Action Mapping的時(shí)候,我們都提到了ActionForm Bean的概念。ActionForm的主要功能就是為Action的操作提供提交表單相映射的數(shù)據(jù)。 對(duì)于每一個(gè)客戶請(qǐng)求,Struts framework在處理ActionForm的時(shí)候,一般需要經(jīng)歷如下幾個(gè)步驟: (1)檢查Action的映射,確定Action中已經(jīng)配置了對(duì)ActionForm的映射 (2)根據(jù)name

50、屬性,查找form bean的配置信息 (3)檢查Action的formbean的使用范圍,確定在此范圍下,是否已經(jīng)有此form bean的實(shí)例。 (4)假如當(dāng)前范圍下,已經(jīng)存在了此form bean的實(shí)例,而是對(duì)當(dāng)前請(qǐng)求來說,是同一種類型的話,那么就重用。 (5)否則,就重新構(gòu)建一個(gè)form bean的實(shí)例 (6)form bean的reset()方法備調(diào)用 (7)調(diào)用對(duì)應(yīng)的setter方法,對(duì)狀態(tài)屬性賦值 (8)如果validatede的屬性北設(shè)置為true,那么就調(diào)用form bean的validate()方法。 4.3 例子講解 在這一部分,我將根據(jù)

51、一個(gè)簡(jiǎn)單的例子去詳細(xì)的介紹一下struts框架的具體用法。 4.3.1 環(huán)境安裝 4.3.1.1 利用Jbuilder8.0 使用Struts 1.1(版本) 目前Jbuilder中默認(rèn)帶的都是struts1.0版本,我們使用的是struts1.1版本,所以 需要手動(dòng)的配置相關(guān)的類庫 第一步:Struts1.1版本的獲得 可以通過訪問jakarta.apche.org的方式來下載,也可以從我機(jī)器的共享目錄拷貝: IP:150.18.17.150 或機(jī)器名zhf User: guest PWD: 空 內(nèi)容: src文件夾下 有 Jarkarta

52、-struts-1.1-rc1 Jarkarta-struts-1.1-rc1-src Example_struts(例子文件源代碼,可以用Jbuilder直接打開) Properties(屬性文件使用例子) Taguse(taglib例子) 還有一些資料。 第二步: Jbuilder配置Struts1.1 首先將Struts1.1文件(包括源碼)拷貝至jbuilder/thirdparty目錄下: 打開jbuilder,選擇tools/configure

53、libraries,在彈出的窗口上點(diǎn)擊new 按鈕 Name :struts1.1 Location :Jbuilder 點(diǎn)擊 Ok,回到剛才的界面,你會(huì)看到多出的一項(xiàng)struts1.1,選中它,在右邊的class標(biāo)簽中點(diǎn)擊Add按鈕,將所帶的所有jar包添加進(jìn)去,最后的效果如下圖: 然后選擇FrameWork標(biāo)簽,在其中的Framework上選擇Struts即可。 (這里Jbuilder會(huì)自動(dòng)識(shí)別版本的)。 4.3.1.2 利用Jbuilder創(chuàng)建支持Struct1.1的工程: 首先建立一個(gè)jbuilder工程文件,名稱可以自己定,這里我使用

54、的easyuse 然后建立一個(gè)war文件,名稱可以自己定,這里我使用的easyuse,注意在下面的選項(xiàng)中使用Struts1.1(Struts1.1)Frameworks 這時(shí)程序的項(xiàng)目瀏覽器內(nèi)容如下 我們可以看到一個(gè)Struts1.1節(jié)點(diǎn)出現(xiàn)在樹形圖中,證明你前面的操作是正確的。 4.3.1.3 利用Jbuilder支持的Stucts對(duì)象創(chuàng)建向?qū)В? 當(dāng)我們點(diǎn)擊新建按鈕之后,我們可以看到在 Web標(biāo)簽下的其他對(duì)象。 Struts Converter ActionForm Action JSP from

55、ActionForm 大家可以跟著向?qū)б徊揭徊絹聿僮鳌? 4.3.2 程序編寫 4.3.2.1 任務(wù)描述。 createBook.jsp----輸入一本書的標(biāo)題和頁碼。 bookview.jsp---正常運(yùn)轉(zhuǎn)之后,此界面將會(huì)獲得createBook.jsp傳來的title參數(shù)。 再次提交之后,又回到了creatbook.jsp界面,一個(gè)循環(huán)過程。 4.3.2.2 ActionForm類 為了便于講述,我在講解內(nèi)容寫入代碼中。 package test; import java.util.*; import

56、 org.apache.struts.action.*; import org.apache.struts.validator.ValidatorForm; import javax.servlet.http.*; public class BookActionForm extends ActionForm { //這里要求 所有的自己編寫的FormBean必須繼承ActionForm private String title=""; private int pages=0; //這里的兩個(gè)私有屬性字段,對(duì)應(yīng)了createBook.jsp

57、中的兩個(gè)文本框,Struts會(huì)自動(dòng)給它們賦 //值的 public void setTitle(String title) { this.title=title;} public String getTitle() { return this.title;} public void setPages(int pages) { this.pages=pages;} public int getPages() { return this.pages

58、;} //Stuts會(huì)自動(dòng)調(diào)用ActionForm的validate()方法,來對(duì)輸入信息進(jìn)行校驗(yàn)。 // validate()方法返回為ActionErrors,這如java的Exception處理機(jī)制。 public ActionErrors validate(ActionMapping actionMapping, HttpServletRequest httpServletRequest) { ActionErrors errors =new ActionErrors(); if((title==null)||(title.length()<3))

59、 { errors.add("Title", new ActionError("error.book.title")); } if(pages<1) { errors.add("Page",new ActionError("error.book.page")); } return errors; } public void reset(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {

60、 title = null; pages = 0; } } 4.3.2.3 Struts-config.xml 這是Struts核心文件,Struts-config.xml集中了所有頁面的導(dǎo)航定義。對(duì)于大型的WEB項(xiàng)目,通過此配置文件即可迅速把握其脈絡(luò),這不管是對(duì)于前期的開發(fā),還是后期的維護(hù)或升級(jí)都是大有裨益的。掌握Struts-config.xml是掌握Struts的關(guān)鍵所在。

61、ftware Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> //FormBean的聲明 //公共跳轉(zhuǎn)

62、 //action申明

63、ame="bookActionForm" scope="request" validate="true" input="/createBook.jsp" /> //屬性文件聲明 4.3.2.4 Action類 package test; import org.ap

64、ache.struts.action.*; import javax.servlet.http.*; public class BookAction extends Action { //這里要求 所有的自己編寫的Action子類 必須繼承Action public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)

65、{ System.out.println("Start perform("+actionForm+")....."); //我們首先從request中獲得參數(shù) String title=httpServletRequest.getParameter("title"); String strPages=httpServletRequest.getParameter("pages"); System.out.println("getParameter title :"+title); System.out.println("getParameter

66、 Pages:"+strPages); System.out.println("run in this ----"); //我們?cè)購腇ormBean中獲得參數(shù) title=((BookActionForm)actionForm).getTitle() ; strPages=""+ ((BookActionForm)actionForm).getPages() ; System.out.println(" after BookActionForm "); System.out.println("BookActionForm title :"+title); System.out.println("BookActionForm Pages:"+strPages);

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!