Starting Struts2--Core Components(1)

          Posted on 2007-08-03 16:57 puras 閱讀(1573) 評(píng)論(0)  編輯  收藏 所屬分類: Struts2.0
          從一個(gè)高度層次來看,Strtsu2屬性pull-MVC(或是MVC2)框架;這與傳統(tǒng)的MVC框架略有不同,因?yàn)閍ction的角色采用模型,而不是控制器,雖然這樣有一些重疊."pull"來自于視圖從action拉數(shù)據(jù),而不是持有一個(gè)分開的可用模型對(duì)象.

          我們知道在概念方面意味著什么,但在執(zhí)行層面意味著什么?這個(gè)模型-視圖-控制器模式在Struts2中被實(shí)現(xiàn)成了五個(gè)核心部分--actions,攔截器,值棧/OGNL,結(jié)果類型和結(jié)果/視圖技術(shù).

          圖1:The MVC / Struts2 Architecture

          圖1描述了從Struts2高度層面上的結(jié)構(gòu), 包含了模型,視圖和控制器.控制器是一個(gè)實(shí)現(xiàn)了Struts2里分派Servlet過濾器以及攔截器,模型實(shí)現(xiàn)的actions,視圖則是由結(jié)果類型和結(jié)果的組成.值棧和ONGL提供了一個(gè)通用的路線,鏈接和集成其他組件.

          我們在這章討論一些通用的部分,將會(huì)有很多信息涉及到配置.配置WEB應(yīng)用,配置actions,攔截器,結(jié)果等等.記住,這些說明只是為了提供如果完成的背景,或許不是最有效的配置應(yīng)用的方式.在后面的章節(jié)我們將討論更加容易和更有效的方式以完成同樣的目標(biāo),使用約定俗成的配置,注釋和零配置插件.

          在我們進(jìn)入詳細(xì)講解核心構(gòu)成之前我們先來討論一下全局的配置.

          Configuration

          在配置Struts2之前,你需要先下載發(fā)行版或是在你的Maven2的"pom.xml"文件中配置它的依賴關(guān)系:
          <dependency>
              
          <groupId>org.apache.struts</groupId>
              
          <artifactId>struts2-core</artifactId>
              
          <version>2.0.6</version>
          </dependency>

          做完之后,Struts2應(yīng)用的配置就可以分成三個(gè)獨(dú)立的文件,如圖2中所示.

          Figure 2: Configuration file scope for framework elements

          需要在你的"web.xml"文件里為WEB應(yīng)用的配置FilterDispatcher Servlet過濾器:
           1 <filter>
           2     <filter-name>action2</filter-name>
           3     <filter-class>
           4         org.apache.struts2.dispatcher.FilterDispatcher
           5     </filter-class>
           6 </filter>
           7 <filter-mapping>
           8     <filter-name>action2</filter-name>
           9     <url-pattern>/*</url-pattern>
          10 </filter-mapping>
          11 

          它配置了基本的WEB應(yīng)用.剩下來的事就是使用"struts.properties"配置文件來自定義WEB應(yīng)用的執(zhí)行環(huán)境,通過"struts.xml"配置文件來配置WEB應(yīng)用的構(gòu)件.我們現(xiàn)在來看看這兩個(gè)配置文件的詳細(xì)描述.

          The struts.properties File

          這個(gè)配置文件提供了一個(gè)改變框架默認(rèn)行為的機(jī)制.一般情況下,你是不需要修改這個(gè)文件的,一個(gè)例外是你想配置一個(gè)對(duì)于開發(fā)者友好的調(diào)試環(huán)境.所有的包含在"struts.properties"配置文件中的配置項(xiàng),都可以使用"init-param"標(biāo)簽配置在"web.xml"文件中,同樣也可以使用"constant"標(biāo)簽配置在"struts.xml"配置文件中.

          Properties允許修改如改變Freemarker選項(xiàng),替換action的映射類,決定是否重新加載XML配置文件,默認(rèn)使用的用戶界面主題等等.更多的關(guān)于properties的最新信息,請(qǐng)查閱位于
          在開發(fā)環(huán)境中,這有一些配置項(xiàng)你可能需要更改:
          • struts.i18n.reload = true -- 能夠重新加載國際化文件
          • struts.devMode = true -- 能夠在開發(fā)模式下提供更全面的調(diào)試
          • struts.configuration.xml.reload = true 能夠重新加載XML配置文件(適用于action),修改之后可以在Servlet容器里重新加載整個(gè)WEB應(yīng)用
          • struts.url.http.prot = 8080 -- 設(shè)置服務(wù)運(yùn)行的端口(以便生成正確的URL)
          The struts.xml File

          "struts.xml"文件包含配置信息,你將修改它用于發(fā)布action,我們將在本章剩余的部分詳細(xì)的講解指定的元素.現(xiàn)在,讓我們看看不會(huì)改變的結(jié)構(gòu).

          注:
          根據(jù)你應(yīng)用的功能,可能會(huì)從你的應(yīng)用中移除"struts.xml"文件.配置上我們將在本章討論一種替換的方法,使用注釋,"web.xml"啟動(dòng)參數(shù),和交替的URL映射配置.
          唯一的配置仍然需要"struts.xml"文件,如全局結(jié)果,異常處理,和自定義的攔截器棧.

          這是一個(gè)XML文件,所以第一個(gè)元素是XML的版本和編碼信息.下一個(gè)則是XML的文檔類型定義(DTD).DTD提供了一些文件里的元素的結(jié)構(gòu),并最終用XML來解析和編輯.
           1 <?xml version="1.0" encoding="UTF-8" ?>
           2 <!DOCTYPE struts PUBLIC
           3     "-//Apache Software Foundation//DTD Struts Configuration
           4     2.0//EN"
           5     "http://struts.apache.org/dtds/struts-2.0.dtd">
           6 <struts>
           7     <package
           8         name="struts2"
           9         extends="struts-default"
          10         namespace="/struts2">
          11         …
          12     </package>
          13 </struts>

          我們現(xiàn)在到達(dá)了<struts>標(biāo)簽.這是Struts2具體配置的最外層標(biāo)簽.所有其他的標(biāo)簽都將被包含在這個(gè)當(dāng)中.

          The Include Tag:

          <include ... />標(biāo)簽用于將Struts2應(yīng)用模塊化時(shí)引入其他配置文件時(shí)使用并且它始終是<struts>標(biāo)簽的子標(biāo)簽.它僅僅包含一個(gè)"file"屬性,用于提供被引入的文件的名稱,那個(gè)文件必須與"struts.xml"配置文件的結(jié)構(gòu)相同.例如,如果你想拆分一個(gè)計(jì)費(fèi)應(yīng)用的配置文件,你可以選擇按組將繳費(fèi),管理和報(bào)表配置到單獨(dú)的文件中:
          1 <struts>
          2     <include file="billing-config.xml" />
          3     <include file="admin-config.xml" />
          4     <include file="reports-config.xml" />
          5     …
          6 </struts>

          引入文件時(shí),順序是重要的.來自引入文件的信息將在文件中引入標(biāo)簽的位置開始有效.因此,使用一個(gè)配置在另一個(gè)文件中的標(biāo)簽,這個(gè)引入的配置必須出現(xiàn)在被引用之前.

          有一些文件你是必須明確的引入,還有一些文件是自動(dòng)引入的.比如說"struts-default"和"struts-plugin.xml".兩者都包含了默認(rèn)的結(jié)果類型,攔截器,攔截器棧,包,以及WEB應(yīng)用執(zhí)行環(huán)境的配置信息(也可以配置在"struts.properties"文件中)的配置.區(qū)別在于"struts-default.xml"文件提供的是Struts2的核心配置,而"struts-plugin.xml"提供的是詳細(xì)插件的配置.每個(gè)插件JAR文件中都應(yīng)包含一個(gè)"struts-plugin.xml"文件,所有這些都將在啟動(dòng)的時(shí)候加載.

          上一章:
          Starting Struts2--Where Struts2 fits into the Web Paradigm
          下一章:Starting Struts2--Core Components(2)

          posts - 47, comments - 124, trackbacks - 0, articles - 0

          Copyright © puras

          主站蜘蛛池模板: 西峡县| 库伦旗| 抚州市| 宁阳县| 新民市| 修文县| 阿瓦提县| 乌兰浩特市| 辰溪县| 红安县| 克东县| 淮滨县| 吴江市| 滦南县| 会宁县| 张掖市| 永安市| 青河县| 年辖:市辖区| 西平县| 阿克| 普格县| 读书| 望江县| 揭西县| 东城区| 修水县| 南岸区| 潞西市| 临汾市| 宁晋县| 建平县| 安吉县| 盐城市| 六安市| 昌黎县| 伊宁市| 龙门县| 湖北省| 祁门县| 搜索|