二月

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            1 Posts :: 2 Stories :: 0 Comments :: 0 Trackbacks

          聲明非本人作品,純屬個(gè)人愛(ài)好收藏,原文來(lái)至http://www.easyjf.com/bbs.ejf?cmd=appShow&id=4653081   作者:天一


          EasyJWeb支持零配置,同時(shí)用戶也可以通過(guò)配置文件來(lái)定義EasyJWeb中的各個(gè)部件,從而實(shí)現(xiàn)更加靈活的功能。一個(gè)完整的easyjf-web.xml文件如下所示:

          <?xml version="1.0" encoding="UTF-8"?>
          <easyjf-web xmlns="http://www.easyjf.com/schema/easyjf/web"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.easyjf.com/schema/easyjf/web
          http://www.easyjf.com/schema/easyjf/web/easyjf-web-0.0.1.xsd ">
          <!—框架基本參數(shù)配置—>
          <framework-setting>
          <template-base>/WEB-INF/views/</template-base>
          <property name="com.easyjweb.debug">true</property>
          <init-app>
          <app-class init-method="start" destroy-method="stop">com.easyjf.blog.logic.AutoHtmlGenerater</app-class>
          </init-app>
          <!—攔截器—>
          <interceptorsp>
          <app-class name="before" method="">com.easyjf.intercept.CommInterceptor</app-class>
          </interceptorsp>
          <!—錯(cuò)誤處理器—>
          <error-handler>
          <app-class exception="" path="">com.easyjf.intercept.CommInterceptor</app-class>
          </error-handler>
          </framework-setting>
          <!—導(dǎo)入其它配置文件—>
          <import resource="mvc-bbs.xml" />
          <!—模塊Action配置—>
          <modules inject="byType">
          <module path="/user" action="com.easyjf.action.UserAction" validate="true" view="" inject="byType"
          autoToken="true" alias="account" form="userForm" defaultPage="/user/user.xml" scope="">
          <page name="user" url="/user/user.html" type="template" contentType="" />
          </module>
          </modules>
          <!—全面頁(yè)面模板配置—>
          <pages>
          <page name="user" url="/user/user.html" type="template" contentType="" />
          </pages>
          <!—表單配置—>
          <forms>
          <form name="userForm" serverValidate="" alertType="" bean="" clientValidate="" event="">
          <property name="" initial="" notNull="" size="" type="" event="">
          </form>
          </forms>
          <!—業(yè)務(wù)組件配置—>
          <beans>
          <bean name="springContainer" class="org.springframework.web.context.support.XmlWebApplicationContext">
          <property name="configLocations">
          <list>
          <value>WEB-INF/classes/application.xml</value>
          </list>
          </property>
          </bean>
          <bean name="innerSpringContainer" class="com.easyjf.container.impl.SpringContainer">
          <property name="factory" ref="springContainer" />
          </bean>
          </beans>
          <!—ajax參數(shù)配置—>
          <ajax>
          <services allowName=””  denyName=””>
          <service name=”” >
          < include method=””/>
          < exclude method=””/>
          </service>
          </services>
          <convert name=””>
          < include property=””/>
          < exclude property=””/>
          </convert>
          </ajax>
          </easyjf-web>

          EasyJWeb框架的默認(rèn)配置文件是easyjf-web.xml文件,easyjf-web.xml的根節(jié)點(diǎn)是easyjf-web,它有framework-setting、modules、pages、beans、import*、ajax等幾個(gè)子節(jié)點(diǎn)。
          framework-setting
           framework-setting節(jié)點(diǎn)主要是包含框架初始化時(shí)需要加載的變量、線程、攔截器、以及模板路徑和需要引入的其它配置文件等。它有init-app、interceptorsp、error-handler、template-base、property等子節(jié)點(diǎn)。
           init-app子節(jié)點(diǎn)包含框架初始化程序的配置信息。該節(jié)點(diǎn)包含多個(gè)app-class子節(jié)點(diǎn),每個(gè)代表一個(gè)初始化程序。app-class節(jié)點(diǎn)的init-method屬性定義程序的初始化方法,destroy-method屬性定義程序的銷(xiāo)毀方法。該節(jié)點(diǎn)的文本是初始化程序的包路徑。
           interceptorsp節(jié)點(diǎn)包含的是攔截器配置信息。該節(jié)點(diǎn)同樣包含多個(gè)app-class子節(jié)點(diǎn),每個(gè)app-class代表一個(gè)攔截器。app-class節(jié)點(diǎn)的name屬性是攔截器的名字,method是調(diào)用攔截器的方法。
           error-handler節(jié)點(diǎn)包含錯(cuò)誤處的配置信息,它以攔截器為基礎(chǔ),若配置了error-handler,則必須配置相應(yīng)的攔截器。
           template-base配置的是程序的模板文件放置的路徑,該節(jié)點(diǎn)只能有一個(gè)。
           property節(jié)點(diǎn)定義了EasyJWeb框架初始化時(shí)加載的變量,如文件上傳的大小限制,該節(jié)點(diǎn)可以有多個(gè)。
           property節(jié)點(diǎn)的各元素值如下所示:
           com.easyjweb.debug:定義EasyJWeb的工作模式,true或false。
           com.easyjweb.maxUploadFileSize:定義上傳文件的最大值,以k為單位。
           com.easyjweb.uploadSizeThreshold:定義上傳文件緩沖值,以k為單位。
           com.easyjweb.maxDirectJumpToActionTimes:定義EasyJWeb的全局跳轉(zhuǎn)次數(shù)。
           com.easyjweb.defaultActionPackages:定義EasyJWeb自動(dòng)掃描的包,多個(gè)包之前以逗號(hào)(“,”)分隔。

          示例,在某電子商務(wù)網(wǎng)站,開(kāi)發(fā)環(huán)境中的EasyJWeb配置。

          <framework-setting>
          <property name="com.easyjweb.debug">true</property><!--調(diào)試模式,每次加載都會(huì)重新初始化EasyJWeb-->
          <property name="com.easyjweb.maxUploadFileSize">51200</property><!--最大上傳文件為51200kb-->
          <property name="com.easyjweb.uploadSizeThreshold">512</property><!--上傳文件緩存值-->
          <property name="com.easyjweb.defaultActionPackages"><!--設(shè)置自加Action掃描的路徑-->
          com.easyjf.core,com.easyjf.security,com.easyjf.necton,com.baijiahui.mvc
          </property>
          </framework-setting>

          import元素
           import元素用來(lái)導(dǎo)入另外一個(gè)EasyJWeb配置文件,一個(gè)配置文件中可以導(dǎo)入多個(gè)其它配置文件。該元素包含一個(gè)屬性:resource,屬性值為WEB-INF下的文件名或者以classpath開(kāi)頭的一個(gè)資源名。如下面的示例:

          <import resource="mvc-bbs.xml" /><!--表示導(dǎo)入mvc-bbs.xml這個(gè)文件,等價(jià)于-->
          <import resource="WEB-INF/mvc-bbs.xml" />
          <import resource="classpath:/com/easyjf/core/easyjweb-mvc.xml"/><!--表示導(dǎo)入com.easyjf.core包下面的easyjweb-mvc.xml文件-->

          modules
           modules節(jié)點(diǎn)是最重要的部分,包含了所有的訪問(wèn)模塊。它的子節(jié)點(diǎn)module配置了訪問(wèn)模塊,對(duì)應(yīng)EasyJWeb的Module類(lèi)。modules節(jié)點(diǎn)的屬性inject定義了全局的注入方式。
           module節(jié)點(diǎn)有path、action、validate、view、inject、autoToken、alias、form、defaultPage、scope等屬性。path是該模塊的訪問(wèn)路徑,如/hello.ejf對(duì)應(yīng)的module的path是hello;action配置的是該模塊的處理類(lèi),如com.easyjf.action.HelloAction;validate屬性定義該module是否需要做數(shù)據(jù)驗(yàn)證,值為true或false;view配置的是模板路徑前綴;inject配置的是該模塊的注入方式,如byType等;autoToken定義了該模塊是否需要自動(dòng)加入防重復(fù)提交驗(yàn)證,值為true或false;alias是該模塊的別名,多個(gè)別名使用逗號(hào)”,”作分隔,除了通過(guò)path來(lái)訪問(wèn)也可以通過(guò)alias定義的名字來(lái)訪問(wèn);form是該模塊對(duì)應(yīng)的form,該屬性值對(duì)應(yīng)forms中的某一個(gè)form對(duì)應(yīng);defaultPage定義了該module的默認(rèn)page名,即在不指定page時(shí)使用defaultPage配置的page;scope配置模板的初始化方式,也即生命周期,可以是request、session、prototype、singleton等幾個(gè)值,轉(zhuǎn)認(rèn)為request。
           示例:
           A、EasyJWeb內(nèi)置的easywidget模塊,提供一些實(shí)用功能

          <module path="/easywidget"
          action="com.easyjf.web.tools.widget.WidgetAction">
          <page name="calendar"
          url="classpath:com/easyjf/web/tools/widget/calendar.html"
          type="template" />
          </module>

           B、一個(gè)OA系統(tǒng)中的帳戶模塊

          <module name="account" path="/account" scope="request"
          action="com.easyjf.oa.mvc.AccountAction" detaulsPage="list"
          inject="byType">
          <page name="list" url="/oa/accountList.html"
          type="template" />
          <page name="edit" url="/oa/accountEdit.html"
          type="template" />
          </module>

          pages
           pages節(jié)點(diǎn)配置了全局的page對(duì)象。pages節(jié)點(diǎn)包含多個(gè)page節(jié)點(diǎn)。page節(jié)點(diǎn)有name、type、url、contentType這幾個(gè)屬性。name屬性定義了該page的名字,可通過(guò)這個(gè)名字來(lái)查找該page;type定義了page的類(lèi)型,可以是"html“、"template"、"action"等;url屬性指定了該page對(duì)應(yīng)的模板文件的路徑;contentType定義該模板頁(yè)的contentType。
           在EasyJWeb-1.0m1版本中未實(shí)現(xiàn)對(duì)全局Page的支持。

          forms
           forms節(jié)點(diǎn)包含多個(gè)form節(jié)點(diǎn),每個(gè)form定義一個(gè)表單。form節(jié)點(diǎn)有name、Initial、notNull、Size、Type、event這幾個(gè)屬性。
           該元素在EasyJWeb1.0m2中未使用。
           前面1-5個(gè)部件的元素解析是通過(guò)com.easyjf.web.config. XMLConfigFactory來(lái)完成的。
           
          beans
           beans節(jié)點(diǎn)配置了需要加載的業(yè)務(wù)組件,類(lèi)似spring里邊的bean。這些bean會(huì)被加載到EasyJWeb的IOC容器中,供Action或其它Bean調(diào)用。beans節(jié)點(diǎn)下面包含多個(gè)bean節(jié)點(diǎn),每個(gè)bean節(jié)點(diǎn)配置一個(gè)業(yè)務(wù)組件。
           對(duì)于Bean的解析是通過(guò)com.easyjf.web.config. BeanConfigReader這個(gè)類(lèi)來(lái)完成的。
           該節(jié)點(diǎn)中的<bean>標(biāo)簽用來(lái)定義一個(gè)業(yè)務(wù)組件,<bean>元素的結(jié)構(gòu)如下:

          <bean name=" " class=" "  [scope=" "  factory-method="" inject=""] >
          <!—構(gòu)造子注入—>
          <constructor-arg index="" type="" [value|ref=""]>
          [<value></value>|<ref></ref>|<list></list>]
          </ constructor-arg >
          <!—設(shè)值方法注入—>
          <property name ="" [value|ref=""]>
          [<value></value>|<ref></ref>|<list></list>]
          </property>
          </bean>

          value節(jié)點(diǎn)或?qū)傩灾械闹禐樽址珽asyJWeb在處理的時(shí)候會(huì)把其轉(zhuǎn)換指定屬性類(lèi)型的值。
          ref節(jié)點(diǎn)或?qū)傩灾械闹凳侨萜髦心骋粋€(gè)業(yè)務(wù)組件的名稱(chēng)或id。所引用的業(yè)務(wù)組件可以在本配置文件中定義,也可以其它配置文件中定義,可以是EasyJWeb IOC容器中配置的Bean,也可以是Spring、Guice或EJB容器中定義的業(yè)務(wù)組件。
          inject屬性用來(lái)指定業(yè)務(wù)組件的自動(dòng)注入方式,其值如下:
          none:不自動(dòng)注入,默認(rèn)值;
          bytype:按類(lèi)型自動(dòng)注入;
          byname:按名稱(chēng)自動(dòng)注入;
          auto:自動(dòng)按名稱(chēng)或類(lèi)型自動(dòng)注入。
          scope屬性用來(lái)指定業(yè)務(wù)組件的初始化方式及生命周期,其值如下:
          singleton:整個(gè)容器中只創(chuàng)建一次這個(gè)Bean,這個(gè)是默認(rèn)值。
          prototype:每次都創(chuàng)建一個(gè)全新的Bean;
          request:在Web應(yīng)用環(huán)境下,每一次用戶請(qǐng)求創(chuàng)建一次Bean;
          session:在Web應(yīng)用環(huán)境下,每一個(gè)用戶會(huì)話創(chuàng)建一次Bean。
          示例:
          A、配置一個(gè)Spring容器

          <bean name="springContainer"
          class="org.springframework.web.context.support.XmlWebApplicationContext">
          <property name="configLocations">
          <list>
          <value>WEB-INF/classes/application.xml</value>
          </list>
          </property>
          </bean>

          B、把Spring容器加入到EasyJWeb超容器中

          <bean name="innerSpringContainer"
          class="com.easyjf.container.impl.SpringContainer">
          <property name="factory" ref="springContainer"/>
          </bean>

          ajax
           ajax節(jié)點(diǎn)用來(lái)定義EasyJWeb的ajax屬性。EasyJWeb中內(nèi)置了一個(gè)把業(yè)務(wù)組件發(fā)布成遠(yuǎn)程Javascript腳本對(duì)象的遠(yuǎn)程Web調(diào)用支持引擎,在使用到該功能的時(shí)候,可以通過(guò)EasyJWeb配置文件中的ajax節(jié)點(diǎn)來(lái)定制相關(guān)的屬性。Ajax節(jié)點(diǎn)下包括一個(gè)<services>節(jié)點(diǎn)及多個(gè)convert節(jié)點(diǎn),<services>節(jié)點(diǎn)中定義允許發(fā)布的業(yè)務(wù)組件,而<convert>用來(lái)指定POJO轉(zhuǎn)換成Json對(duì)象時(shí)的屬性。Ajax節(jié)點(diǎn)部分的的大致結(jié)構(gòu)如下:

          <ajax>
          <services allowName=””  denyName=””>
          <service name=”” >
          < include method=””/>
          < exclude method=””/>
          </service>
          </services>
          <convert name=””>
          < include property=””/>
          < exclude property=””/>
          </conv>rt>
          </ajax>

           allowName用來(lái)定義允許對(duì)暴露的所有Bean名稱(chēng),denyName用來(lái)定義不允許對(duì)外暴露的所有Bean名稱(chēng)。Include用來(lái)定義某一個(gè)業(yè)務(wù)組件中允許對(duì)外暴露的方法名稱(chēng),而exclude用來(lái)定義某一個(gè)業(yè)務(wù)組件中不允許對(duì)外暴露的方法名稱(chēng)。
           對(duì)于ajax節(jié)點(diǎn)的解析是通過(guò)com.easyjf.web.ajax. AjaxConfigManager這個(gè)類(lèi)來(lái)完成的。

          EasyJWeb配置文件詳解同時(shí)在EasyJF的wiki發(fā)布,并且會(huì)不斷更新,如果需要查看最新版本,請(qǐng)到:http://wiki.easyjf.com/pages/viewpage.action?pageId=7110664

          posted on 2009-04-09 15:24 二月 閱讀(236) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 郧西县| 衡山县| 镇坪县| 军事| 太仆寺旗| 玛沁县| 石楼县| 嘉祥县| 星座| 家居| 宁津县| 尼玛县| 静宁县| 兰州市| 通海县| 新蔡县| 海阳市| 壶关县| 双城市| 五河县| 曲周县| 民乐县| 长顺县| 贵溪市| 汽车| 舞阳县| 深州市| 湖北省| 苏尼特左旗| 闻喜县| 白水县| 乡宁县| 小金县| 阿坝| 云和县| 宜丰县| 广州市| 理塘县| 盐源县| 元谋县| 盐亭县|