国内在线观看一区二区三区,黄色av网站在线,国产69久久http://www.aygfsteel.com/kylixlu/category/28323.htmlzh-cnMon, 21 Jan 2008 05:40:04 GMTMon, 21 Jan 2008 05:40:04 GMT60Struts常見(jiàn)錯(cuò)誤的全面匯總http://www.aygfsteel.com/kylixlu/archive/2008/01/20/176620.html陸昱相陸昱相Sun, 20 Jan 2008 11:15:00 GMThttp://www.aygfsteel.com/kylixlu/archive/2008/01/20/176620.htmlhttp://www.aygfsteel.com/kylixlu/comments/176620.htmlhttp://www.aygfsteel.com/kylixlu/archive/2008/01/20/176620.html#Feedback0http://www.aygfsteel.com/kylixlu/comments/commentRss/176620.htmlhttp://www.aygfsteel.com/kylixlu/services/trackbacks/176620.html  在struts-config.xml里定義了一個(gè)ActionForm,但type屬性指定的類不存在,type屬性的值應(yīng)該是Form類的全名。或者是,在Action的定義中,name或attribute屬性指定的ActionForm不存在。

  2、“Cannot find bean XXX in any scope”

  在Action里一般會(huì)request.setAttribute()一些對(duì)象,然后在轉(zhuǎn)向的jsp文件里(用tag或request.getAttribute()方法)得到這些對(duì)象并顯示出來(lái)。這個(gè)異常是說(shuō)jsp要得到一個(gè)對(duì)象,但前面的Action里并沒(méi)有將對(duì)象設(shè)置到request(也可以是session、servletContext)里。

  可能是名字錯(cuò)了,請(qǐng)檢查jsp里的tag的一般是name屬性,或getAttribute()方法的參數(shù)值;或者是Action邏輯有問(wèn)題沒(méi)有執(zhí)行setAttribute()方法就先轉(zhuǎn)向了。

  還有另外一個(gè)可能,純粹是jsp文件的問(wèn)題,例如會(huì)指定一個(gè)id值,然后在循環(huán)里使用這個(gè)值作為name的值,如果這兩個(gè)值不同,也會(huì)出現(xiàn)此異常。(都是一個(gè)道理,request里沒(méi)有對(duì)應(yīng)的對(duì)象。)

  3、“Missing message for key "XXX"”

  缺少所需的資源,檢查ApplicationResources.properties文件里是否有jsp文件里需要的資源,例如:

  這行代碼會(huì)找msg.name.prompt資源,如果AppliationResources.properties里沒(méi)有這個(gè)資源就會(huì)出現(xiàn)本異常。在使用多模塊時(shí),要注意在模塊的struts-config-xxx.xml里指定要使用的資源文件名稱,否則當(dāng)然什么資源也找不到,這也是一個(gè)很容易犯的錯(cuò)誤。

  4、“No getter method for property XXX of bean teacher”

  這條異常信息說(shuō)得很明白,jsp里要取一個(gè)bean的屬性出來(lái),但這個(gè)bean并沒(méi)有這個(gè)屬性。你應(yīng)該檢查jsp中某個(gè)標(biāo)簽的property屬性的值。例如下面代碼中的cade應(yīng)該改為code才對(duì):

  5、“Cannot find ActionMappings or ActionFormBeans collection”

  待解決。

  6、“Cannot retrieve mapping for action XXX”

  在.jsp的

  標(biāo)簽里指定action='/XXX',但這個(gè)Action并未在struts-config.xml里設(shè)置過(guò)。

  7、HTTP Status 404 - /xxx/xxx.jsp

  Forward的path屬性指向的jsp頁(yè)面不存在,請(qǐng)檢查路徑和模塊,對(duì)于同一模塊中的Action轉(zhuǎn)向,path中不應(yīng)包含模塊名;模塊間轉(zhuǎn)向,記住使用contextRelative="true"。

  8、沒(méi)有任何異常信息,顯示空白頁(yè)面

  可能是Action里使用的forward與struts-config.xml里定義的forward名稱不匹配。

  9、“The element type "XXX" must be terminated by the matching end-tag "XXX".”

  這個(gè)是struts-config.xml文件的格式錯(cuò)誤,仔細(xì)檢查它是否是良構(gòu)的xml文件,關(guān)于xml文件的格式這里就不贅述了。

  10、“Servlet.init() for servlet action threw exception”

  一般出現(xiàn)這種異常在后面會(huì)顯示一個(gè)關(guān)于ActionServlet的異常堆棧信息,其中指出了異常具體出現(xiàn)在代碼的哪一行。我曾經(jīng)遇到的一次提示如下:

  java.lang.NullPointerException

  at org.apache.struts.action.ActionServlet.parseModuleConfigFile(ActionServlet.java:1003)

  at org.apache.struts.action.ActionServlet.initModuleConfig(ActionServlet.java:955)

  為解決問(wèn)題,先下載struts的源碼包,然后在ActionServlet.java的第1003行插入斷點(diǎn),并對(duì)各變量進(jìn)行監(jiān)視。很丟人,我竟然把struts-config.xml文件弄丟了,因此出現(xiàn)了上面的異常,應(yīng)該是和CVS同步時(shí)不小心刪除的。

  11、“Resources not defined for Validator”

  這個(gè)是利用Validator插件做驗(yàn)證時(shí)可能出現(xiàn)的異常,這時(shí)你要檢查validation.xml文件,看里面使用的資源是否確實(shí)有定義,form的名稱是否正確,等等。



]]>
開(kāi)發(fā)框架:利用STRUTS實(shí)現(xiàn)國(guó)際化支持http://www.aygfsteel.com/kylixlu/archive/2007/12/28/171078.html陸昱相陸昱相Fri, 28 Dec 2007 01:54:00 GMThttp://www.aygfsteel.com/kylixlu/archive/2007/12/28/171078.htmlhttp://www.aygfsteel.com/kylixlu/comments/171078.htmlhttp://www.aygfsteel.com/kylixlu/archive/2007/12/28/171078.html#Feedback0http://www.aygfsteel.com/kylixlu/comments/commentRss/171078.htmlhttp://www.aygfsteel.com/kylixlu/services/trackbacks/171078.html

一.JSP頁(yè)面部分

  1. 頁(yè)面文字處理

  1.1概述

  由于STRUTS提供了很好的國(guó)際化的支持,因此JSP頁(yè)面可以STRUTS的這一特性做到國(guó)際化。

  STRUTS允許將不同語(yǔ)言的文字寫(xiě)在多個(gè)資源文件中,每個(gè)資源對(duì)應(yīng)一種語(yǔ)言,而在JSP頁(yè)面上則通過(guò)STRUTS標(biāo)簽< bean:message>來(lái)顯示文字,該標(biāo)簽可以根據(jù)瀏覽器的當(dāng)前語(yǔ)言設(shè)置確定從對(duì)應(yīng)的語(yǔ)種資源文件中取出字符串,顯示在頁(yè)面上。

  1.2資源文件

  實(shí)現(xiàn)國(guó)際化,首先需要準(zhǔn)備好資源文件,需要支持的語(yǔ)言各對(duì)應(yīng)一個(gè)。資源文件一定要用支持多國(guó)語(yǔ)言文字的文本編輯器(如WORD,一定不能用NOTEPAD、UE等)編寫(xiě),其格式如下:

  # Project international

  index.title=XX信息系統(tǒng)

  index.copyright=XXX有限公司 版權(quán)所有

  其中以#開(kāi)頭的行是注釋,其它的行都是KEY=VALUE的形式,定義了一個(gè)KEY對(duì)應(yīng)當(dāng)前語(yǔ)言下的文字。保存資源文件時(shí),需要在文件類型選項(xiàng)中選擇純文本類型,編碼選擇其它>>UTF-8,注意資源文件的擴(kuò)展名為.properties,文件名可以任意取。

  這樣保存的資源文件還不能直接被STRUTS使用,JDK提供了一個(gè)工具native2ascii對(duì)編寫(xiě)的資源文件進(jìn)行轉(zhuǎn)換,該工具位于%JDK%/bin/目錄下,一般在JDK正確安裝后可以直接在命令行使用。使用native2ascii工具轉(zhuǎn)換的資源的文件的命令行格式如下:

  native2ascii -encoding UTF-8 ApplicationResources.properties ApplicationResources_zh_CN.properties

  其中-encoding參數(shù)指明編寫(xiě)的資源文件的編碼格式,這里必須與編輯時(shí)選擇保存的編碼格式一致,后面兩個(gè)參數(shù)分別是需要轉(zhuǎn)換的資源文件名和轉(zhuǎn)換后保存的資源文件名。

  轉(zhuǎn)換后的資源文件名都必須以一個(gè)特定的前輟開(kāi)頭,該前輟寫(xiě)在struts-config.xml配置中,后輟是對(duì)應(yīng)語(yǔ)言的簡(jiǎn)稱,如

  英文(美國(guó)) ApplicationResources _en_US.properties

  中文(簡(jiǎn)體)ApplicationResources _zh_CN.properties

  中文(繁體)ApplicationResources _tw.properties

  泰語(yǔ) ApplicationResources _th.properties

  資源文件的存放目錄可以是/WEB-INF/classes/下的任意目錄,為了便于管理 ,建議在/WEB-INF/ classes/下建立目錄resources,將所有的資源文件都放在該目錄下。STRUTS通過(guò)配置文件struts-config.xml配置資源文件的所在位置,如:

  < message-resources parameter="resources.ApplicationResources" />

其中目錄以包的方式表示。

  1.3 JSP頁(yè)面顯示

  為了支持國(guó)際化,JSP頁(yè)面的編碼方式需要設(shè)成UTF-8,即在頁(yè)面的頭部加入以下幾行:

  < %@ page contentType="text/html; charset=UTF-8" %>

  < %@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

  ……(STRUTS及其它標(biāo)簽庫(kù)引用)

  < html:html locale="true">

  JSP頁(yè)面的中文字要全部寫(xiě)到資源文件中,注意每種語(yǔ)言資源文件都要寫(xiě)到,否則在使用某種語(yǔ)言訪問(wèn)系統(tǒng)時(shí)可能會(huì)報(bào)錯(cuò)。JSP中使用STRUTS標(biāo)簽< bean:message key="index.title"/>顯示資源文件中定義的字符串。這樣當(dāng)改變?yōu)g覽器的當(dāng)前語(yǔ)言后,頁(yè)面會(huì)自動(dòng)取得與瀏覽器當(dāng)前語(yǔ)言對(duì)應(yīng)的資源文件中的字符串顯示在頁(yè)面上。

  對(duì)于在ACTION的JAVA代碼中直接設(shè)置的變量,如需要在JSP頁(yè)面上進(jìn)行顯示,那么在設(shè)置變量時(shí)也需要從資源文件中通過(guò)KEY取到當(dāng)前語(yǔ)言的字符串,再使用request.setAttribute方法進(jìn)行設(shè)置,這樣在JSP頁(yè)面上使用< bean:write>標(biāo)簽展現(xiàn)設(shè)置的變量才會(huì)對(duì)應(yīng)不同的語(yǔ)言會(huì)呈現(xiàn)不同的字符串。

  在JAVA代碼中取資源文件的信息的方法是,首先通過(guò)Globals.MESSAGES_KEY從request或session變量中取得資源對(duì)象(MessageResources),再調(diào)用MessageResources.getMessage方法即可取得相應(yīng)的字符串,該方法需的兩個(gè)參數(shù)是當(dāng)前語(yǔ)言區(qū)域設(shè)置(Locale)和字符串的KEY,其中當(dāng)前語(yǔ)言區(qū)域設(shè)置(Locale)保存在SESSION變量中,其變量名為Globals.LOCALE_KEY,該變量在下一節(jié)手工設(shè)置語(yǔ)言時(shí)也有提到。

  1.4手工設(shè)置顯示語(yǔ)言

  用瀏覽器的語(yǔ)言設(shè)置來(lái)決定系統(tǒng)采用哪種語(yǔ)言展現(xiàn)可能會(huì)出現(xiàn)一個(gè)問(wèn)題,就是用戶的瀏覽器語(yǔ)言與他想要使用系統(tǒng)的語(yǔ)言不一致的情況,如某客戶瀏覽器的語(yǔ)言設(shè)置為英文,但他還是在使用主站系統(tǒng)時(shí)看到的是中文界面。該問(wèn)題可以通過(guò)手工選擇語(yǔ)言來(lái)解決,在程序中可以通過(guò)設(shè)置名為Globals.LOCALE_KEY(Globals.LOCALE_KEY 是 struts的常量)的SESSION變量,也能改變系統(tǒng)中當(dāng)前語(yǔ)言的設(shè)置,代碼類似于:

   Locale newLocale = new Locale( language, country );
  session.setAttribute( Globals.LOCALE_KEY, newLocale );
  其中變量language, country 可以通過(guò)用戶的選擇設(shè)置相應(yīng)的值,各種語(yǔ)言的對(duì)應(yīng)值參考http://www.unicode.org/unicode/onlinedat/countries.html。

  2. 帶有文字的圖片處理

  2.1靜態(tài)圖片

  帶有文字的圖片應(yīng)該也要根據(jù)語(yǔ)言的不同而顯示不同的圖片,但圖片本身不是文本信息,無(wú)法直接用< bean:message>標(biāo)簽來(lái)完成國(guó)際化操作。但由于頁(yè)面上顯示圖片取決于< image>標(biāo)簽的src屬性,因此可以為每個(gè)圖片對(duì)應(yīng)各種語(yǔ)言的都準(zhǔn)備一個(gè)版本,文件名或路徑有所差異,然后將每種語(yǔ)言對(duì)應(yīng)的圖片的路徑及文件名放在資源文件中,而在JSP頁(yè)面上< image>標(biāo)簽的src屬性由< bean:message>標(biāo)簽指定,這樣即可以完成圖片的國(guó)際化。

  2.2 JAVA生成動(dòng)態(tài)圖片

  由于生成動(dòng)態(tài)圖片是在服務(wù)器端進(jìn)行,因此同樣需要將生成圖形字符的靜態(tài)部分放在資源文件中,如圖形名稱等,從資源文件中取字符串的方法在JSP頁(yè)面顯示部分已有說(shuō)明;從數(shù)據(jù)庫(kù)中取出的部分可以不用做任何處理,直接從數(shù)據(jù)庫(kù)取出與靜態(tài)部分拼裝成圖形字符串即可,數(shù)據(jù)庫(kù)相關(guān)設(shè)置在數(shù)據(jù)庫(kù)部分有詳細(xì)說(shuō)明。

  3. 頁(yè)面提交參數(shù)處理

  頁(yè)面上向WEB服務(wù)器提交參數(shù)有兩種方式,一是在訪問(wèn)URL后面附加上request變量,這樣的變量在服務(wù)器端可以通過(guò)request.getParameter方法得到,另一種方式是在JSP頁(yè)面上用FORM表單方式提交,這種方法提交的變量在服務(wù)器端可以通過(guò)form的getXXX方法取到變量的值。

 當(dāng)WEB系統(tǒng)需要國(guó)際化時(shí),JSP頁(yè)面的編碼方式被指定為UTF-8(前面已有說(shuō)明),也就是說(shuō)頁(yè)面上可以處理各國(guó)文字,在使用URL傳遞變量時(shí)需要將變量用JS方法encodeURI方法處理過(guò),才能在服務(wù)器端得到正確的值,如

  location.href="int/do/common/queryUserInfo.do?sqlcode=QUERY0001&hh="+encodeURI(document.all.hh.value)+"&hm="+encodeURI(document.all.hm.value)+"&bmbh="+encodeURI(document.all.bmbh.value);

  由于這種方式需要對(duì)每個(gè)request變量調(diào)用encodeURI方法,處理起來(lái)比較麻煩,但用FORM表單提交的方式即不需要進(jìn)行任何處理,因此在開(kāi)發(fā)時(shí)應(yīng)盡量使用FORM表單提交的方式進(jìn)行數(shù)據(jù)傳遞。

  如果需要JAVA代碼中生成URL,則其中傳遞的參數(shù)也需要調(diào)用URLEncoder.encode方法進(jìn)行處理,并指定編碼方式為"UTF-8"。

  在服務(wù)器端取得客戶端傳遞的參數(shù)時(shí)也需要對(duì)參數(shù)進(jìn)行字符集的轉(zhuǎn)換后才可以下確使用,如

  strString = new String(strString.getBytes("ISO-8859-1"), "GBK");

  但如此對(duì)每個(gè)變量都需要這樣處理也是非常麻煩,實(shí)際上可以利用servlet的Filter機(jī)制進(jìn)行統(tǒng)一處理。在調(diào)用servlet(包括struts)時(shí),在到達(dá)實(shí)際的servlet類前,會(huì)首先調(diào)用指定的Filter進(jìn)行處理,F(xiàn)ilter處理完成后再?zèng)Q定是否交給實(shí)際請(qǐng)求的servlet類處理。

  利用這一點(diǎn),我們可以新建一個(gè)類繼承自Filter基類,重載doFilter方法,并在該方法中加入

  request.setCharacterEncoding(“UTF-8”);

  指定客戶端的字符集為UTF-8(默認(rèn)客戶端的字符集為ISO8859),這樣在ACTION類中取得的參數(shù)就不需要進(jìn)行任何的轉(zhuǎn)換處理了。

  配置Filter的地方在web.xml,在web.xml文件中加入類似這樣的配置即可以使自定義的Filter生效:

   < filter>
  < filter-name>charsetfilter< /filter-name>
  < filter-class> international.CharsetFilter< /filter-class>
  < init-param>
  < param-name>encoding< /param-name>
  < param-value>UTF-8< /param-value>
  < /init-param>
  < /filter>
  < filter-mapping>
  < filter-name>charsetfilter< /filter-name>
  < url-pattern>/*< /url-pattern>
  < /filter-mapping>
  二.數(shù)據(jù)庫(kù)設(shè)置

  在數(shù)據(jù)庫(kù)建庫(kù)時(shí)需要將數(shù)據(jù)庫(kù)的字符集指定為unicode編碼類型,以支持多種語(yǔ)言。

  有一點(diǎn)需要特別說(shuō)明的是UTF-8是用3個(gè)字節(jié)表示一個(gè)漢字,這點(diǎn)在進(jìn)行表結(jié)構(gòu)設(shè)計(jì)時(shí)需要注意,適當(dāng)設(shè)置字段的長(zhǎng)度。



]]>
Struts配置文件詳細(xì)講解http://www.aygfsteel.com/kylixlu/archive/2007/12/27/170991.html陸昱相陸昱相Thu, 27 Dec 2007 13:23:00 GMThttp://www.aygfsteel.com/kylixlu/archive/2007/12/27/170991.htmlhttp://www.aygfsteel.com/kylixlu/comments/170991.htmlhttp://www.aygfsteel.com/kylixlu/archive/2007/12/27/170991.html#Feedback0http://www.aygfsteel.com/kylixlu/comments/commentRss/170991.htmlhttp://www.aygfsteel.com/kylixlu/services/trackbacks/170991.html         Web應(yīng)用的發(fā)布描述文件:

        web應(yīng)用發(fā)布描述文件可以在應(yīng)用開(kāi)著者,發(fā)布者和組裝者之間傳遞配置信息,Web容器在啟動(dòng)的時(shí)候從該文件中讀取配置信息,根據(jù)它來(lái)裝載和配置web應(yīng)用.文檔類型定義DTD對(duì)XML文檔的格式做了定義,DTD吧XML文檔劃分為元素,屬性,實(shí)體每一種XML文檔都有獨(dú)自的DTD文件.可以從網(wǎng)上下載.<web-app>元素是web.xml的根元素,其他元素必須嵌入在<web-app>元素之內(nèi).要注意的是子元素也是有順序的比如必須是首先<servlet>,然后<servlet-mapping>最后<taglib>.

        為Struts應(yīng)用配置Web.xml文件:

        首先最重要的一步是配置ActionServlet,這個(gè)用<servlet>標(biāo)簽的servlet-name屬性起一個(gè)名字叫action,然后用servlet-class屬性指定ActionServlet的類.

        然后用<servlet-mapping>標(biāo)簽的servlet-name屬性指定action,在用url-pattern指定接收范圍是*.do的請(qǐng)求.不管應(yīng)用中包含了多少子應(yīng)用,都只需要配置一個(gè)ActionServlet,類來(lái)出來(lái)應(yīng)用中的不同的功能,其實(shí)者就是不必要的,因?yàn)镾ervlet本身就是多線程的,而且目前Struts只允許配置一個(gè)ActionServlet.聲明ActionServlet的初始化參數(shù):<servlet>的<init-param>子元素用來(lái)配置Servlet的初始化參數(shù).param-name設(shè)置config參數(shù)名.param-value設(shè)置struts-config.xml的路徑參數(shù)值.

        配置歡迎使用清單:

        如果客戶訪問(wèn)Web的時(shí)候值是訪問(wèn)了WEB應(yīng)用的根目錄URL.沒(méi)有具體的指定文件,Web會(huì)自動(dòng)調(diào)用Web的歡迎文件.<welcome-file-list>元素來(lái)配置的.通過(guò)其中的<welcome-file>歡迎頁(yè)面</welcome-file>來(lái)配置.

        配置錯(cuò)誤處理:

        盡管Struts框架功能強(qiáng)大的錯(cuò)誤處理機(jī)制,但是不能保證處理所有的錯(cuò)誤或者異常.當(dāng)錯(cuò)誤發(fā)生時(shí),如果框架不能處理這種錯(cuò)誤,把錯(cuò)誤拋棄給Web容器,在默認(rèn)的情況下web容器會(huì)想客戶端返回錯(cuò)誤信息.如果想避免讓客戶看到原始的錯(cuò)誤信息,可以在Web應(yīng)用發(fā)布描述文件中配置<error-page>元素.通過(guò)<error-code>404來(lái)定義錯(cuò)誤的類型.然后通過(guò)<location>要處理錯(cuò)誤的JSP頁(yè)面來(lái)對(duì)錯(cuò)誤進(jìn)行處理.還可以用<exception-type>來(lái)設(shè)置異常,然后通過(guò)<location>來(lái)處理異常的JSP頁(yè)面來(lái)處理異常.

        配置Struts標(biāo)簽庫(kù):

        這個(gè)就和以前學(xué)到的JSP自定義標(biāo)簽類似,配置元素為<taglib>來(lái)配置.<taglib-uri>這個(gè)指定標(biāo)簽庫(kù)的uri,類似起一個(gè)名稱.<taglib-location>這個(gè)是標(biāo)簽庫(kù)的位置也就是實(shí)際所在的路徑.通過(guò)這樣的方法引入一個(gè)標(biāo)簽庫(kù),然后在前臺(tái)JSP頁(yè)面就可以通過(guò)自己定義的URI來(lái)調(diào)用標(biāo)簽.

        Struts配置文件:

        struts-config.xml文件.

        首先研討一下org.apache.struts.config包,在struts應(yīng)用啟動(dòng)的時(shí)候會(huì)把Struts配置文件信息讀取到內(nèi)存中,并把它們存放在config包中相關(guān)的JavaBean類的實(shí)例中.包中的每一個(gè)類都和struts配置文件中特定的配置元素對(duì)應(yīng),ModuleConfig在Struts框架中扮演了十分重要的角色,它是整個(gè)config包的核心,在Struts運(yùn)行時(shí)來(lái)存放整個(gè)應(yīng)用的配置信息.如果有多個(gè)子應(yīng)用都會(huì)有一個(gè)ModuleConfig對(duì)象,它和Struts文件根元素的<struts-config>對(duì)應(yīng).根元素中包含<form-bean><action><forward>等元素.

        <struts-config>元素:時(shí)Struts配置文件的根元素,和它對(duì)應(yīng)的配置類ModuleConfig類,<struts-config>元素有8個(gè)子元素.他們的DTD定義是data-sources?form-bean? global-exception?global-forwards?action-mapping?controller?message-resources?plug-in*在Struts配置文件中,必須按照DTD指定的先手順序來(lái)配置<struts-config>元素的各個(gè)子元素,如果顛倒了這些子元素的順序,會(huì)產(chǎn)生錯(cuò)誤.

        <data-sources>元素:用來(lái)配置應(yīng)用所需要的數(shù)據(jù)源,數(shù)據(jù)源負(fù)責(zé)創(chuàng)建和特定的數(shù)據(jù)庫(kù)的連接.許多數(shù)據(jù)源采用連接池的機(jī)制實(shí)現(xiàn).以便提高數(shù)據(jù)庫(kù)訪問(wèn)的性能.JAVA語(yǔ)言提供了javax.sql.DataSource接口,所有的數(shù)據(jù)源都必須實(shí)現(xiàn)這個(gè)接口.許多應(yīng)用服務(wù)器和Web服務(wù)器都提供了數(shù)據(jù)源組件.很多數(shù)據(jù)庫(kù)廠商也提供了數(shù)據(jù)源的實(shí)現(xiàn).<data-sources>元素包含多個(gè)<data-source>子元素永遠(yuǎn)配置特定的數(shù)據(jù)源.他們可以包含多個(gè)<set-property>子元素用于設(shè)置數(shù)據(jù)源的各種屬性.配置了數(shù)據(jù)源以后,就可以在Action類中訪問(wèn)數(shù)據(jù)源,在Action中定義了getDataSource(HttpRequest)方法,用于獲取數(shù)據(jù)源對(duì)象的引用.然后可以利用DataSource對(duì)象調(diào)用getConnection獲取一個(gè)連接對(duì)象對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作.在配置文件中聲明多個(gè)數(shù)據(jù)源的時(shí)候需要為每一個(gè)數(shù)據(jù)源分配唯一的Key值,通過(guò)這個(gè)來(lái)表示特定的數(shù)據(jù)源.獲取特定的數(shù)據(jù)源的時(shí)候可以用dataSource = getDataSource(reqeust,”A”);

        <form-beans>元素:用來(lái)配置多個(gè)ActionForm,包含一個(gè)或者N個(gè)<form-bean>子元素.每個(gè)<form-bean>元素都包含多個(gè)屬性.className指定和<form-bean>匹配的類.name指定該ActionForm的唯一標(biāo)識(shí)符,這個(gè)屬性是必須的以后作為引用使用.type指定ActionForm類的完整類名,這個(gè)屬性也是必須的.注意包名也要加上.<form-property>是指定動(dòng)態(tài)的Form的元素,以后會(huì)深入了解.

        <global-exception>元素:用于配置異常處理,元素可以包含一個(gè)或者多個(gè)<exception>元素,用來(lái)設(shè)置JAVA異常和異常處理類ExceptionHandler之間的映射.className指定和元素對(duì)應(yīng)的配置類,默認(rèn)的不用動(dòng).handler指定異常處理類默認(rèn)是ExceptionHandler.key指定在本地資源文件中異常的消息Key,path指定當(dāng)前異常發(fā)生的時(shí)候轉(zhuǎn)發(fā)的路徑.scope指定ActionMessages實(shí)例存放的范圍.type指定需要處理異常類的名字,必須的.bundle指定Resource Bundle.

        <global-forwards>元素:用來(lái)聲明全局轉(zhuǎn)發(fā),元素可以有一個(gè)或者N個(gè)<forward>元素組成,用于把一個(gè)邏輯名映射到特定的URL,通過(guò)這種方法Action類或者JSP頁(yè)面無(wú)需指定URL,只要指定邏輯名稱就可以實(shí)現(xiàn)請(qǐng)求轉(zhuǎn)發(fā)或者重定向.這樣可以減少控制組件和視圖的聚合.易于維護(hù).className對(duì)應(yīng)的配置類.contextRelative如果為true表示當(dāng)path屬性以/開(kāi)頭的時(shí)候,給出的是對(duì)應(yīng)的上下文URL默認(rèn)是false.name轉(zhuǎn)發(fā)路徑的邏輯名,必須寫(xiě).path轉(zhuǎn)發(fā)或者重定向的URL,必須寫(xiě)必須是以/開(kāi)頭.redirect設(shè)置為true的時(shí)候表示執(zhí)行重定向操作,此項(xiàng)為false的時(shí)候,表示執(zhí)行請(qǐng)求轉(zhuǎn)發(fā)操作.重定向與請(qǐng)求轉(zhuǎn)發(fā)的區(qū)別以后就是重定向是把請(qǐng)求生成應(yīng)答給客戶端然后在重新發(fā)送給定向的URL,瀏覽器地址欄會(huì)有顯示.而轉(zhuǎn)發(fā)就是直接把請(qǐng)求轉(zhuǎn)發(fā)給本應(yīng)用的另一個(gè)文件,不生成應(yīng)答所以客戶端IE沒(méi)顯示.

        <action-mapping>元素:包含一個(gè)或者N個(gè)<action>元素,描述了從特定的請(qǐng)求路徑到響應(yīng)的Action的映射.在<action>元素中可以包含多個(gè)<exception>和<forward>子元素,他們分別配置局部異常處理和局部轉(zhuǎn)發(fā).attribute設(shè)置Action關(guān)聯(lián)的ActionForm在request或者session范圍內(nèi)的key.就是在request或者session共享內(nèi)的名稱.className對(duì)應(yīng)配置元素的類.默認(rèn)的是ActionMapping.forward指定轉(zhuǎn)發(fā)URL路徑include指定包含URL路徑.input指定包含表單的URL,當(dāng)表單驗(yàn)證失敗的時(shí)候發(fā)送的URL.name,指定和該Action關(guān)聯(lián)的Form名字.該名字必須是在form-bean中定義過(guò)的,可寫(xiě)可不寫(xiě).path必須/開(kāi)頭的方位Action的路徑.parameter指定Action配置參數(shù).在Action的execute()方法中可以調(diào)用ActionMapping的getParameter()方法來(lái)讀取匹配的參數(shù).roles指定允許調(diào)用該Action的安全角色,多個(gè)角色之間逗號(hào)格開(kāi).scope指定Form的存在范圍.默認(rèn)是session.tyep指定Action的完整類名.unknown如果是true表示可以處理用戶發(fā)出的所有的無(wú)效的ActionURL默認(rèn)是false.validate指定是否調(diào)用ActionForm的validate方法.

        <controller>元素:用于配置ActionServlet.buffreSize指定上載文件的輸入緩沖大小.該屬性為可選默認(rèn)4096.className指定元素對(duì)應(yīng)的配置類,ControllerConfig.然后是contentType指定響應(yīng)結(jié)果內(nèi)容類型和字符編碼,該屬性為可選,默認(rèn)是text/html如果在Action或者JSP網(wǎng)頁(yè)也設(shè)置了類型內(nèi)容,會(huì)覆蓋這個(gè).locale指定是否把Locale對(duì)象保存到當(dāng)前用戶的session中默認(rèn)false.tempDir指定處理文件上載的臨時(shí)工作目錄.nochache如果是true在響應(yīng)結(jié)果中加入特定的頭參數(shù).

        <message-resources>元素:用來(lái)配置Resource Bundle.用于存放本地文本消息文件.className元素對(duì)應(yīng)的配置類.MessageResourcesConfig.factory指定消息的工廠類.key指定文件存放的Servlet對(duì)象中采用的屬性Key.null指定如何處理未知消息.parameter指定消息的文件名.

        <plug-in>元素:用于配置Struts插件.

        配置多應(yīng)用模塊:所有的子應(yīng)用都可以共享同一個(gè)ActionServlet實(shí)例,但是每個(gè)子應(yīng)用都有單獨(dú)的配置文件.把應(yīng)用劃分為多個(gè)子應(yīng)用模塊.首先為每個(gè)應(yīng)用創(chuàng)建單獨(dú)的Struts配置文件,在web.xml的ActionServlet配置代碼中添加幾個(gè)子應(yīng)用信息.采用<forward>元素來(lái)實(shí)現(xiàn)應(yīng)用之間的切換.

        Digester組件:是一個(gè)Apache的另一個(gè)開(kāi)源代碼項(xiàng)目.當(dāng)Struts被初始化的時(shí)候,首先會(huì)讀取并解析配置文件,框架采用Digester組件來(lái)且西配置文件.然后創(chuàng)建config包中的對(duì)象.者對(duì)象用于存放配置信息.

        其實(shí)配置文件不難,只要都理其中的原理就OK了.真正實(shí)際的項(xiàng)目開(kāi)發(fā)中,采用的工具例如Eclipse系列,提供了相應(yīng)的插件,在創(chuàng)建一個(gè)Struts工程的時(shí)候配置文件的標(biāo)簽都是自動(dòng)生成的,而我們只需要往里面填寫(xiě)屬性就OK了.



]]>
主站蜘蛛池模板: 桂阳县| 宁安市| 德钦县| 商水县| 洮南市| 长葛市| 凯里市| 城步| 南汇区| 商水县| 麟游县| 玉溪市| 东源县| 新化县| 微山县| 太仓市| 绥化市| 阜平县| 东丽区| 冕宁县| 静安区| 梨树县| 大关县| 文水县| 平塘县| 抚顺市| 云阳县| 页游| 博爱县| 六盘水市| 舟山市| 东方市| 昂仁县| 玉田县| 武汉市| 惠东县| 华宁县| 阳朔县| 大埔县| 九江市| 抚松县|