二月

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  1 Posts :: 2 Stories :: 0 Comments :: 0 Trackbacks

声明非本人作品,纯属个人爱好收藏,原文来至http://www.easyjf.com/bbs.ejf?cmd=appShow&id=4653081   作者:天一


EasyJWeb支持零配置,同时用户也可以通过配置文件来定义EasyJWeb中的各个部件,从而实现更加灵活的功能。一个完整的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 ">
<!—框架基本参数配置—>
<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>
<!—错误处理器—>
<error-handler>
<app-class exception="" path="">com.easyjf.intercept.CommInterceptor</app-class>
</error-handler>
</framework-setting>
<!—导入其它配置文件—>
<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>
<!—全面页面模板配置—>
<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>
<!—业务组件配置—>
<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参数配置—>
<ajax>
<services allowName=””  denyName=””>
<service name=”” >
< include method=””/>
< exclude method=””/>
</service>
</services>
<convert name=””>
< include property=””/>
< exclude property=””/>
</convert>
</ajax>
</easyjf-web>

EasyJWeb框架的默认配置文件是easyjf-web.xml文件,easyjf-web.xml的根节点是easyjf-web,它有framework-setting、modules、pages、beans、import*、ajax等几个子节点。
framework-setting
 framework-setting节点主要是包含框架初始化时需要加载的变量、线程、拦截器、以及模板路径和需要引入的其它配置文件等。它有init-app、interceptorsp、error-handler、template-base、property等子节点。
 init-app子节点包含框架初始化程序的配置信息。该节点包含多个app-class子节点,每个代表一个初始化程序。app-class节点的init-method属性定义程序的初始化方法,destroy-method属性定义程序的销毁方法。该节点的文本是初始化程序的包路径。
 interceptorsp节点包含的是拦截器配置信息。该节点同样包含多个app-class子节点,每个app-class代表一个拦截器。app-class节点的name属性是拦截器的名字,method是调用拦截器的方法。
 error-handler节点包含错误处的配置信息,它以拦截器为基础,若配置了error-handler,则必须配置相应的拦截器。
 template-base配置的是程序的模板文件放置的路径,该节点只能有一个。
 property节点定义了EasyJWeb框架初始化时加载的变量,如文件上传的大小限制,该节点可以有多个。
 property节点的各元素值如下所示:
 com.easyjweb.debug:定义EasyJWeb的工作模式,true或false。
 com.easyjweb.maxUploadFileSize:定义上传文件的最大值,以k为单位。
 com.easyjweb.uploadSizeThreshold:定义上传文件缓冲值,以k为单位。
 com.easyjweb.maxDirectJumpToActionTimes:定义EasyJWeb的全局跳转次数。
 com.easyjweb.defaultActionPackages:定义EasyJWeb自动扫描的包,多个包之前以逗号(“,”)分隔。

示例,在某电子商务网站,开发环境中的EasyJWeb配置。

<framework-setting>
<property name="com.easyjweb.debug">true</property><!--调试模式,每次加载都会重新初始化EasyJWeb-->
<property name="com.easyjweb.maxUploadFileSize">51200</property><!--最大上传文件为51200kb-->
<property name="com.easyjweb.uploadSizeThreshold">512</property><!--上传文件缓存值-->
<property name="com.easyjweb.defaultActionPackages"><!--设置自加Action扫描的路径-->
com.easyjf.core,com.easyjf.security,com.easyjf.necton,com.baijiahui.mvc
</property>
</framework-setting>

import元素
 import元素用来导入另外一个EasyJWeb配置文件,一个配置文件中可以导入多个其它配置文件。该元素包含一个属性:resource,属性值为WEB-INF下的文件名或者以classpath开头的一个资源名。如下面的示例:

<import resource="mvc-bbs.xml" /><!--表示导入mvc-bbs.xml这个文件,等价于-->
<import resource="WEB-INF/mvc-bbs.xml" />
<import resource="classpath:/com/easyjf/core/easyjweb-mvc.xml"/><!--表示导入com.easyjf.core包下面的easyjweb-mvc.xml文件-->

modules
 modules节点是最重要的部分,包含了所有的访问模块。它的子节点module配置了访问模块,对应EasyJWeb的Module类。modules节点的属性inject定义了全局的注入方式。
 module节点有path、action、validate、view、inject、autoToken、alias、form、defaultPage、scope等属性。path是该模块的访问路径,如/hello.ejf对应的module的path是hello;action配置的是该模块的处理类,如com.easyjf.action.HelloAction;validate属性定义该module是否需要做数据验证,值为true或false;view配置的是模板路径前缀;inject配置的是该模块的注入方式,如byType等;autoToken定义了该模块是否需要自动加入防重复提交验证,值为true或false;alias是该模块的别名,多个别名使用逗号”,”作分隔,除了通过path来访问也可以通过alias定义的名字来访问;form是该模块对应的form,该属性值对应forms中的某一个form对应;defaultPage定义了该module的默认page名,即在不指定page时使用defaultPage配置的page;scope配置模板的初始化方式,也即生命周期,可以是request、session、prototype、singleton等几个值,转认为request。
 示例:
 A、EasyJWeb内置的easywidget模块,提供一些实用功能

<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、一个OA系统中的帐户模块

<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节点配置了全局的page对象。pages节点包含多个page节点。page节点有name、type、url、contentType这几个属性。name属性定义了该page的名字,可通过这个名字来查找该page;type定义了page的类型,可以是"html“、"template"、"action"等;url属性指定了该page对应的模板文件的路径;contentType定义该模板页的contentType。
 在EasyJWeb-1.0m1版本中未实现对全局Page的支持。

forms
 forms节点包含多个form节点,每个form定义一个表单。form节点有name、Initial、notNull、Size、Type、event这几个属性。
 该元素在EasyJWeb1.0m2中未使用。
 前面1-5个部件的元素解析是通过com.easyjf.web.config. XMLConfigFactory来完成的。
 
beans
 beans节点配置了需要加载的业务组件,类似spring里边的bean。这些bean会被加载到EasyJWeb的IOC容器中,供Action或其它Bean调用。beans节点下面包含多个bean节点,每个bean节点配置一个业务组件。
 对于Bean的解析是通过com.easyjf.web.config. BeanConfigReader这个类来完成的。
 该节点中的<bean>标签用来定义一个业务组件,<bean>元素的结构如下:

<bean name=" " class=" "  [scope=" "  factory-method="" inject=""] >
<!—构造子注入—>
<constructor-arg index="" type="" [value|ref=""]>
[<value></value>|<ref></ref>|<list></list>]
</ constructor-arg >
<!—设值方法注入—>
<property name ="" [value|ref=""]>
[<value></value>|<ref></ref>|<list></list>]
</property>
</bean>

value节点或属性中的值为字符串,EasyJWeb在处理的时候会把其转换指定属性类型的值。
ref节点或属性中的值是容器中某一个业务组件的名称或id。所引用的业务组件可以在本配置文件中定义,也可以其它配置文件中定义,可以是EasyJWeb IOC容器中配置的Bean,也可以是Spring、Guice或EJB容器中定义的业务组件。
inject属性用来指定业务组件的自动注入方式,其值如下:
none:不自动注入,默认值;
bytype:按类型自动注入;
byname:按名称自动注入;
auto:自动按名称或类型自动注入。
scope属性用来指定业务组件的初始化方式及生命周期,其值如下:
singleton:整个容器中只创建一次这个Bean,这个是默认值。
prototype:每次都创建一个全新的Bean;
request:在Web应用环境下,每一次用户请求创建一次Bean;
session:在Web应用环境下,每一个用户会话创建一次Bean。
示例:
A、配置一个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节点用来定义EasyJWeb的ajax属性。EasyJWeb中内置了一个把业务组件发布成远程Javascript脚本对象的远程Web调用支持引擎,在使用到该功能的时候,可以通过EasyJWeb配置文件中的ajax节点来定制相关的属性。Ajax节点下包括一个<services>节点及多个convert节点,<services>节点中定义允许发布的业务组件,而<convert>用来指定POJO转换成Json对象时的属性。Ajax节点部分的的大致结构如下:

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

 allowName用来定义允许对暴露的所有Bean名称,denyName用来定义不允许对外暴露的所有Bean名称。Include用来定义某一个业务组件中允许对外暴露的方法名称,而exclude用来定义某一个业务组件中不允许对外暴露的方法名称。
 对于ajax节点的解析是通过com.easyjf.web.ajax. AjaxConfigManager这个类来完成的。

EasyJWeb配置文件详解同时在EasyJF的wiki发布,并且会不断更新,如果需要查看最新版本,请到:http://wiki.easyjf.com/pages/viewpage.action?pageId=7110664

posted on 2009-04-09 15:24 二月 阅读(237) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: